视频地址http://v.youku.com/v_show/id_XMzMxMzYwNTAzNg==.html?spm=a2h3j.8428770.3416059.1
本章节使用的git和node来搭建的一个环境
git,gogs
node,koa2 MongoDB
ps: 由于 koa2 已经开始使用 async/await 等新语法,所以请保证 node 环境在 7.6 版本以上。
最近要做一个摇一摇的互动小游戏,本来是想用php来做的,但是懒得配置文件了,而已laravel也比较大,想简单处理,所有就打算node简单处理
gogs 的安装这里就不怎么详细说明,具体安装可以去gogs官网查看,其他是用 uname -i
查看自己的系统信息
https://gogs.io/docs/installation/install_from_binary
现在好像要翻墙才能访问??忘记了然后下载对应的版本
然后在gogs上面建立一个项目
类似这样,然后在仓库设置里面找到web钩子
像这样填写一下地址和域名什么的都可以。
下面的话,编写 响应 Webhook 的服务器(为什么用node 因为node 配置环境快啊,当然你也可以用python java .net,php来处理)
//server.js
//还有就是要 要 yarn add exec 这个包进去,要不使用不了 console的命令
var http = require('http')
, exec = require('exec')
//设置端口 和 git路径
const PORT = 9988
, PATH = '../html'
var deployServer = http.createServer(function(request, response) {
if (request.url.search(/deploy\/?$/i) > 0) {
var commands = [
'cd ' + PATH,
'git pull'
].join(' && ')
exec(commands, function(err, out, code) {
if (err instanceof Error) {
response.writeHead(500)
response.end('Server Internal Error.')
throw err
}
process.stderr.write(err)
process.stdout.write(out)
response.writeHead(200)
response.end('Deploy Done.')
})
} else {
response.writeHead(404)
response.end('Not Found.')
}
})
deployServer.listen(PORT)
在后台运行
node server.js &
#如果要停止的话
#jobs -l
#看大一个数字
#kill number 就可以了
如果你用的http来部署线上的项目的话,首先设置一下git的用户密码。
https://www.cnblogs.com/orzlin/p/5613310.html这个博客的文章
以上的话,最简单的自动化部署就已经完成了。
下面就是利用koa2搭建一个http服务,koa2是最简答的http协议服务,其他什么的都没有,都要自己npm install koa2-XXX 包进去。
yarn init(或者npm init -用yarn只是为了打更少的单词罢了)
yarn add koa --save
现在我们的项目路径是这样的
├── app.js
├── package.json
编写 app.js
const Koa = require('koa');
const app = new Koa();
app.use(async (ctx, next) => {
await next();
ctx.response.type = 'text/html';
ctx.response.body = '<h1>Hello Work</h1>'
});
app.listen(3000, () => {
console.log('server is runding at http://loacalhost:3000');
});
安装 nodemon 并且使用 nodemon app.js
yarn add nodemon --dev && cnpm i -g nodemon
看到这样 说明你第一步已经成功了
下面的话要借助koa-router来处理路由问题
yarn add koa-router --dev
并且在根目录新建 router.js
const router = require('koa-router')();
const HomeController = require('./controller/home');
module.exports = (app) => {
router.get('/',HomeController.index);
router.get('/home',HomeController.home)
app.use(router.routes())
.use(router.allowedMethods())
}
./controller/home.js
module.exports = {
index: async (ctx, next) => {
ctx.response.body = 'index page';
},
home: async (ctx, next) => {
console.log(ctx.request.query);
console.log(ctx.request.querystring);
ctx.response.body = '<h1>HOME page</h1>';
}
};
app.js
修改
const Koa = require('koa');
const app = new Koa();
const router = require('./router')
router(app)
app.listen(3000, () => {
console.log('server is runding at http://loacalhost:3000');
});
关于 url 和 post 的参数问题 使用 koa-bodyparser 就可以了
yarn add koa-bodyparser --save
继续修改
const Koa = require('koa');
const bodyParser = require('koa-bodyparser');
const app = new Koa();
const router = require('./router');
app.use(bodyParser());
router(app);
app.listen(3000, () => {
console.log('server is runding at http://loacalhost:3000');
});
下面配置视图 使用的是 koa-views 当然啦你也可以使用koa-nunjucks-2 反正多的是。
yarn add koa-views ejs --save
添加 ./views/index.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<%= title%>
</body>
</html>
继续修改 app.js
const Koa = require('koa');
const bodyParser = require('koa-bodyparser');
const app = new Koa();
const router = require('./router');
const views = require('koa-views');
const path = require('path');
// 加载模板引擎
app.use(views(path.join(__dirname, './views'), {
extension: 'ejs'
}))
app.use(bodyParser());
router(app);
app.listen(3000, () => {
console.log('server is runding at http://loacalhost:3000');
});
修改home.js
module.exports = {
index: async (ctx, next) => {
await ctx.render('index',{
title:'google'
});
},
home: async (ctx, next) => {
console.log(ctx.request.query);
console.log(ctx.request.querystring);
ctx.response.body = '<h1>HOME page</h1>';
}
};
修改如下
处理静态资源
安装koa-static
yarn add koa-static --save
修改 app.js,增加并指定 /public 目录为静态资源目录。
const Koa = require('koa');
const bodyParser = require('koa-bodyparser');
const app = new Koa();
const router = require('./router');
const views = require('koa-views');
const path = require('path');
// 引入 koa-static
const staticFiles = require('koa-static')
// 指定 public目录为静态资源目录,用来存放 js css /koa2/images 等
app.use(staticFiles(path.resolve(__dirname, "./public")))
// 加载模板引擎
app.use(views(path.join(__dirname, './views'), {
extension: 'ejs'
}))
app.use(bodyParser());
router(app);
app.listen(3000, () => {
console.log('server is runding at http://loacalhost:3000');
});
这样就已经搭建完一个基本的框架