egg --- 初始化一个egg项目基本结构说明
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,打开如下:
- 说明:
- 使用
const Controller = require('egg').Controller
得到egg框架中的Controller基类 - 自定义类继承与Controller基类
class HomeController extends Controller
- 在里面声明了一个异步方法
async index(){...}
- 将自定义的类导出,
module.exports = HomeController
- 使用
- 这里的index 对应路由层(Router)中的 controller.home.index
类似的加一个Service层
- 假设是User的服务处
- 首先获得Service的基类
const Service = require('egg').Service
- 自定义子类继承基类
const UserService extends Service{...}
- 在里面写一个方法,用于获取所有用户
async getAll(){return [{name:'marron',age:18}]
}
- 导出自己定义的类
- 目录结构自己新建,代码保存于’/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项目基本结构说明相关推荐
- 3、使用angular cli初始化一个新项目
新项目搭建 ng new命令新建项目 首先到工作目录底下,然后使用ng new命令初始化一个新项目: ng new newProject // 后面跟的是项目名称 命令执行结果如下: 这个命令会自动帮 ...
- Vue之初始化一个vue项目
Vue之初始化一个vue项目 以防忘记需要重新查资料创建,在这里简略的记一记 1.node.js官网下载安装node.js https://nodejs.org/zh-cn/ 下载好之后cmd运行一下 ...
- 初始化一个vue项目的流程
为什么80%的码农都做不了架构师?>>> 一.安装 nodejs 建议安装 v 7.9.0 本人使用的此版本比较好 二.安装 安装vue.创建vue项目 # 全局安装 vue- ...
- 如何初始化一个vue项目
1.先安装node(略) 2.npm 设置成淘宝源: npm config set registry https://registry.npm.taobao.org 都安装完成后,可以命令行工具中输入 ...
- docker build命令详解_Docker 搭建你的第一个 Node 项目到服务器
本文你能学到什么 Docker 是什么 Docker 概念 关于 Docker 的概念是确实不太好总结,下面我通过四点向你说明 Docker 到底是个什么东西. Docker 是世界领先的软件容器平台 ...
- 不借助idea开发工具构建一个Javaweb项目
不借助idea开发工具构建一个Javaweb项目 目录结构 webappsroot|----------WEB-INF|----------classes(存放字节码)|----------lib(存 ...
- egg(一):创建一个egg项目
前言: 企业级node框架egg的运用之路,首先是搭建一个项目. 目录: 官网入口:点我 与社区框架的差异 特性 具体操作: 1.安装nodejs运行环境,支持版本8以上 2.安装egg,二选一,推荐 ...
- Egg 实现一个 mTime 时光网
先放出项目地址:https://github.com/OrangeXC/m... 有一段时间没更新博客了,今天的文章主要围绕 egg 进行,长时间沉浸在前端框架中,游离到传统 MVC 的开发模式还真不 ...
- egg html模板,egg(35,36)--egg实现项目的静态模板
简介 实现一个模板嵌套的项目 头部分开共享 左边导航共享, 右边放router对应的内容 目录结构 创建项目 egg-init egg-xiaomi --type=simple cnpm instal ...
最新文章
- MPB:中国地大侯卫国组-​ 针对热泉原位培养矿物的低质量DNA提取方法
- 自动驾驶车辆何时实现?近期不会实现的五大原因
- ASP.NET用户登录模块代码
- Python内存管理方式和垃圾回收算法解析
- 自考的那些事儿(二):第二次自考完了???
- Sql 语句:显示 Sql Server 中所有表中的信息
- 六、hibernate之HQL
- mysql 的 show profile 相关属性
- 和数传媒:区块链博弈论机制设计是未来关键
- 聊天实录:刘静平谈网管员职业规划与技术
- SQL SERVER 2012/2014 序列号密钥
- python 查找excel标红的数据_excel表格如何快速给数据标红-如何将查找出的excel内容批量标记为红色?...
- 如何成为深度学习工程师
- java基础知识【第12期】-- 集合之Set
- Java中WeakHashMap实现原理深究
- 方舟生存进化手游版服务器维护,方舟生存进化手游PVX服务器规则一览 PVX服务器怎么玩_3DM手游...
- coffeescript java 执行_新的coffeescript,运行cakefile时产生ENOENT错误
- 佛蒙特大学计算机排名,佛蒙特大学计算机科学与信息系统本科入学要求.pdf
- 极客时间Go实战训练营zui新
- 推荐模型-上下文感知-2016:FNN模型【FM家族】【FM+MLP=FNN】
热门文章
- 大数据职业理解_到底什么是大数据,大数据职业的具体工作内容是什么?
- python counter_教你Python的collections.Counter类型
- c语言单元测验,C语言程序设计单元测验一.PDF
- python sort 部分元素_Python 简单排序算法-选择、冒泡、插入排序实现
- 485 九针头_张元英安宥真还是孩子,手臂还有疫苗接种痕迹,九针头太吓人
- Java生鲜电商平台-促销系统的架构设计与源码解析
- 多线程的创建方式---继承Thread和实现Runnable
- 算法实践--最小生成树(Kruskal算法)
- 【WIN10】WIN2D——基本圖形的繪製
- 本地搭建Dubbo监控中心的安装步骤