入门egg.js
egg.js是阿里内部根据koa框架开发的一个开源的web框架,目前阿里内部大部分的web框架都是基于egg.js开发的,所以这个框架是比较好的,比较适合企业级开发。
egg.js也是基于mvc模型来开发的,这种模型可以比较好的约束开发,让公司内部更好沟通。
建立egg.js框架
先建立一个文件并且进入文件
mkdir egg-example && cd egg-example
然后建立egg框架,如果你按照官方按照不上记得加上–registry https://registry.npm.taobao.org
npm init egg --type=simple --registry https://registry.npm.taobao.org
simple - 简易的 Egg 应用 。
ts - 简易的 Egg 应用,提供 typescript 支持。
empty - 空的 Egg 应用。
plugin - Egg 插件。
framework - Egg 框架。
然后初始化文件,也就是建立package.json,对项目描述的文件。
npm i --yes
文件结构
egg.js框架是有严格的文件目录制约的。
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
这是一个最完整的项目目录结构,有些文件是可以不需要的,可以根据需求来建立文件。
文件夹作用
1、 app.router.js中是用来匹配各个url,然后执行相对应controller的函数
2、 app.controller是作为MVC框架中的C,用于控制浏览器和服务器的交互
3、 app.server是作为MVC框架中的M,用于与数据库交互或者是数据处理
4、 app.middleware是用来做中间键的
5、 app.public是用来放静态文件的
6、 app.extend是用来做扩展的,比如常用的app方法,如果在application中修改这个方法,再其他函数中使用这个方法的话,就会先调用这个函数
7、 config是用来编写配置文件的
8、 config.plugin.js这个是插件的作用,主要用于对整个运行的调整,或者增添新的功能
9、 test是用来做单元测试的
10、 app.js和agent.js是用来在初始化之前做一些操作,就是框架在运行之前先调用这两个文件的函数。
11、 app.view是用来做模板渲染的,跟django中的view是一样的用法
12、 app.model是用来放置领域模型的,是用来对数据库的单个表操作的。
运行
npm run dev
虽然说修改代码内部会自动重启,但是效果并不是很好。
修改地址和端口
module.exports = appInfo => {
/**
* built-in config
* @type {Egg.EggAppConfig}
**/
const config = exports = {};
// use for cookie sign key, should change to your own and keep security
config.keys = appInfo.name + 'csrf_tonken';
// add your middleware config here
config.middleware = [];
// add your user config here
const userConfig = {
// myAppName: 'egg',
};
// 修改端口号
config.cluster = {
listen: {
path: '',
port: 8888,
hostname: '192.168.1.102'
}
};
config.view = {
defaultViewEngine: 'nunjucks', //设置默认模板
cache: true, //是否开启缓存,开启后,下次渲染同样路径的模板时不会重新查找
mapping: {
'.html': 'nunjucks', //这个是配置渲染文件的后缀名,我一般都是喜欢html
},
// defaultExtension: '.html' //设置默认的模板引擎后缀,设置后就可以在调用时省略,这个我一般都是不使用的
};
//在config里面设置大家都共用的属性
config.address = "http://192.168.1.102://8888"
return {
...config,
...userConfig,
};
};
这下面这部分才是修改地址和端口的关键
config.cluster = {
listen: {
path: ‘’,
port: 8888,
hostname: ‘192.168.1.102’
}
};
config.keys = appInfo.name + ‘csrf_tonken’;这个是cookie安全键,是一定要设置的,