OnlineJudgeFE之前端二次开发
之前我们在这篇文章青岛大学开源OJ平台搭建
讲了关于它的安装和部署。
今天我们讨论如何对其进行二次开发。首先谈谈前端的二次开发。
如果想要对青岛大学的OJ项目进行二次开发,目前我觉得要满足这么几个要求?
第一、前端使用的是Vue.js,你需要对Vue.js毕竟熟悉;
第二、nodejs和webpack你最好也要熟悉,因为部署环境需要和打包的时候也需要;
Vue.js和Node.js教程你可以参考如下网址:
Vue.js:https://cn.vuejs.org/
Node.js:https://nodejs.org/en/
OnlineJudgeFE地址为:https://github.com/QingdaoU/OnlineJudgeFE
当然了,还可以去w3cschool或者菜鸟教程。
虽然说进入OlineJudgeFE地址,有对应的教程教你,但是也有潜在的坑,其实主要的坑还是在node.js上。大家按照我这个就可以避免这个坑。
一、部署环境准备
node.js环境安装和配置,我的服务器操作系统是Ubuntu16.04,ubuntu安装软件很简单,通常sudo apt-get install 安装包名称 即可达到安装的目的。但是node.js默认通过这种安装版本会不符合官方文档上面要求的那样。所以建议最好还是不要通过这种形式安装。
node.js下载地址:https://nodejs.org/dist/
可以选择对应的版本,最好是高于8.12.0或者等于8.12.0。
我是通过源码(已经编译好了)安装,步骤如下:
wget https://nodejs.org/dist/v8.9.3/node-v8.9.3-linux-x64.tar.xz
tar -xvf node-v8.9.3-linux-x64.tar.xz
sudo mv node-v8.9.3-linux-x64 /usr/local
sudo ln -s /usr/local/node-v8.9.3-linux-x64/bin/node /usr/local/bin/node
sudo ln -s /usr/local/node-v8.9.3-linux-x64/bin/npm /usr/local/bin/npm
二、部署
步骤如下:
git clone https://github.com/QingdaoU/OnlineJudgeFE.git cd OnlineJudgeFE npm install NODE_ENV=development npm run build:dll export TARGET=https://qduoj.com/
#target指的是后台代理服务器地址,通常为judgeserver npm run dev
最终控制台输出的结果如下图所示(成功):

通常失败的话,一般都是npm install或者NODE_ENV=development npm run build:dll,原因就是因为node.js的版本及其npm问题。按照我上述的nodejs安装教程,就可以避免这种情况的出现。
另外注意,如果改动了前端代码重新部署,不是直接进入OnlineJudgeFE目录直接执行npm run dev就可以的。
需要依次输入如此命令来完成部署,一步都不能省略:
NODE_ENV=development npm run build:dll export TARGET=https://qduoj.com/ npm run dev
如果不按照上面的流程就直接执行npm run dev会出现如下错误:

对了,如果你觉得英文阅读有难度体验不好可以进入到对应的目录修改一个文件即可。
主要cd 到OnlineJudgeFE/src/i18n目录
修改index.js文件即可,index.js文件内容,如图:

最终展示的效果是这样的,如图所示:


