入門egg.js

入門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安全鍵,是一定要設置的,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章