赵可爱的egg分享

一、Egg.js 是什么?

由阿里巴巴团队开源的一套基于koa的应用框架,已经在集团内部服务了大量的nodejs系统。

Egg.js 为企业级框架和应用而生,我们希望由 Egg.js 孕育出更多上层框架,帮助开发团队和开发人员降低开发和维护成本。

1.设计原则

Egg 的插件机制有很高的可扩展性,一个插件只做一件事

(比如Nunjucks模板封装成了egg-view-nunjucks、MySQL 数据库封装成了egg-mysql)。Egg 通过框架聚合这些插件,并根据自己的业务场景定制配置,这样应用的开发成本就变得很低。

Egg 奉行『约定优于配置』,按照一套统一的约定进行应用开发,团队内部采用这种方式可以减少开发人员的学习成本,开发人员不再是『钉子』,可以流动起来。

2.与express区别

Express 是 Node.js 社区广泛使用的框架,简单且扩展性强,非常适合做个人项目。但框架本身缺少约定,标准的 MVC 模型会有各种千奇百怪的写法。Egg 按照约定进行开发,奉行『约定优于配置』,团队协作成本低。

基于koa,不同于koa以middleware为主要生态,egg根据不同的业务需求和场景,加入了plugin,extends等这些功能,可以让开发者摆脱在使用middleware功能时无法控制使用顺序的被动状态,而且还可以增加一些请求无关的一些功能。

3.架构

app/router.js:用于配置 URL 路由规则

app/controller/**:用于解析用户的输入,处理后返回相应的结果

app/service/**:用于编写业务逻辑层,可选

app/middleware/**:用于编写中间件,可选

app/public/**:用于放置静态资源,可选

app/extend/**:用于框架的扩展,可选

config/config.{env}.js:用于编写配置文件

config/plugin.js:用于配置需要加载的插件

test/**:用于单元测试

二、快速入门

1.快速初始化

我们推荐直接使用脚手架,只需几条简单指令,即可快速生成项目(npm >=6.1.0):

$ npm init egg --type=simple

$ npm i

启动项目:

$ npm run dev

$ open http://localhost:7001

2.编写 Controller

如果你熟悉 Web 开发或 MVC,肯定猜到我们第一步需要编写的是 Controller 和 Router。

通过 Controller 和 Router 来实现路由的跳转和页面的显示

配置路由映射:

3.静态资源

Egg 内置了 static 插件,线上环境建议部署到 CDN,无需该插件。

static 插件默认映射 /public/* -> app/public/* 目录

此处,我们把静态资源都放到 app/public 目录即可

4.模板渲染

绝大多数情况,我们都需要读取数据后渲染模板,然后呈现给用户。故我们需要引入对应的模板引擎。框架并不强制你使用某种模板引擎,开发者可以引入不同的插件来实现差异化定制。

例如使用 Nunjucks 来渲染,需要先安装对应插件

开启插件

为列表页编写模板文件,一般放置在 app/view 目录下

添加相应的 Controller 和 Router

5.编写 service

在实际应用中,Controller 一般不会自己产出数据,也不会包含复杂的逻辑,复杂的过程应抽象为业务逻辑层 Service。添加一个 Service 抓取数据 ,如下:

然后稍微修改下之前的 Controller:

6.编写扩展

扩展内编写一些常用的函数,用于加快开发。

这里,使用 View 插件支持的 Helper 来实现:

7.编写 Middleware

8.单元测试

单元测试非常重要,框架也提供了 egg-bin 来帮开发者无痛的编写测试。

测试文件应该放在项目根目录下的 test 目录下,并以 test.js 为后缀名,即 {app_root}/test/**/*.test.js。

然后配置依赖和 npm scripts:

"scripts": {"test":"egg-bin test", }

$ npm i egg-mock --save-dev

执行测试:

$ npm test

你可能感兴趣的:(赵可爱的egg分享)