Egg.js入門

前言

本文首發公衆號 【一名打字員】前端

衆所周知 JavaScript 的生態圈出了名的好,配套設施完善,因此使用起來特別的順手。前幾回咱們介紹了使用 express 來進行簡單的微信公衆號開發,相信你們都已經瞭解到使用 node 能夠方便快捷的進行開發 web 應用。可是因爲阿里系的 egg 框架近期完成了 2.2.0 版本的迭代,讓咱們看到了他們努力打造的框架中有不少值得學習以及參考的地方,因此【小譜君】團隊也在使用 egg 進行整個系統的重構,包括參考 egg 的代碼格式規範等等,進行一系列深層次的改造。node

今天來安利一下 egg ,經過 egg 快速選擇適合對應業務模型的腳手架,快速啓動項目的開發。git

簡介

熟悉的打字員應該知道, egg 如今在社區特別的火爆,官方對它本身的定義是github

爲企業級框架和應用而生,但願由 Egg.js 孕育出更多上層框架,幫助開發團隊和開發人員下降開發和維護成本。

由於 egg 是基於koa 2x開發的,因此官方還特別強調了與其它兩個社區框架 ExpressSails 的差別點web

  • Express 是 Node.js 社區普遍使用的框架,簡單且擴展性強,很是適合作我的項目。但框架自己缺乏約定,標準的 MVC 模型會有各類千奇百怪的寫法。Egg 按照約定進行開發,奉行『約定優於配置』,團隊協做成本低。
  • Sails 是和 Egg 同樣奉行『約定優於配置』的框架,擴展性也很是好。可是相比 Egg,Sails 支持 Blueprint REST API、WaterLine 這樣可擴展的 ORM、前端集成、WebSocket 等,但這些功能都是由 Sails 提供的。而 Egg 不直接提供功能,只是集成各類功能插件,好比實現 egg-blueprint,egg-waterline 等這樣的插件,再使用 sails-egg 框架整合這些插件就能夠替代 Sails 了。

特性

  • 提供基於 Egg 定製上層框架的能力
  • 高度可擴展的插件機制
  • 內置多進程管理
  • 基於 Koa 開發,性能優異
  • 框架穩定,測試覆蓋率高
  • 漸進式開發

我的比較喜歡的地方就是其可擴展性特別高,並且做爲特別喜歡漸進式開發的打字員來講,不要太友好唷。並且是熟悉 Web 開發或 MVC 模式開發的童鞋的福音,由於在這裏你能看到本身熟悉的controller和service,開發起來棒棒噠。express

快速開始

怎麼快速的用 egg 快速的進行開發呢,咱們選擇使用其官方提供的內置腳手架,推薦egg-initnpm

  • 建立項目

首先安裝 eggnpm i egg-init -g), 而後初始化項目 egg-init egg-example --type=simplejson

  • 目錄結構

    進入生成的 egg-example 目錄,其結構以下:後端

egg-example
├── package.json(配置文件)
├── app
|   ├── router.js(路由文件)
│   ├── controller
│   |   └── home.js(用戶控制層)
├── config
|   ├── plugin.js(插件配置)
|   ├── config.default.js(默認配置)
└── test
    └── app
        └── controller
            └── home.test.js(測試文件)

安裝依賴以後咱們就可以運行 npm run dev 在本地查看了。微信

clipboard.png

在圖中咱們能夠看到,程序已經正常的在本地跑了起來,打印出當前使用的版本以及當前的 agent_worker 並監聽了7001這個端口。關於 agentworker以及 master 的詳細不在這裏具體介紹,有興趣的童鞋能夠移步官網。

  • 編寫程序

接下來咱們就能在 controller 編寫本身的業務邏輯代碼了,爲了保持 Controller` 中的邏輯更加簡潔,官方推薦增長 service 層,什麼是 Service 呢,相信不少同窗對它還很陌生,簡單來講,
Service 就是在複雜業務場景下用於作業務邏輯封裝的一個抽象層。同時把業務邏輯進行封裝以後還能夠保持業務邏輯的獨立性,抽象出來的 Service 能夠被多個 Controller 重複調用。而且將邏輯和展示分離,更容易編寫測試用例。

這樣一來,是否能夠將以前寫的微信公衆號系統進行重構呢,在代碼和整個架構上進行一個規範,趕忙動動手吧。

結語

國內前端優秀的開發團隊還有不少,可是阿里算是作的比較好的,至少他家的文檔讓我總體看來很舒服,並且逐漸把前端的一些概念開始擴展,融入了一些後端的思想。想一想還有特別火熱的 RxJs 系列,看來將來前端依舊會走在時尚的前流。

另外在學習的過程當中發現問題咱們能夠給 egg 團隊提 issue 的哇,或者有更好的解決方案能夠提交 PR ,萬一被合併了,這牛也能夠吹半輩子了哈。

傳送門

相關文章
相關標籤/搜索