栏目 Node.js

跟着珠峰学 egg.js 写一个博客

从 0 开始搭建 egg.js #

npm init -y
yarn add egg
yarn add egg-bin -D
code .

约定优于配置,一套统一的约定。 插件机制,一个插件只做一件事,方便自定义

基于koa,容易扩展。 app/extend/context.js 来扩展能力。

比如

// app/extend.context.js
module.exports = {
  get isIOS() {
    const iosReg = /iphone|ipad|ipod/i
    return iosReg.test(this.get('user-ageent'))
  }
}

定义好扩展能力,就能再 ctx.isIOS 随时使用。

使用脚手架 #

npm init egg --type=simple
npm i
npm run dev

博客接口文档 #

  • 登陆
    • post /api/users/signup 注册
    • post /api/users/siginin 登陆
    • post /api/users/signout 退出
  • 分类列表
    • get /api/categories 列表
    • post /api/categories 增加
    • put /api/categories/:id 编辑
    • delete /api/categories/:id 删除
  • 文章列表
    • get /api/articles 列表
    • post /api/articles 增加
    • put /api/articles/:id 编辑
    • delete /api/articles/:id 删除
    • get /api/article/pv/:id 增加pv
    • post /api/articles/:id 增加评论

1577607215942

安装 Mongoose 插件

yarn add egg-mongoose
// /config/plugin.js
exports.mongoose = {
    enable: true,
    package: 'egg-mongoose'
}

/config/config.default.js

config.mongo = {
	client: {
		host:"127.0.0.1",
		port:"27017",
		name:"test",
		user:"",
		password:"",
		options:{},
	}
}

app/model/user.js

'use strict';
module.exports = app => {
  const mongoose = app.mongoose;
  const Schema = mongoose.Schema;
  // const ObjectId = Schema.Types.ObjectId;
  const UserSchema = new Schema({
    username: {
      type: String,
      required: true,
    },
    password: {
      type: String,
      required: true,
    },
    email: String,
  });

  return mongoose.model('User', UserSchema);
};