egg學習筆記次日:egg.js目錄結構介紹、定義controller以及配置路由、egg目錄約定規範、vscode+egg開發工具配置

今天來介紹一下egg.js的目錄結構,以及vscode egg開發工具配置css

1、egg.js目錄結構介紹

 

2、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

如上,由框架約定的目錄:node

  • 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 用於自定義啓動時的初始化工做,可選。

由內置插件約定的目錄:數據庫

  • app/public/** 用於放置靜態資源,可選。
  • app/schedule/** 用於定時任務,可選。

3、egg執行流程:

當用戶訪問頁面,若是沒有中間件,先進行路由匹配,找到router.js文件,可知當用戶訪問路徑爲/時,會執行controller下home模塊的index方法。json

找到controller的home模塊的index方法,可知爲頁面寫入了hi,egg的內容app

接下來,照葫蘆畫瓢,咱們在router.js中新建一個路由配置,使用戶訪問到/login時執行controller下home模塊的login方法。框架

在home.js裏寫入login方法,寫入「我是登陸頁面」 字樣。工具

緊接着訪問/login 就能看到 文字渲染出來了:單元測試

 

固然,在項目中確定不會只有一個controller,因此咱們新建一個名爲news的控制器,此處建議安裝vscode eggjs擴展,以便快速生成controller模板等文件開發工具

 

當news.js創建完成後, 鍵入以下內容:測試

繼續在路由裏面作配置,訪問/newsList時執行上圖controller 中news模塊下的getNewsList方法,訪問/newsList 以下圖:

 

可是,光給用戶顯示光禿禿的文字確實談不上什麼體驗,最起碼要渲染一個有樣式有邏輯的頁面吧。你們都知道,egg是一個基於nodejs的MVC框架,當用戶輸入url,先匹配路由。路由找對應的控制器,控制器中渲染頁面和數據,須要數據就找model層要,model層去請求數據庫返回數據。

MVC:

view:                          視圖,模板,頁面展現 (約定app目錄下view文件夾中)

Controllor控制器:負責處理業務邏輯(約定app目錄下controller文件夾中)

model 模型:             和數據庫打交道(約定app目錄下service文件夾中)

明天給你們分享 靜態資源 配置模板引擎 中間件等基礎內容,敬請期待~~

相關文章
相關標籤/搜索