国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

阿里egg.js初體驗(yàn)(一)

Dr_Noooo / 2441人閱讀

摘要:是阿里推出的基于的開(kāi)發(fā)框架,今天抽空體驗(yàn)了下,按官方教程做一個(gè)。用于解析用戶的輸入,處理后返回相應(yīng)的結(jié)果,具體參見(jiàn)。用于編寫業(yè)務(wù)邏輯層,可選,建議使用,具體參見(jiàn)。和用于自定義啟動(dòng)時(shí)的初始化工作,可選,具體參見(jiàn)啟動(dòng)自定義。

egg.js是阿里推出的基于koa的node開(kāi)發(fā)框架,今天抽空體驗(yàn)了下,按官方教程做一個(gè)Hacker News。其實(shí)官方有腳手架提供,但是這次我們不用。

開(kāi)始之前,我們先看下KOA對(duì)于中間件的洋蔥模型,了解這個(gè),對(duì)于我們之后理解一個(gè)請(qǐng)求的執(zhí)行路徑會(huì)很有幫助。

好了,讓我們開(kāi)始我們的egg之旅吧!

1, 先初始化項(xiàng)目結(jié)構(gòu):

$ mkdir egg-example
$ cd egg-example
$ npm init
$ npm i egg --save
$ npm i egg-bin --save-dev

2, 在package.json里,添加如下命令:

"scripts": {
    "dev": "egg-bin dev"
  }

3, 開(kāi)始編寫代碼,這之前,我們應(yīng)該對(duì)項(xiàng)目的目錄結(jié)構(gòu)有個(gè)約定,官方的說(shuō)明在這里 https://eggjs.org/zh-cn/basic... 我們到時(shí)候在回來(lái)說(shuō)下這個(gè)目錄。

4 我們需要一個(gè)controller,一個(gè)router,一個(gè)config,內(nèi)如如下

// app/controller/home.js
const Controller = require("egg").Controller;

class HomeController extends Controller {
  async index() {
    this.ctx.body = "Hello world";
  }
}

module.exports = HomeController;

// app/router.js
module.exports = app => {
  const { router, controller } = app;
  router.get("/", controller.home.index);
};


// config/config.default.js
exports.keys = <此處改為你自己的 Cookie 安全字符串>;

此時(shí),目錄結(jié)構(gòu)如下:

egg-example
├── app
│   ├── controller
│   │   └── home.js
│   └── router.js
├── config
│   └── config.default.js
└── package.json

好了,現(xiàn)在檢查下,運(yùn)行 npm run dev,
在 http://127.0.0.1:7001/ 檢查下,一切ok

這里有幾個(gè)地方要注意下

Controller 有class和exports兩個(gè)寫法,那么這兩個(gè)寫法有什么區(qū)別呢?

按照類的方式編寫Controller,不僅可以讓我們更好的對(duì) Controller層代碼進(jìn)行抽象(例如將一些統(tǒng)一的處理抽象成一些私有方法),還可以通過(guò)自定義Controller 基類的方式封裝應(yīng)用中常用的方法。至于方法的方式,官方不推薦使用,只是為了做兼容,其中,每一個(gè) Controller 都是一個(gè) async function,它的入?yún)檎?qǐng)求的上下文 Context 對(duì)象的實(shí)例,通過(guò)它我們可以拿到框架封裝好的各種便捷屬性和方法 

config也有module.exports 和 exports兩種寫法,那么這兩種寫法有什么區(qū)別呢?

module.exports是Module系統(tǒng)創(chuàng)建對(duì)象的語(yǔ)法,但是如果你希望你的
module是一個(gè)類的實(shí)例,你可以將實(shí)例賦予moduel.exports,如這時(shí)候
module.exprots指向的就是一個(gè)A的實(shí)例了,可以用以下方式調(diào)用A的方
法 module.exports.xxx(),等價(jià)于 a.xxx()。但是如果只是exports=
new ClassA();這個(gè)只是簡(jiǎn)單的將本模塊變量exports重新綁定了而已。注
意,對(duì)module.exports的綁定不能是異步綁定或者回調(diào)中!

可以這樣理解,其他模塊使用本模塊時(shí),用的是module.exports指向的東
西,而exports是模塊內(nèi)部變量,外部模塊是無(wú)法訪問(wèn)的。
module.exports和exports是兩個(gè)變量,只是一開(kāi)始這兩個(gè)是指向同一個(gè)對(duì)
象而已??梢栽谀K內(nèi)部用exports作為module.exports的快捷方式

