课程信息
课程名称: Node.js+Express+Koa2+开发Web Server博客
课程章节: 第6章 博客项目之登录
课程讲师: 双越
课堂笔记
1、基本概念
1.技术选型概述
框架选型(koa2 vs express vs egg)
数据库选型(mysql vs mongodb)
mysql:中大型企业中应用最广泛,成本最低。
登录技术(session vs jwt)
jwt:适合比较分散型的项目。
前端页面(ejs后端模板引擎 vs vue/react前端框架)
缓存数据库(redis)
单元测试(jest)
2、创建项目
1.创建项目
安装脚手架:npm i koa-generator
创建脚手架:koa2 -e weibo-test(再npm i 安装配置文件)
相关文档:https://www.npmjs.com/package/koa-generator
2.提交至git
初始化:git init
添加远程仓库:git remote add origin https://gitee.com/cool0/koa2_weibo_test.git
拉取仓库:git pull origin master
推送仓库:
git add.
git commit -m “first commit”
git push -u origin master
常用GIT注释(github 常用注释):
refactor:代表这次提交做了重构(调整目录等),而没有增加新的功能。
feat:新增某个功能。
fix:修复BUG。
test:创建单元测试。
3.设置环境变量
安装插件:npm i cross-env -D
package.json:
“dev”: “cross-env NODE_ENV=dev ./node_modules/.bin/nodemon bin/www”,
“prd”: “cross-env NODE_ENV=production pm2 start bin/www”
3、代码结构
1.基本操作
将public/routes/views文件夹和app.js,放置在src文件夹中,这样更加直观。
修改bin/www:
var app = require(’…/src/app’);
2.文件夹目录
/bin/www:启动server的文件,在里面可以修改端口号
/public:与前端相关的静态文件
/routes/index.js:路由配置文件
/views:前端ejs的模板
3.文件说明
const Koa = require('koa')
const app = new Koa()
const views = require('koa-views')
const json = require('koa-json')
const onerror = require('koa-onerror')
const bodyparser = require('koa-bodyparser')
const logger = require('koa-logger')
const index = require('./routes/index')
const users = require('./routes/users')
// 监听错误
onerror(app)
// 注册中间件
app.use(bodyparser({
enableTypes:['json', 'form', 'text']
}))
app.use(json())
app.use(logger())
// 将/public下的文件当作静态资源来访问
app.use(require('koa-static')(__dirname + '/public'))
// 注册ejs文件,否则无法识别ejs文件,只会当作静态资源来访问
app.use(views(__dirname + '/views', {
extension: 'ejs'
}))
// logger(这里只是中间件的演示,没有实际作用)
// app.use(async (ctx, next) => {
// const start = new Date()
// await next()
// const ms = new Date() - start
// console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)
// })
// 路由处理(注册路由)
app.use(index.routes(), index.allowedMethods())
app.use(users.routes(), users.allowedMethods())
// 错误处理
app.on('error', (err, ctx) => {
console.error('server error', err, ctx)
});
module.exports = ap