手记

【九月打卡】第12天 Node.js开发博客——基本概念、创建项目

课程信息

课程名称: 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
0人推荐
随时随地看视频
慕课网APP