美文网首页
从零搭建一个 node 微信开发环境

从零搭建一个 node 微信开发环境

作者: 茶艺瑶 | 来源:发表于2018-01-12 23:20 被阅读120次

    视频地址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上面建立一个项目

    图片.png

    类似这样,然后在仓库设置里面找到web钩子


    图片.png

    像这样填写一下地址和域名什么的都可以。

    下面的话,编写 响应 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
    
    图片.png

    看到这样 说明你第一步已经成功了

    下面的话要借助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>';
        }
    };
    

    修改如下


    图片.png

    处理静态资源
    安装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');
    });
    

    这样就已经搭建完一个基本的框架

    相关文章

      网友评论

          本文标题:从零搭建一个 node 微信开发环境

          本文链接:https://www.haomeiwen.com/subject/eulqoxtx.html