博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Egg 企业级应用开发框架的搭建
阅读量:4842 次
发布时间:2019-06-11

本文共 2151 字,大约阅读时间需要 7 分钟。

在之前的文章中我们介绍了一下基于 nodejs 开发的 koa2 框架,在之前还有 espress 框架,接下来我们再学习一个 Egg.js.

 

Egg.js 中文官网:

Egg.js 是《阿里旗下产品》基于 Node.js 和 Koa 是一个 Nodejs 的企业级应用开发框架。 可以帮助发团队和开发人员降低开发和维护成本。

Express 和 Koa 是 Node.js 社区广泛使用的框架,简单且扩展性强,非常适合做个人项 目。但框架本身缺少约定,标准的 MVC 模型会有各种千奇百怪的写法。Egg 按照约定进行 开发,奉行『约定优于配置』,团队协作成本低。

Egg.js 基于 Es6、Es7 以及 Typescript、Koa2 使得 Nodejs 具有更规范的开发模式、更低 的学习成本、更优雅的代码、更少的开发成本、更少的维护成本。为企业级框架而生。

Egg.js 的特性:

1、提供基于 Egg 定制上层框架的能力

2、高度可扩展的插件机制

3、内置多进程管理

4、基于 Koa 开发,性能优异

5、框架稳定,测试覆盖率高

6、渐进式开发

 

环境准备

操作系统:支持 macOS,Linux,Windows

运行环境:Nodejs 建议选择 LTS 版本,Nodejs 最低要求 8.x。

快速初始化

我们推荐直接使用脚手架,只需几条简单指令,即可快速生成项目:

mkdir egg-example && cd egg-example npm init egg --type=simple npm i

启动项目:

npm run dev

然后打开 127.0.0.1:7001 即可:

我们按照上面的操作指令就会在我们本地快速创建一个 Egg 框架,目录如下:

上图就是我们快速搭建的一个 Egg 目录,其中

app 目录是我们开发项目的配置文件,控制器、服务等都在这个里面开发,

config 目录是我们整个插件和项目的配置文件,

node_modules 目录是我们所以依赖的 node 模块的文件,test 目录是一个测试目录

.autod.conf.js 是 egg 调用的一个配置文件

.eslintignore.js 是代码格式化忽略的配置文件

.eslintrc.js 是代码格式化的配置文件

.gitignore 是 git 上传忽略的文件

.travis.yml 和 appveyor.yml 也是相关配置文件,我们不需要管理

package.json 和 package-lick.json 是我们当前项目的一些配置依赖文件

README.md 是项目阅读说明文件

 

Egg.js 为我们规定了我们的项目目录及各个模块需要防止的位置,如下:

 

  • app/router.js 用于配置 URL 路由规则,具体参见 。
  • app/controller/** 用于解析用户的输入,处理后返回相应的结果,具体参见 。
  • app/service/** 用于编写业务逻辑层,可选,建议使用,具体参见 。
  • app/middleware/** 用于编写中间件,可选,具体参见 。
  • app/public/** 用于放置静态资源,可选,具体参见内置插件 。
  • app/extend/** 用于框架的扩展,可选,具体参见。
  • config/config.{env}.js 用于编写配置文件,具体参见。
  • config/plugin.js 用于配置需要加载的插件,具体参见。
  • test/** 用于单元测试,具体参见。
  • app.js 和 agent.js 用于自定义启动时的初始化工作,可选,具体参见。关于agent.js的作用参见。

由内置插件约定的目录:

  • app/public/** 用于放置静态资源,可选,具体参见内置插件 。
  • app/schedule/** 用于定时任务,可选,具体参见。

若需自定义自己的目录规范,参见 

  • app/view/** 用于放置模板文件,可选,由模板插件约定,具体参见。
  • app/model/** 用于放置领域模型,可选,由领域类相关插件约定,如 。

Egg 内部运行机制如下:

 

接下来我们队 Egg 内部的初始代码进行一下分析:

我们在运行项目后再浏览器输入 127.0.0.1:7001 后就可以访问项目,那他是怎么运行的呢? 

 当我们访问 127.0.0.1:7001/ 时,页面通过 router.js 进行路由匹配,匹配到 "/",然后再通过 controller 去匹配 home.js 下的 index() 方法,然后通过 this.ctx.body 输出 "hi, egg",页面就呈现出 "hi egg"。这是我们只是做了简单的分析,里面的有些语法,如 ctx.body 可以看之前说的 koa 相关文章。

 项目启动后我们就可以对项目进行完善了开发了,在这里就不过多说明了,本人自己做了一些 demo,包括 静态资源处理,get,post 传值,路由等,放在了个人的 gitee 上,有兴趣的小伙伴可以参考一下。

好记性不如烂笔头,特此记录,与君共勉!

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/weijiutao/p/10702181.html

你可能感兴趣的文章
html5中input的type类型有哪些(总结)
查看>>
(转)dp动态规划分类详解
查看>>
手机归属地查询
查看>>
关于运动
查看>>
GridView的RowCommand事件传两个或以上参数
查看>>
剑指Offer编程题2——替换空格
查看>>
ubuntu切换到root
查看>>
MYSQL limit用法
查看>>
Windows7下出现“不支持此接口”的解决方案
查看>>
实现dhtmlxTree树型控件单击展开收缩功能
查看>>
不能在DropDownList 中选择多个项
查看>>
【Unity渲染】Camera RenderToCubemap 渲染到立方体纹理
查看>>
n2n网络穿透内网
查看>>
让“懒惰” Linux 运维工程师事半功倍的 10 个关键技巧!
查看>>
写给自己看的小设计4 - 对象设计通用原则之扩展原则
查看>>
oem 重建
查看>>
LNMP之Nginx
查看>>
构造函数中的异常处理(转)
查看>>
SI Macro
查看>>
jquery动态调整div大小使其宽度始终为浏览器宽度
查看>>