青岛大学qdu的onlinejudge是js的写的前端,框架是vue.js,在nodejs上部署运行,其实整体运行还是建立在docker的容器虚拟环境里,这里暂时不需要docker。安装环境是Ubuntu14-64bit

1.安装一大堆软件

sudo apt-get update
sudo apt-get install git vim wget
sudo apt-get install redis-server
sudo apt-get install postgresql
#openssl是后边部署OJ必须
sudo apt-get install openssl libssl-dev
#这是一个完整的开发工具包,提供了gcc,libc等乱七八糟的工具和软件
sudo apt-get install build-essential

2.首先fock前端到你的github,这样以后可以自己改并且自己推送,然后Git到本地机器。我的虚拟机运行的Ubuntu14-64bit。后边的命令如果需要权限就把sudo加上,root用户就主动忽略吧。

git clone your_url(fork到你自己的github上的url)

3.因为qduoj2.0说明需要nodejs version 6.11,我已开始直接下载的源码包本地编译安装,可是装好了在后边的oj部署时候总是出错,也可能是其他版本的npm没有删干净,所以最后我用的nvm,这是nodejs的版本管理器,挺方便的。

wget -O- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash

等命令运行完安装好了,需要关闭bash,然后重启机器,nvm才会生效。

#这里不要急着运行!最后的这个.0挺有意思,因为要符合nvm的语义,不写的话就默认安装6.11.x中最新的那个
nvm install 6.11.0
#如果上边的命令安装太慢就用这个taoao的镜像安装!
NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node nvm install 6.11.0

nvm默认使用的nodejs版本是最近一次安装的版本,如果你有很多版本可以用下边的命令来选择

nvm use 6.11.0
node --version

4.都装好了,现在可以部署前端了,cd到刚才的git好的文件夹根目录,

npm install
#如果这一步过于慢就用taobao的镜像
npm config set registry https://registry.npm.taobao.org
npm install
NODE_ENV=development npm run build:dll
#这里的Your-backend不需要怀疑不需要改!直接这么写!!!
export TARGET=http://Your-backend
npm run dev

然后在浏览器输入localhost:8080就出现了前端。

5.如何更改页面呢,咱们先来看看vue.js框架的网站目录结构:

| build |

项目构建(webpack)相关代码

|

| config | 配置目录,包括端口号等。我们初学可以使用默认的。 |

| node_modules | npm 加载的项目依赖模块 |

| src |

这里是我们要开发的目录,基本上要做的事情都在这个目录里。里面包含了几个目录及文件:

  • assets: 放置一些图片,如logo等。
  • components: 目录里面放了一个组件文件,可以不用。
  • App.vue: 项目入口文件,我们也可以直接将组件写这里,而不使用 components 目录。
  • main.js: 项目的核心文件。

|

| static | 静态资源目录,如图片、字体等。 |

| index.html | 首页入口文件,你可以添加一些 meta 信息或统计代码啥的。 |

| package.json | 项目配置文件。 |

| README.md |

项目的说明文档,markdown 格式。

|

所以自定义页面基本就是在src/pages/oj/这里进行,当然src/里边的其他目录,比如styles/common.less就是css文件,还有static/css/loader.css这个是加载页面的css。

6.就先这样,之后我在补上打包成docker镜像上传部署的笔记。

搭建qduoj https://my.oschina.net/finchxu/blog/1927273

打包成docker镜像https://my.oschina.net/finchxu/blog/1930191

参考文档:

非常感谢以下前辈!

qduoj-二次开发记录:https://www.finen.top/qduoj-development-record/

vue.js框架讲解:http://www.runoob.com/vue2/vue-directory-structure.html

Ubuntu下安装使用nvm:https://www.linuxidc.com/Linux/2017-01/139024.htm

https://stackoverflow.com/questions/31829198/npm-error-failed-to-fetch-from-registry-http-registry-npmjs-org-sass

https://stackoverflow.com/questions/36467239/nvm-nodejs-org-mirror-is-deprecated-please-use-nodejs-org-mirror

https://www.npmjs.com/package/gulp-iconfont

执行sudo报错command not found:https://blog.csdn.net/n66040927/article/details/78870627

解决nvm安装错误:https://cnodejs.org/topic/55ab67fe8834fbb55261c4e0

npm使用taobao源:ttps://blog.csdn.net/aerchi/article/details/54582778

https://libraries.io/github/QingdaoU/Minos

前端组件无法渲染:https://github.com/QingdaoU/OnlineJudgeFE/issues/21

网页动态背景随鼠标变换的线条:https://www.cnblogs.com/qq597585136/p/7019755.html

https://usermanual.wiki/Document/Instructions.1857041035.pdf

再次感谢!

