目录
下载项目模版功能实现流程分析+egg.js简介
egg.js
官网
初始化
云 mongodb
云 mongodb 开通
本地 mongodb 安装
mongodb 使用方法
通过 egg.js 框架添加新的API
云 mongodb 开通 + 本地 mongodb 调试技巧讲解
egg.js 接入 mongodb 方法
云 mongodb 如何连接公网
下载项目模版功能实现流程分析+egg.js简介
// commands/init/lib/index.js 中前提代码
async exec() {
try {
// 1. 准备阶段
const projectInfo = await this.prepare();
if (projectInfo) {
// 2. 下载模板
log.verbose('projectInfo', projectInfo);
await this.downloadTemplate();
// 3. 安装模板
}
} catch (e) {
log.error(e.message);
}
}
downloadTemplate() {
// 1. 通过项目模版API获取项目模版信息
// 1.1 通过 egg.js 搭建一套后端系统
// 1.2 通过 npm 存储项目模版
// 1.3 将项目模版信息存储到 mongodb 数据库中
// 1.4 通过 egg.js 获取 mongodb 中的数据并且通过 API 返回
}
egg.js
官网
官网地址: https://eggjs.org/zh-cn/
初始化
初始化和项目启动方法:
# 初始化
mkdir egg-example && cd egg-example
npm init egg --type=simple
npm i
# 项目启动
npm run dev
open http://localhost:7001
大家可以试试:npm init imooc-cli 有惊喜
思考:为什么 npm init egg 可以初始化 egg 项目?
答案:npm init 默认情况下会把当前目录(执行命令的目录)作为一个 npm 项目去初始化。但是在 npm init 后面加上一个命令的话,如 imooc-cli,就会去执行 imooc-cli 命令。会去调用 create-imooc-cli 包、create-egg 包。
云 mongodb
云 mongodb 开通
地址:https://mongodb.console.aliyun.com/,创建实例并付款即可
本地 mongodb 安装
地址:https://www.runoob.com/mongodb/mongodb-tutorial.html
mongodb 使用方法
地址:https://www.runoob.com/mongodb/mongodb-databases-documents-collections.html
通过 egg.js 框架添加新的API
1. 在 controller 下面创建一个新的 js 文件,project.js 。
2. router.js 当中修改配置。
'use strict';
/**
* @param {Egg.Application} app - egg application
*/
module.exports = app => {
const { router, controller } = app;
router.get('/', controller.home.index);
router.get('/project', controller.project.index);
router.get('/project/template', controller.project.getTemplate);
};
3. project.js 文件中加入内容
'use strict';
const Controller = require('egg').Controller;
class ProjectController extends Controller {
index() {
const { ctx } = this;
ctx.body = 'your project';
}
// 获取项目/组件的代码模板
getTemplate() {
const { ctx } = this;
ctx.body = 'get template';
}
}
module.exports = ProjectController;
4. 访问 127.0.0.1:7001/project,会在页面中显示 'your project'。
5. 项目未上线,域名怎样指向 127.0.0.1 呢?
方式一:改动 hosts 文件,sudo vim /etc/hosts
方式二:下载 SwitchHosts 软件,更为推荐
云 mongodb 开通 + 本地 mongodb 调试技巧讲解
启动:
# 先创建/Users/sam/data/db
mongod --dbpath=/Users/sam/data/db
更多使用细节请看菜鸟教程文档
egg.js 接入 mongodb 方法
1. imooc-cli-dev-server/app 目录下新建 utils/mongo.js
2. 可以使用 mongodb 提供的默认库,为了加快进度可以使用下面的
npm install -S @pick-star/cli-mongodb
3. imooc-cli-dev-server/config 目录下新建 db.js
'use strict';
/** MONGODB **/
const mongodbUrl = 'mongodb://sam:123456@localhost:27017/imooc-cli';
const mongodbDbName = 'imooc-cli';
module.exports = {
mongodbUrl,
mongodbDbName,
};
4. utils/mongo.js 文件内容
'use strict';
const Mongodb = require('@pick-star/cli-mongodb');
const { mongodbUrl, mongodbDbName } = require('../../config/db');
function mongo() {
return new Mongodb(mongodbUrl, mongodbDbName);
}
module.exports = mongo;
5. app/controller/project.js 接入 mongodb
'use strict';
const Controller = require('egg').Controller;
const mongo = require('../utils/mongo');
class ProjectController extends Controller {
// 获取项目/组件的代码模板
async getTemplate() {
const { ctx } = this;
const data = await mongo().query('project');
ctx.body = data;
}
}
module.exports = ProjectController;
云 mongodb 如何连接公网
云 mongodb 刚开通下来是没有公网地址的,在mongodb实例 数据库连接 中去'释放公网地址'。
ConnectionStringURI使用说明:
***** 替换为自己的密码,删掉 admin?......