一、Egg.js简介
Egg.js为企业级框架和应用而生的Node.js框架,Egg(简写)奉行【约定优于配置】的框架,按照一套统一的约定进行应用开发,适合团队开发,学习成本小,维护成本低。Egg.js的语法仍然是JavaScript,对于一个前端开发者,最快速成为全栈开发者的途径,最优选择就是学习Egg.js框架了。
Egg.js的特点
- 提供基于Egg定制上层框架的能力
- 高度可扩展的插件机制
- 内置多进程管理(Node是单进程,无法使用多核CPU的能力)
- 基于Koa开发,性能优异
- 框架稳定,测试覆盖率高
- 渐进式开发,逐步模块化模式
Egg.js官网: eggjs.org/zh-cn/intro…
二、Egg.js安装
1、安装命令创建项目
npm create egg --type=simple
2、创建完成后,需要安装相关的项目依赖
npm install
3、安装完成后,开启项目,访问http://127.0.0.1:7001
npm run dev
三、Egg项目目录结构
注:版本不同和使用的类型不同,目录结果也会有所不同。
- app - 项目开发的主目录,工作中的代码几乎都写在这里面
-- controller -- 控制器目录,所有的控制器都写在这个里面
-- router.js -- 项目的路由文件
- config - 项目配置目录,比如插件相关的配置
-- config.default.js -- 系统默认配置文件
-- plugin.js -- 插件配置文件
- logs -- 项目启动后的日志文件夹
- node_modules - 项目的运行/开发依赖包,都会放到这个文件夹下面
- test - 项目测试/单元测试时使用的目录
- run - 项目启动后生成的临时文件,用于保证项目正确运行
- typings - TypeScript配置目录,说明项目可以使用TS开发
- .eslintignore - ESLint配置文件
- .eslintrc - ESLint配置文件,语法规则的详细配置文件
- .gitignore - git相关配置文件,比如那些文件归于Git管理,那些不需要
- jsconfig.js - js配置文件,可以对所在目录下的所有JS代码个性化支持
- package.json - 项目管理文件,包含包管理文件和命令管理文件
- README.MD - 项目描述文件
打开package.json文件的scripts属性中,有下面这样一段代码。
"scripts": {
"start": "egg-scripts start --daemon --title=egg-server-egg",
"stop": "egg-scripts stop --title=egg-server-egg",
"dev": "egg-bin dev",
"debug": "egg-bin debug",
"test": "npm run lint -- --fix && npm run test-local",
"test-local": "egg-bin test",
"cov": "egg-bin cov",
"lint": "eslint .",
"ci": "npm run lint && npm run cov",
"autod": "autod"
},
其中有 start 和dev,这两个是有区别的
- dev : 开发环境中使用,不用重启服务器,只要刷新。修改内容就会更改。
- start:生产环境中使用,也就是开发完成,正式运营之后。以服务的方式运行。修改后要停止和重启后才会发生改变。
四、简单使用egg做一个页面
注:Egg.js全部使用异步模式async
/app/controller/home.js文件下
'use strict';
const Controller = require('egg').Controller;
class HomeController extends Controller {
async index() {
const { ctx } = this;
ctx.body = '首页';
}
async test() {
const { ctx } = this;
ctx.body = 'test界面';
}
}
module.exports = HomeController;
尝试去浏览器输入http://127.0.0.1:7001/test这时并不能给你返回正确的结果。因为写完页面以后,还需要去配置路由router.js
/app/router.js文件添加路由配置
router.get('/test', controller.home.test);
浏览器访问http://127.0.0.1:7001/test
学习日期:2021/12/21
视频参考: www.bilibili.com/video/BV1s3…
文档参考: jspang.com/detailed?id…
仅供个人学习和记录