1、Egg.js 介绍及安装

1,006 阅读3分钟

一、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

图片.png

三、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

图片.png

学习日期:2021/12/21

视频参考 www.bilibili.com/video/BV1s3…

文档参考 jspang.com/detailed?id…

仅供个人学习和记录