微信小程序,腾讯云node环境后台koa2开发框架(本地调试、接口、静态文件服务、文件长传服务)
2018-01-18 19:56
1161 查看
项目参考地址:https://gitee.com/hkgit/nodeServerDemo
执行npm run dev,打开微信web开发者工具或者chrome浏览器,打开调试即可看到
小程序node服务用chrome浏览器调试(Node.js 6.3+,Chrome 55+)
修改package.json代码如下:执行npm run dev,打开微信web开发者工具或者chrome浏览器,打开调试即可看到
入口app.js(app.js)
const Koa = require('koa') const app = new Koa() const path = require('path') const debug = require('debug')('koa-weapp') const response = require('./middlewares/response') const bodyParser = require('koa-bodyparser') const config = require('./config') const koastatic = require('koa-static') const convert = require('koa-convert') const staticCache = require('koa-static-cache') const compress = require('koa-compress') // const cors = require('koa2-cors') // 跨域设置 // app.use(convert(cors({ // origin: function(ctx) { // return '*' // 本地环境 // // return 'https://xxxxx.qcloud.la' // 测试环境 // // return 'https://xxxxx.xxxxx.club' // 开发环境 // }, // allowMethods: ['POST', 'GET', 'OPTIONS'] // }))) // 使用响应处理中间件 app.use(response) // 解析请求体 app.use(bodyParser()) // 中间件 设置gzip app.use(compress({ threshold: 2048, flush: require("zlib").Z_SYNC_FLUSH })) // 静态文件服务 app.use(convert(staticCache(path.join(__dirname, 'public'), { maxAge: 365 * 24 * 60 * 60, dynamic: true }))) // 引入路由分发 const router = require('./routes') app.use(router.routes()) // 启动程序,监听端口 app.listen(config.port, () => debug(`listening on port ${config.port}`))
数据库配置成本地数据库(config.js)
knex链接mysql配置(tools/mysql.js)
const configs = require('../config') module.exports = require('knex')({ client: 'mysql', connection: { host: configs.mysql.host, port: configs.mysql.port, user: configs.mysql.user, password: configs.mysql.pass, database: configs.mysql.db, charset: configs.mysql.char } })
定义post接口,实现文件上传(routes/index.js)
/** * ajax 服务路由集合 */ const router = require('koa-router')({ prefix: '/weapp' }) const controllers = require('../controllers') const multer = require('koa-multer') const path = require('path') const fs = require('fs') global.fileNum = 0 const storage = multer.diskStorage({ //文件保存路径 destination: function(req, file, cb) { const dir = path.join(__dirname, `../public/${req.body.folder}`) if (!fs.existsSync(dir)) { fs.mkdirSync(dir); } cb(null, dir) }, //修改文件名称 filename: function(req, file, cb) { const filename = `${Date.now()}${Math.ceil(Math.random() * Math.random() * 111)}.${file.originalname.split(".").pop()}` if (req.body.folder == 'musics') { req.body.source = `${req.body.folder}/${filename}` } else if (!req.body.card) { req.body[file.fieldname] = `${req.body.folder}/${filename}` } else { if (!req.body['files']) { req.body['files'] = {} } req.body['files'][req.body.fileIndex.split(',')[global.fileNum]] = filename global.fileNum++ } cb(null, filename) } }) const upload = multer({ storage: storage }) const cardFiles = [{ name: 'float_url', /* input的name值 */ maxCount: 1 }, { name: 'display_url', maxCount: 1 }, { name: 'swiper_url', maxCount: 1 }, { name: 'share_url', maxCount: 1 }] // --- 贺卡index页面数据 --- // router.post('/index_data', controllers.index_data) // --- 贺卡kind页面数据 --- // router.post('/kind_data', controllers.kind_data) // --- 贺卡card页面数据 --- // router.post('/card_data', controllers.card_data) // --- 登录接口 --- // router.post('/login', controllers.login) // --- 贺卡管理接口,多文件上传,不同的name --- // router.post('/card', upload.fields(cardFiles), controllers.card) // --- 修改密码接口 --- // router.post('/resetPass', controllers.resetPass) // --- 修改密码接口 --- // router.post('/kind', controllers.kind) // --- 修改祝福语接口 --- // router.post('/wish', controllers.wish) // --- 修改音乐接口,单文件上传,source为input的name值 --- // router.post('/music', upload.single('source'), controllers.music) // --- 修改图片接口,多个同name文件上传 --- // router.post('/image', upload.array('source', 50), controllers.image) module.exports = router
实现接口,操作数据库(controllers/index_data.js)
const DB = require('../tools/mysql') module.exports = async ctx => { ctx.body = await DB('card') .join('style', 'card.style', '=', 'style.id') .select('card.id', 'card.title', 'style.code as style', 'card.recommend', 'card.swiper', 'card.display_url', 'card.swiper_url') .where('card.show', 1) .orWhere('card.swiper', 1) .orWhere('card.recommend', 1) }
相关文章推荐
- 一键搭建微信小程序开发环境 及demo运行(腾讯云上一键搭建node.js服务器环境,PHP,Java,.NET服务类似)
- 使用linux自建证书(ios强制https 微信小程序强制https 本地开发环境)
- 本地json文件的编辑器,node-webkit开发的exe程序
- 微信小程序微信服务号开发微信公众平台开发前端开发框架
- 微信开发之本地接口调试(非80端口,无需上传服务器服务器访问)
- 微信小程序开发环境(阿里云服务搭建+可运行的demo)
- 微信开发之本地开发环境的部署;本地当服务器!实时调试;
- 夺命雷公狗---微信开发19----使用网页调试工具调试该接口进行文件的上传与下载
- 使用ngrok+express解决本地环境中微信接口调试问题
- 微信公众服务号接口接入,实现开发回复功能,而非后台设置
- 本地json文件的编辑器,node-webkit开发的exe程序
- 微信小程序本地开发环境配置-php后端
- java后台接口开发框架SpringMVC框架搭建,环境配置,Tomcate服务器搭建
- 微信小程序开发——本地调试
- 使用git和expect在本地开发环境与服务器生产环境之间同步程序文件
- 微信后台开发----本地调试
- Koa2微信公众号开发之本地开发调试环境搭建
- 第二节 Node微信本地开发环境搭建
- 微信小程序之使用本地接口开发