qduoj~前端~二次开发的更多相关文章

  1. qduoj前端二次开发简略流程

    为缩减篇幅,已略去nodejs.git等软件安装操作,若有疑问请搜索相关教程. 为区分win和ubuntu的命令,作如下约定: $ cd //以$标记win下命令 # cd //以#标记linux命令 ...

  2. OnlineJudgeFE之前端二次开发

    之前我们在这篇文章青岛大学开源OJ平台搭建 讲了关于它的安装和部署. 今天我们讨论如何对其进行二次开发.首先谈谈前端的二次开发. 如果想要对青岛大学的OJ项目进行二次开发,目前我觉得要满足这么几个要求 ...

  3. [github项目]基于百度地图二次开发实现的车辆监管(包含车辆定位、车辆图片和方向控制,电子围栏,图形绘制等功能)前端实现(不包含后端实现)

    前言:基于百度地图javascript版本开发,百度地图中所用的key已承诺仅用于测试,不用于商业用途 注:本文所有代码可以到github上进行下载,github地址:http://map.eguid ...

  4. Nopcommerce 二次开发0

    Nopcommerce  是国外的一个高质量的开源b2c网站系统,基于EntityFramework6.0和MVC5.0,使用Razor模板引擎,有很强的插件机制,包括支付配送功能都是通过插件来实现的 ...

  5. 蓝凌OA二次开发手册

    1.蓝凌OA表单前端调用后台数据 一.后台存储过程: create procedure sp_test @ftext nvarchar(50) as begin select @ftext as '测 ...

  6. Silverlight开源框架SL提供便捷的二次开发银光框架

    Silverlight开发框架SilverFrame欢迎咨询 基于Silverlight4.0开发,兼容Silverlight 5.0,SQLServer2005数据库.WCF: 本框架有清爽的前端界 ...

  7. shopnc二次开发(二)

    一般来说二次开发,多数就是修改界面和增加功能这两个需求 先说修改界面 mvc 架构的程序,在界面这里,基本就是调用数据. 常见的界面数据构架有三种 1.是业务端或者是控制端数据驱动界面,基本上是后台输 ...

  8. EcTouch二次开发

    一.EcTouch简介 1.1. 什么是ECTOUCH ECTouch是上海商创网络科技有限公司推出的一款开源免费移动商城网店系统,可以在手机上面卖商品的电子商务软件系统.能够帮助企业和个人快速构建手 ...

  9. 搭建rtmp直播流服务之4:videojs和ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)

    前面几章讲解了使用 nginx-rtmp搭建直播流媒体服务器; ffmpeg推流到nginx-rtmp服务器; java通过命令行调用ffmpeg实现推流服务; 从数据源获取,到使用ffmpeg推流, ...

随机推荐

  1. POJ 3657 并查集

    题意: 思路: 1.二分+线段树(但是会TLE 本地测没有任何问题,但是POJ上就是会挂--) 2.二分+并查集 我搞了一下午+一晚上才搞出来----..(多半时间是在查错) 首先 如果我们想知道这头 ...

  2. 《鸟哥的Linux私房菜》笔记——02. 关于Linux

    Unix 历史 1969年以前:伟大的梦想--Bell, MIT 与 GE 的「Multics」系统 1969年:Ken Thompson 的小型 file server system 1973年:U ...

  3. select选中值,传this

    <select onChange = "a(this)"></select> function a(obj){ $(obj).find("opti ...

  4. LayUI加载js无效问题

    在部署系统的时候,本地调试一切正常,layer.js均能正常加载.然而部署到服务器之后,经常性的出现layer.js无法加载问题.导致页面弹框无法使用. 一开始以为是Google浏览器问题,因为刚刚更 ...

  5. 使用systemctl自定义系统服务

    1.创建系统服务文件,格式如下: [Unit] Description=httpd After=network.target [Service] Type=forking ExecStart=/usr ...

  6. ERROR in xxxx.js from UglifyJS——配置版本混杂版

    常规解决套路可以参考这篇:https://segmentfault.com/a/11... 我采用了上面的做法,依然没法解决.我采用的是vue-cli脚手架自动生成的项目结构: vue-cli版本 2 ...

  7. C++容器(二):关联容器简介

    关联容器(associative container)与顺序容器的本质区别在于:关联容器通过键(Key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素.虽然,关联容器的大部分行为 ...

  8. Eclipse集成Git插件及使用

    目录(?)[+] 1 Git插件安装 11 下载插件 2 Git提交代码 21 建git的本地仓库 第一种 第二种 项目创建本地仓库后 如图 22 提交本地仓库 23 提交远程仓库 3 Git下载代码 ...

  9. Qt之QCryptographicHash

    简述 QCryptographicHash类提供了生成密码散列的方法.该类可以用于生成二进制或文本数据的加密散列值.目前支持MD4.MD5.SHA-1.SHA-224.SHA-256.SHA-384和 ...

  10. HttpClient 图讲解明

    大家刚看这个名字一定会想问这是什么东东,在这我特意百度百科了下 HTTP 协议可能是如今 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序须要直接通过 HTTP 协议来訪 ...