美文网首页
2019-07-17

2019-07-17

作者: 林中白虎 | 来源:发表于2019-07-17 11:12 被阅读0次

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 骨架

最后希望大家提出宝贵意见,我会听取大家的意见进行修改和提升,谢谢大家

相关文章

网友评论

      本文标题:2019-07-17

      本文链接:https://www.haomeiwen.com/subject/btiflctx.html