OnlineJudgeFE之前端二次开发的更多相关文章
- qduoj~前端~二次开发
青岛大学qdu的onlinejudge是js的写的前端,框架是vue.js,在nodejs上部署运行,其实整体运行还是建立在docker的容器虚拟环境里,这里暂时不需要docker.安装环境是Ubun ...
- qduoj前端二次开发简略流程
为缩减篇幅,已略去nodejs.git等软件安装操作,若有疑问请搜索相关教程. 为区分win和ubuntu的命令,作如下约定: $ cd //以$标记win下命令 # cd //以#标记linux命令 ...
- [github项目]基于百度地图二次开发实现的车辆监管(包含车辆定位、车辆图片和方向控制,电子围栏,图形绘制等功能)前端实现(不包含后端实现)
前言:基于百度地图javascript版本开发,百度地图中所用的key已承诺仅用于测试,不用于商业用途 注:本文所有代码可以到github上进行下载,github地址:http://map.eguid ...
- Nopcommerce 二次开发0
Nopcommerce 是国外的一个高质量的开源b2c网站系统,基于EntityFramework6.0和MVC5.0,使用Razor模板引擎,有很强的插件机制,包括支付配送功能都是通过插件来实现的 ...
- 蓝凌OA二次开发手册
1.蓝凌OA表单前端调用后台数据 一.后台存储过程: create procedure sp_test @ftext nvarchar(50) as begin select @ftext as '测 ...
- Silverlight开源框架SL提供便捷的二次开发银光框架
Silverlight开发框架SilverFrame欢迎咨询 基于Silverlight4.0开发,兼容Silverlight 5.0,SQLServer2005数据库.WCF: 本框架有清爽的前端界 ...
- shopnc二次开发(二)
一般来说二次开发,多数就是修改界面和增加功能这两个需求 先说修改界面 mvc 架构的程序,在界面这里,基本就是调用数据. 常见的界面数据构架有三种 1.是业务端或者是控制端数据驱动界面,基本上是后台输 ...
- EcTouch二次开发
一.EcTouch简介 1.1. 什么是ECTOUCH ECTouch是上海商创网络科技有限公司推出的一款开源免费移动商城网店系统,可以在手机上面卖商品的电子商务软件系统.能够帮助企业和个人快速构建手 ...
- 搭建rtmp直播流服务之4:videojs和ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)
前面几章讲解了使用 nginx-rtmp搭建直播流媒体服务器; ffmpeg推流到nginx-rtmp服务器; java通过命令行调用ffmpeg实现推流服务; 从数据源获取,到使用ffmpeg推流, ...
随机推荐
- T-SQL :TOP和OFFSET-FETCH筛选 (五)
通过were和having条件可以对数据进行筛选,那么如何通过排序对数据进行筛选呢? 1.TOP筛选 用于限制查询返回行数或者行数的百分比. 例如 我们对订单表筛选最近产生的订单5条 ) orderi ...
- The Most Simple Introduction to Hypothesis Testing
https://www.youtube.com/watch?v=UApFKiK4Hi8
- Git实战手册(二): 标签应用和版本管理
教程所示图片使用的是 github 仓库图片,墙内朋友请移步原文地址 有空就来看看个人技术小站, 我一直都在 0. 背景介绍 当一个代码仓库进过长时间的迭代,针对不同的时期和需求,必定会有不同的版本. ...
- 通过Eureka自带REST API强行剔除失效服务
1.确定需要强行剔除的服务 2.执行接口 方便复制: http://{ip}:{port}/eureka/apps/CONFIG-SERVER-TEST/tom:config-server-test: ...
- 【工具相关】Web-Sublime Text2新建立文件夹(二)
紧接着上文. 一,打开Sublime Text2. 二,在桌面上新建立一个文件夹,html5. 三,打开html5如图所示.里面有我们刚刚建立好的文件. 四,把html5文件夹拖动到sublime2中 ...
- typedef struct LNode命名结构指针(线性表的链式存储)
一.typedef 关键字 1. 简介: typedef工具是一个高级数据特性,利用typedef可以为某一些类型自定义名称. 2. 工作原理: 例如我们定义链表的存储结构时,需要定义结点的存储数据元 ...
- 【BI学习笔记】适合集成到项目里的BI:Wyn Enterprise
近日,我收到葡萄城的邮件,讲葡萄城开始进军BI领域,发布了一套BI和报表工具,叫Wyn Enterprise. 之前了解过PowerBI等面向终端用户的BI工具,我发现BI工具与Wyn Enterpr ...
- Android studio 在一个项目上添加另一个项目,引用其内部参数
Setting.gradle 里面 添加 include ':app',‘imagePicker’ 其中 imagePicker 为要引入的项目名 build.gradle(Module: app) ...
- Android View体系(五)从源码解析View的事件分发机制
1.处理点击事件的方法 View的层级 我们知道View的结构是树形的结构,View可以放在ViewGroup中,这个ViewGroup也可以放到另一个ViewGroup中,这样层层的嵌套就组成了Vi ...
- 【详细】【转】C#中理解委托和事件
文章是很基础,但很实用,看了这篇文章,让我一下回到了2016年刚刚学委托的时候,故转之! 1.委托 委托类似于C++中的函数指针(一个指向内存位置的指针).委托是C#中类型安全的,可以订阅一个或多个具 ...