現(xiàn)在,我們看下官方的目錄結(jié)構(gòu)規(guī)范:

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 路由規(guī)則,具體參見(jiàn) Router。
app/controller/** 用于解析用戶的輸入,處理后返回相應(yīng)的結(jié)果,具體參見(jiàn) Controller。
app/service/** 用于編寫業(yè)務(wù)邏輯層,可選,建議使用,具體參見(jiàn) Service。
app/middleware/** 用于編寫中間件,可選,具體參見(jiàn) Middleware。
app/public/** 用于放置靜態(tài)資源,可選,具體參見(jiàn)內(nèi)置插件 egg-static。
app/extend/** 用于框架的擴(kuò)展,可選,具體參見(jiàn)框架擴(kuò)展。
config/config.{env}.js 用于編寫配置文件,具體參見(jiàn)配置。
config/plugin.js 用于配置需要加載的插件,具體參見(jiàn)插件。
test/** 用于單元測(cè)試,具體參見(jiàn)單元測(cè)試。
app.js 和 agent.js 用于自定義啟動(dòng)時(shí)的初始化工作,可選,具體參見(jiàn)啟動(dòng)自定義。關(guān)于agent.js的作用參見(jiàn)Agent機(jī)制。

由內(nèi)置插件約定的目錄:
app/public/** 用于放置靜態(tài)資源,可選,具體參見(jiàn)內(nèi)置插件 egg-static。
app/schedule/** 用于定時(shí)任務(wù),可選,具體參見(jiàn)定時(shí)任務(wù)。

若需自定義自己的目錄規(guī)范,參見(jiàn) Loader API
app/view/** 用于放置模板文件,可選,由模板插件約定,具體參見(jiàn)模板渲染。
app/model/** 用于放置領(lǐng)域模型,可選,由領(lǐng)域類相關(guān)插件約定,如 egg-sequelize。

(未完待續(xù))

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/92447.html

相關(guān)文章

  • 阿里egg.js體驗(yàn)(二)

    摘要:接前一篇,阿里初體驗(yàn)一我們繼續(xù)我們的之旅。注意到,目錄里和兩個(gè)文件夾,這里也是我們編寫業(yè)務(wù)邏輯的主要地方。用于解析用戶的輸入,處理后返回相應(yīng)的結(jié)果。在使用導(dǎo)出的模塊時(shí),需要把導(dǎo)出的模塊名改為駝峰標(biāo)準(zhǔn),且首字母變?yōu)樾憽? 接前一篇,阿里egg.js初體驗(yàn)(一) 我們繼續(xù)我們的egg之旅。我們已經(jīng)完成了對(duì)于項(xiàng)目結(jié)構(gòu)的搭建,現(xiàn)在我們需要開(kāi)始業(yè)務(wù)的編寫。注意到,目錄里controller和se...

    liaosilzu2007 評(píng)論0 收藏0
  • 那些年的體驗(yàn)技術(shù)部

    摘要:隨著業(yè)務(wù)的爆發(fā),團(tuán)隊(duì)人數(shù)迅速增長(zhǎng)起來(lái),團(tuán)隊(duì)名也從前端開(kāi)發(fā)部改名成體驗(yàn)技術(shù)部,意在體現(xiàn)前端工程師的核心競(jìng)爭(zhēng)力用技術(shù)解決產(chǎn)品體驗(yàn)問(wèn)題。前后端分離的研發(fā)模式在社區(qū)流行起來(lái),體驗(yàn)技術(shù)部最先實(shí)踐的是基于的應(yīng)用層方案。2008 年對(duì)中國(guó)人是復(fù)雜的一年,冰災(zāi),大地震,奧運(yùn)會(huì)接踵而至。對(duì)玉伯來(lái)說(shuō)也一樣,趕在奧運(yùn)會(huì)排查臨時(shí)人口之前,玉伯從北京中科院軟件所離開(kāi),憑著自己幾年來(lái)在程序開(kāi)發(fā)上的經(jīng)歷和對(duì)新興前端行業(yè)的...

    sean 評(píng)論0 收藏0
  • 微信小程序體驗(yàn),入門練手項(xiàng)目--通訊錄,后臺(tái)是阿里云服務(wù)器

    摘要:最近微信小程序異?;鸨?,很多人在學(xué)習(xí),下面帶著大家搭建下微信小程序的調(diào)試環(huán)境,并調(diào)試入門練手項(xiàng)目通訊錄和基礎(chǔ)即可微信推薦使用的語(yǔ)言,去菜鳥(niǎo)教程簡(jiǎn)單學(xué)習(xí)下,,,即可,方便大家學(xué)習(xí)。 一、前言(坑爹的玩意) 項(xiàng)目源碼:https://github.com/saucxs/wx_... 微信小程序自從2017年,被各種看好,不過(guò)一段時(shí)間過(guò)去了還是反響平平,下半年隨著各項(xiàng)功能的開(kāi)放,很多企業(yè)...

    kel 評(píng)論0 收藏0
  • Egg.js搭建后臺(tái)服務(wù)API

    摘要:因?yàn)槠匠i_(kāi)發(fā)都是前后端分離的模式,就想著使用創(chuàng)建后臺(tái)服務(wù),寫一套接口配合其他的項(xiàng)目。復(fù)雜數(shù)據(jù)的處理,比如要展現(xiàn)的信息需要從數(shù)據(jù)庫(kù)獲取或者是第三方服務(wù)的調(diào)用。更新用戶信息用戶信息已更改一個(gè)簡(jiǎn)單的應(yīng)用結(jié)構(gòu)就是這樣,如此便實(shí)現(xiàn)了用負(fù)責(zé)接口服務(wù)。 寫在前面的話 最近在學(xué)習(xí)Egg.js,它是阿里推出的基于Koa的node開(kāi)發(fā)框架,為企業(yè)級(jí)框架和應(yīng)用而生。Egg.js 的官方文檔已經(jīng)很完善了,想學(xué)...

    dailybird 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Dr_Noooo

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<