首页 > 微信 > 详细

小程序开发使用Nodejs koa2方法

时间:2020-08-25 22:05:22      阅读:200      评论:0      收藏:0      [点我收藏+]

由于前端工程基于NodeJS,因此选择NodeJ进行前端和后端单独部署是合理的 。 实际上,如果只需要实现静态资源和代理,nginx是最佳选择。 NodeJS用于将来在服务器上进一步实现自动构建或服务器端渲染。

一、目前只有小程序开发的目录结构

技术分享图片

 

二、创建一个简单NodeJS后端服务器

在根目录下执行

npm init -y

npm init 用来初始化生成一个新的 package.json 文件。它会向用户提问一系列问题,如果你觉得不用修改默认配置,一路回车就可以了。
如果使用了 -f(代表force)、-y(代表yes),则跳过提问阶段,直接生成一个新的 package.json 文

技术分享图片

接下来执行

npm i koa koa-static http-proxy-middleware async koa-router koa-bodyparser koa-json mysql -s

第一个koa是基于NodeJS的服务器框架,

第二个koa-static是基于Koa的插件,我们需要用它建立静态资源服务器,

第三个http-proxy-middleware是用于做代理的插件。

有了这三个东西,我们就可以搭建出最简单的前端服务器了。

第四个async是用于异步操作

第五个koa-router是路由控制器,实现路由中间件

第六个koa-bodyparser是post提交数据中间件

第七个koa-json是get提交数据的中间件

第八个mysql是数据库中间件

-s 使用 --save 安装的插件,责被写入到 dependencies 对象里面去,dependencies  是需要发布到生产环境的

技术分享图片

 

三、配置

项目根目录下会多出一个package.json,一个package-lock.json,一个node_modules,我们不用管这三个,而是在根目录下建立一个api文件夹,作为后端服务接口。

1、在api文件夹下新建一个app.js和mysql.js.

app.js内容如下

const Koa = require(‘koa‘);
const koaJson = require(‘koa-json‘);
const bodyParser = require(‘koa-bodyparser‘);
const path = require(‘path‘);
const http = require(‘http‘);
const fs = require(‘fs‘);
const async = require(‘async‘);
const query = require(‘./mysql.js‘);

const app = new Koa();

app.use(bodyParser());
app.use(koaJson());

app.use(async (ctx, next) => {
  ctx.execSql = query;
  await next();
});

// routes
fs.readdirSync(path.join(__dirname, ‘routes‘)).forEach(function (file) {
  if (~file.indexOf(‘.js‘)) app.use(require(path.join(__dirname, ‘routes‘, file)).routes());
});

app.use(function (ctx, next) {
  ctx.redirect(‘/404.html‘);
});

app.on(‘error‘, (error, ctx) => {
  console.log(‘something error ‘ + JSON.stringify(ctx.onerror))
  ctx.redirect(‘/500.html‘);
});

http.createServer(app.callback())
  .listen(8090)
  .on(‘listening‘, function () {
    console.log(‘server listening on: ‘ + 8090)
  });

 

mysql.js内容如下

const mysql = require(‘mysql‘);

const pool = mysql.createPool({
    host: ‘127.0.0.1‘,
    user: ‘root‘,
    password: ‘123456‘,
    database: ‘wx_contacts‘,
    connectionLimit: 10
})

let query = function (sql, values) {
    return new Promise((resolve, reject) => {
        pool.getConnection(function (err, connection) {
            if (err) {
                return reject(err);
            } else {
                connection.query(sql, values, (err, rows) => {
                    connection.release();
                    if (err) {
                        return reject(err)
                    } else {
                        return resolve(rows);
                    }
                })
            }
        })
    })
}

module.exports = query;

 

2、在api文件夹下新建一个routes文件夹,文件夹下建立index.js

存放路由配置,index.js内容如下

const router =  require(‘koa-router‘)();
const contact = require(‘../contact/index.js‘);


router.use(‘/contact‘, contact.routes(), contact.allowedMethods());

module.exports = router;

 

3、在api文件夹下新建一个contact文件夹,文件夹下建立index.js和contoller.js

index.js内容如下

const router = require(‘koa-router‘)();
const controller = require(‘./controller.js‘);

router.post(‘/login‘, controller.Login);

module.exports = router;

 

contoller.js内容如下

主要是接口调用的

/*
 * 登录
 */
exports.Login = async(ctx) => {
    let phone = ctx.request.body.phone || ‘‘;
    let psd = ctx.request.body.password || ‘‘;
    if (!phone || !psd) {
        ctx.body = {
            success: false,
            message: ‘手机号码或密码不能为空‘
        };
        return false;
    }
    try {
        let result = await ctx.execSql(`select * from contact_user where phone = ? and password = ?`, [phone, psd]);
        if (result.length > 0) {
            ctx.body = {
                success: true,
                userID: result[0].id,
                message: ‘‘
            };
        } else {
            ctx.body = {
                success: false,
                userID: 0,
                message: ‘账号或密码错误‘
            };
        }
    } catch (err) {
        ctx.body = {
            success: false,
            userID: 0,
            message: err
        };
    }
}

 

四、运行

运行

node api/app.js

技术分享图片

运行起来!端口是8090

小程序前端的项目结构

技术分享图片

小程序开发使用Nodejs koa2方法

原文:https://www.cnblogs.com/chuway/p/13562101.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!