相关文章
基于阿里egg框架搭建博客(1)——开发准备
基于阿里egg框架搭建博客(2)——Hello World
基于阿里egg框架搭建博客(3)——注册与登录
基于阿里egg框架搭建博客(4)——权限控制
基于阿里egg框架搭建博客(5)——置顶导航条
基于阿里egg框架搭建博客(6)——浏览、发表文章
基于阿里egg框架搭建博客(7)——编辑文章
git
https://github.com/ZzzSimon/egg-example
喜欢就点个赞吧!
什么是egg.js
简单来讲就是一个基于nodejs与koa的WEB框架。
环境准备
- 安装nodejs环境,下载地址:https://nodejs.org/en/download/
- 安装脚手架,在此基础上开发,具体执行以下命令:
$ npm i egg-init -g
$ egg-init egg-blog --type=simple
$ cd egg-blog
$ npm i
非脚手架(初学者推荐)
如果是初学者,建议自己创建所有的目录,以熟悉Egg官方所约定的规则。
官方demo:https://eggjs.org/zh-cn/intro/quickstart.html#%E9%80%90%E6%AD%A5%E6%90%AD%E5%BB%BA
脚手架
Egg 奉行『约定优于配置』,按照一套统一的约定进行应用开发,团队内部采用这种方式可以减少开发人员的学习成本,开发人员不再是『钉子』,可以流动起来。没有约定的团队,沟通成本是非常高的,比如有人会按目录分栈而其他人按目录分功能,开发者认知不一致很容易犯错。
如Egg官方所言,脚手架是对应用目录做了一个规范的示范,我们在此基础上开发能省下不少功夫。
执行完上述命令之后,我们可以看到如下的目录结构:
egg-project
├── package.json
├── app.js (可选)
├── agent.js (可选)
├── app
| ├── router.js
│ ├── controller
│ | └── home.js
│ ├── service (可选)
│ | └── user.js
│ ├── middleware (可选)
│ | └── response_time.js
│ ├── schedule (可选)
│ | └── my_task.js
│ ├── public (可选)
│ | └── reset.css
│ ├── view (可选)
│ | └── home.tpl
│ └── 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
如上,由框架约定的目录:
-
app/router.js
用于配置 URL 路由规则,具体参见 Router。 -
app/controller/**
用于解析用户的输入,处理后返回相应的结果,具体参见 Controller。 -
app/service/**
用于编写业务逻辑层,可选,建议使用,具体参见 Service。 -
app/middleware/**
用于编写中间件,可选,具体参见 Middleware。 -
app/public/**
用于放置静态资源,可选,具体参见内置插件 egg-static。 -
app/extend/**
用于框架的扩展,可选,具体参见框架扩展。 -
config/config.{env}.js
用于编写配置文件,具体参见配置。 -
config/plugin.js
用于配置需要加载的插件,具体参见插件。 -
test/**
用于单元测试,具体参见单元测试。 -
app.js
和agent.js
用于自定义启动时的初始化工作,可选,具体参见启动自定义。关于agent.js
的作用参见Agent机制。
由内置插件约定的目录:
-
app/public/**
用于放置静态资源,可选,具体参见内置插件 egg-static。 -
app/schedule/**
用于定时任务,可选,具体参见定时任务。
若需自定义自己的目录规范,参见 Loader API
-
app/view/**
用于放置模板文件,可选,由模板插件约定,具体参见模板渲染。 -
app/model/**
用于放置领域模型,可选,由领域类相关插件约定,如 egg-sequelize。
结尾
如果看完觉得有用,请给作者一个喜欢吧!谢谢啦!
网友评论