Egg.js体验

  • 全局安装
// 创建项目
$ npm i egg-init -g
$ egg-init egg-example --type=simple
$ cd egg-example
$ npm i// 启动项目
$ npm run dev
$ open localhost:7000




Egg.js的结构

  • 路由(Router): 将请求URL和具体承担执行动作的Controller的关系对应
  • 控制器(Controller):
    • Restful: 接收用户的参数,从数据中查找内容返回给用户
    • 页面请求: 根据用户访问不同的URL,渲染不同的模板得到HTML返回给用户
    • 代理服务器: 将用户的请求转发到其他服务器上.
  • 服务(Service):
    • Service就是将复杂业务场景下用于做业务封装的一个抽象层
    • 好处:
      • 保持Controller简洁
      • 业务逻辑独立性: 用户业务PCController + MobileController
      • 逻辑和展现分离:
        • 容易编写测试用例
        • 无容器依赖对象 (body header)
  • 数据库:
    • mongoose
    • sequelize

基本使用

  • 使用egg-init生成的结构如下
  • 自己添加一个Service层
  • 打开egg-example/app/router.js, 有如下代码:
module.exports = app => {const { router, controller } = app;router.get('/', controller.home.index);
}
  • 在这一层,将路由请求/ 和处理函数 controller.home.index对应起来
  • controller.home.index其实是对应Controller层.
  • 找到Controller(文件夹)下面的文件home.js,打开如下:
  • 说明:
    1. 使用 const Controller = require('egg').Controller得到egg框架中的Controller基类
    2. 自定义类继承与Controller基类 class HomeController extends Controller
    3. 在里面声明了一个异步方法 async index(){...}
    4. 将自定义的类导出,module.exports = HomeController
  • 这里的index 对应路由层(Router)中的 controller.home.index

类似的加一个Service层

  • 假设是User的服务处
  1. 首先获得Service的基类 const Service = require('egg').Service
  2. 自定义子类继承基类const UserService extends Service{...}
  3. 在里面写一个方法,用于获取所有用户
async getAll(){return [{name:'marron',age:18}]
}
  1. 导出自己定义的类
  • 目录结构自己新建,代码保存于’/egg-example/app/service/user.js’
const Service = require('egg').Service;class UserService extends Service{async getAll() {return [{ name:'marron', age: 18 }]}
}

在Controller层中使用Service层的服务

  • 1.首先从this中获取上下文 const {ctx} = this
  • 2.Service层中(继承基类Service)的方法全部挂载在ctx.service上
  • 调用如下:
'use strict';const Controller = require('egg').Controller;class HomeController extends Controller {async index() {const { ctx } = this;ctx.body = await ctx.service.user.getAll()}
}module.exports = HomeController;

egg --- 初始化一个egg项目基本结构说明相关推荐

  1. 3、使用angular cli初始化一个新项目

    新项目搭建 ng new命令新建项目 首先到工作目录底下,然后使用ng new命令初始化一个新项目: ng new newProject // 后面跟的是项目名称 命令执行结果如下: 这个命令会自动帮 ...

  2. Vue之初始化一个vue项目

    Vue之初始化一个vue项目 以防忘记需要重新查资料创建,在这里简略的记一记 1.node.js官网下载安装node.js https://nodejs.org/zh-cn/ 下载好之后cmd运行一下 ...

  3. 初始化一个vue项目的流程

    为什么80%的码农都做不了架构师?>>>    一.安装 nodejs 建议安装 v 7.9.0 本人使用的此版本比较好 二.安装 安装vue.创建vue项目 # 全局安装 vue- ...

  4. 如何初始化一个vue项目

    1.先安装node(略) 2.npm 设置成淘宝源: npm config set registry https://registry.npm.taobao.org 都安装完成后,可以命令行工具中输入 ...

  5. docker build命令详解_Docker 搭建你的第一个 Node 项目到服务器

    本文你能学到什么 Docker 是什么 Docker 概念 关于 Docker 的概念是确实不太好总结,下面我通过四点向你说明 Docker 到底是个什么东西. Docker 是世界领先的软件容器平台 ...

  6. 不借助idea开发工具构建一个Javaweb项目

    不借助idea开发工具构建一个Javaweb项目 目录结构 webappsroot|----------WEB-INF|----------classes(存放字节码)|----------lib(存 ...

  7. egg(一):创建一个egg项目

    前言: 企业级node框架egg的运用之路,首先是搭建一个项目. 目录: 官网入口:点我 与社区框架的差异 特性 具体操作: 1.安装nodejs运行环境,支持版本8以上 2.安装egg,二选一,推荐 ...

  8. Egg 实现一个 mTime 时光网

    先放出项目地址:https://github.com/OrangeXC/m... 有一段时间没更新博客了,今天的文章主要围绕 egg 进行,长时间沉浸在前端框架中,游离到传统 MVC 的开发模式还真不 ...

  9. egg html模板,egg(35,36)--egg实现项目的静态模板

    简介 实现一个模板嵌套的项目 头部分开共享 左边导航共享, 右边放router对应的内容 目录结构 创建项目 egg-init egg-xiaomi --type=simple cnpm instal ...

最新文章

  1. MPB:中国地大侯卫国组-​ 针对热泉原位培养矿物的低质量DNA提取方法
  2. 自动驾驶车辆何时实现?近期不会实现的五大原因
  3. ASP.NET用户登录模块代码
  4. Python内存管理方式和垃圾回收算法解析
  5. 自考的那些事儿(二):第二次自考完了???
  6. Sql 语句:显示 Sql Server 中所有表中的信息
  7. 六、hibernate之HQL
  8. mysql 的 show profile 相关属性
  9. 和数传媒:区块链博弈论机制设计是未来关键
  10. 聊天实录:刘静平谈网管员职业规划与技术
  11. SQL SERVER 2012/2014 序列号密钥
  12. python 查找excel标红的数据_excel表格如何快速给数据标红-如何将查找出的excel内容批量标记为红色?...
  13. 如何成为深度学习工程师
  14. java基础知识【第12期】-- 集合之Set
  15. Java中WeakHashMap实现原理深究
  16. 方舟生存进化手游版服务器维护,方舟生存进化手游PVX服务器规则一览 PVX服务器怎么玩_3DM手游...
  17. coffeescript java 执行_新的coffeescript,运行cakefile时产生ENOENT错误
  18. 佛蒙特大学计算机排名,佛蒙特大学计算机科学与信息系统本科入学要求.pdf
  19. 极客时间Go实战训练营zui新
  20. 推荐模型-上下文感知-2016:FNN模型【FM家族】【FM+MLP=FNN】

热门文章

  1. 大数据职业理解_到底什么是大数据,大数据职业的具体工作内容是什么?
  2. python counter_教你Python的collections.Counter类型
  3. c语言单元测验,C语言程序设计单元测验一.PDF
  4. python sort 部分元素_Python 简单排序算法-选择、冒泡、插入排序实现
  5. 485 九针头_张元英安宥真还是孩子,手臂还有疫苗接种痕迹,九针头太吓人
  6. Java生鲜电商平台-促销系统的架构设计与源码解析
  7. 多线程的创建方式---继承Thread和实现Runnable
  8. 算法实践--最小生成树(Kruskal算法)
  9. 【WIN10】WIN2D——基本圖形的繪製
  10. 本地搭建Dubbo监控中心的安装步骤