koa2开发后台服务 - (1) 项目开发环境搭建

初始化项目

第一部分 :使用koa-generator脚手架生成项目

  • 全局安装安装koa-generator

npm install koa-generator -g

  • 使用koa2 生成一个使用ejs为服务器端模板的项目,koa2-demo

koa2 -e koa2-demo

  • 进入项目

cd koa2-demo

  • 初始化git仓库并添加gitignore

git init 初始化项目

touch .gitignore新建文件,然后添加node_modulesdist目录为忽略git跟踪的目录,其他的后续补充

  • 调整工程初始化项目结构

public目录routes目录views目录,以及app.js都移动到新增的src目录下管理源代码

修改项目中需要加载的文件

1
2
// src/bin/www
var app = require('../src/app');
  • 安装插件(持续补充)

默认的插件都是koa-generator自动生成的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
dependencies": {
"debug": "^4.1.1", // 可以理解成是高级的console
"ejs": "~2.3.3", // 服务端ssr模板
"koa": "^2.7.0", // koa
"koa-bodyparser": "^4.2.1", // 解析http的body参数(支持json,form,text类型)
"koa-convert": "^1.2.0",
"koa-json": "^2.0.2",// 美观的输出JSON response的Koa中间件
"koa-logger": "^3.2.0", // koa日志
"koa-onerror": "^4.1.0",// koa有error事件,当发生错误,可以通过error事件,对错误统一处理
"koa-router": "^7.4.0", // koa路由
"koa-static": "^5.0.0", // 用于koa的静态文件指定映射路径。
"koa-views": "^6.2.0" // 用于指定视图的渲染模板类型
},
"devDependencies": {
"cross-env": "^7.0.0", // 支持跨平台环境变量设置
"nodemon": "^1.19.1" // node monitor 支持文件变化热部署
}

安装cross-env到devDependency下,支持跨平台设置环境变量

1
npm i cross-env --save-dev

修改package.json文件 修改npm脚本,设置dev和prd的环境变量参数

1
2
"dev": "cross-env NODE_ENV = dev ./node_modules/.bin/nodemon bin/www",
"prd": "cross-env NODE_ENV = production pm2 start bin/www",
  • 运行项目npm run dev

如果项目没有报错,并且已经可以加载路由,说明配置没有问题了。

  • 初始化README.md,git本地提交修改,配置远程仓库地址,推送代码到远程仓库

git add . ;git commit -m" init project";

git remote add origin xxxxx; 设置远程仓库地址xxxxx

git remote -v 可以查看是否配置完成远程仓库和本地仓库的映射

git branch --set-upstream-to=origin/master master 设置git pull的时候仓库映射本地master对应远程master

git push origin master -u;

到这里,项目就初始化完成。

补充 (持续更新)

  • 1)git提交记录规则(可以安装插件规范git的commit格式)
1
2
3
4
5
6
7
feat: 新功能 (feature)
fix: 修补bug
docs: 补充文档
ref: 重构代码 (refactor)
chore: 一些配置的变动
style: ui,样式调整
test: 测试内容

可以通过git log --grep="feat"对日志进行过滤查找。

  • 2) 使用jsdoc

    /** 回车就可以引入jsdoc

  • 新增文件的时候,引入@description和@author,简述文件时干什么的,谁写的。

  • 对函数写清楚变量类型和参数以及变量含义,一方面方便看的人理解,再就是在引用的地方会智能提醒。
1
2
3
4
5
6
7
8
9
/**
*
* @param {string} key key
* @param {*} value value
* @param {*} timeout 过期时间 单位是s
*/
let setRedis = (key,value,timeout)=>{
// todo
}

参考链接

第一部分参看文章 - koa中间件记录

初到贵宝地,有钱的给个钱场,没钱的挤一挤给个钱场