Egg开发前的准备工作
通过查看 Egg 官网的文档,我自己把觉得重要的知识点进行了整理,为以后的知识回顾和知识点深化做一些铺垫。也希望大家看了多提意见,一起学习成长。
这篇随笔主要是记录,在 Egg 开发前,我们需要知道的知识点和做一些开发前的准备工作。
目录结构
在使用 Egg CLI 进行构建项目之前,我们先来了解一下 Egg 目录约定规范。
/* 项目结构 和 目录说明 摘自Egg官网 */
项目根目录
|-- package.json
|-- app.js (可选) // 用于自定义启动时的初始化工作
|-- agent.js (可选) // 用于自定义启动时的初始化工作
|-- app
| |-- router.js // 用于配置 URL 路由规则,所有请求存放在这里
| |-- controller // 用于解析用户的输入,处理后返回相应的结果
| |-- home.js
| |-- service (可选) // 用于编写业务逻辑层,可选,建议使用
| |-- user.js
| |-- middleware (可选) //用于编写中间件,可选
| |-- response_time.js
| |-- schedule (可选) // 用于编写编写定时任务,可选
| |-- my_task.js
| |-- public (可选) // 用于放置静态资源,可选
| |-- reset.css
| |-- view (可选) // 用于存放模板和页面资源,可选
| |-- home.tpl
| |-- model (可选) // 用于放置领域模型,可选
| |-- user.js
| |-- extend (可选) // 用于框架的扩展,可选
| |-- helper.js (可选)
| |-- request.js (可选)
| |-- response.js (可选)
| |-- context.js (可选)
| |-- application.js (可选)
| |-- agent.js (可选)
|-- config // 用于编写配置文件
| |-- plugin.js // 用于配置需要加载的插件
| |-- config.default.js
| |-- config.prod.js
| |-- config.test.js (可选)
| |-- config.local.js (可选)
| |-- config.unittest.js (可选)
|-- test // 用于单元测试文件的存放
| |-- middleware
| |-- response_time.test.js
| |-- controller
| |-- home.test.js
注意:在 router.js 中会使用 controller 目录下对应命令空间的JS,例如:
// router.js
module.exports = app => {
const { router, controller } = app;
router.get('/', controller.home.index); // 这里需要对应到controller目录下的home.js的文件,并且调用index方法
router.get('/user', controller.user.index); // 这里需要对应到controller目录下的user.js的文件,并且调用index方法
router.get('/news', controller.news.list); // 这里需要对应到controller目录下的news.js的文件,并且调用list方法
};
// controller / home.js
const Controller = require('egg').Controller;
class HomeController extends Controller {
async index() {
const { ctx } = this;
ctx.body = 'hi, egg';
}
}
module.exports = HomeController;
// conotroller / news.js
const Controller = require('egg').Controller;
class NewsController extends Controller {
async list() {
const dataList = {
list: [
{ id: 1, title: 'this is news 1', url: '/news/1' },
{ id: 2, title: 'this is news 2', url: '/news/2' }
]
};
await this.ctx.render('news/list.tpl', dataList);
}
}
module.exports = NewsController;
项目构建
在了解了 Egg 的目录约定规范后,我们可以使用 Egg CLI 进行项目的构建,就是我也建议大家去 Egg 的官网上看看快速入门的这篇文章,因为里面有一步一步搭建项目的过程,这个过程可以加深我们对Egg这个框架的了解。
接下来我们进入命令创建项目的过程中,我们主要简单几个命令就可以实现项目的构建啦,以Window为例:
> mkdir egg-example
> cd egg-example
> npm init egg --type=simple // type 的值可以参考下表进行创建对应业务的项目
> npm i
骨架类型 | 说明 |
---|---|
simple | 简单 egg 应用程序骨架 |
empty | 空的 egg 应用程序骨架 |
plugin | egg plugin 骨架 |
framework | egg framework 骨架 |
最后希望大家提出宝贵意见,我会听取大家的意见进行修改和提升,谢谢大家
网友评论