Node實戰(第2季)5 基於Koa快速開發Web應用
講解ES6中生成器、yield,以及Node.js下一代Web開發框架--Koa及其中介軟體的用法。
5.1 ES6時代的來臨
ECMAScript6,簡稱ES6,也稱作ECMAScript2015,於2015年6月正式定稿。ES6是一次重大升級,是自2009年釋出的ES5規範後的首次更新。
function和function* :function*就是上面提到的生成器函式
function* helloWorldGeneratorFunction() { var hello = yield 'hello'; console.log(hello); var world = yield 'world'; console.log(world); return '!'; }
生成器函式也是函式,所以擁有所有函式的特性。比如作用域、閉包,以及遇到第一個return會執行結束等。生成器函式又有些普通函式沒有的特性,比如可以使用yield並且yield只能在生成器函式內使用,如果在普通函式內使用yield將會報錯。
yield和yield*:Array與String、arguments、Generator、Object。區別在於:yield只返回右右值,而yield*則將函式委託(delegate)到另一個生成器(Generator)或可迭代的物件(如物件串、陣列、類陣列argument,以及ES6中的Map、Set等)。
co和Koa:Koa是基於Generator和co開發的新一代中介軟體框架。
5.2 模板系統
ejs和co-ejs:ejs是常用的模板引擎之一,co-ejs是經過改造ejs原始碼以支援生成器函式的一種嘗試。所理解的模板引擎是將定義好的模板與靜態資料(如JSON)結合渲染生成HTML。
過濾器:
5.3 路由
在使用Express開發時,比較好的方式就是將路由寫到一個檔案中,如router.js
5.4 引數驗證與錯誤處理
koa-scheme:
koa-errorhandler:
5.5 快取和配置
koe-router-cache和co-cache:當一個網站的訪問量越來越大後,增加快取是提升效能的一個既簡單又有效的方式。增加快取的方式大同小異,無非是將快取層放到業務邏輯層之前,當請求到到達時,首先經過快取層,如果命中快取則直接返回,如果沒有命中則傳遞到業務邏輯層。快取的更新機制也大同小異,通常有兩種方式:一種是設定一個定時器定時更新快取,一種是當業務邏輯層執行結束後更新快取。第一種方式簡單卻浪費資源,第二種方式程式碼耦合嚴重也不優雅。而基於Koa的中介軟體特性,我們可以寫出既簡單又優雅也不耦合的快取中介軟體。
config-lite:不管是小專案還是大專案,將配置與程式碼分離是一種非常好的做法。我們通常將配置寫到一個配置檔案裡,如config.js/config.json,並放到專案的根目錄下。
5.6 測試
測試是軟體開發過程中必不可少的一環,沒有經過測試的程式是不完整的,也是沒有保證的。手工測試既煩瑣又容易出現人為失誤,所以自動化測試變得越來越流行。在專案開發過程中,如何保證新增新功能後,之前的功能也都是可用的呢?如果沒有寫測試用例,那麼需要從頭挨個測試功能點;如果之前為每個功能都寫了測試,那麼只需執行一遍測試程式。
單元測試:自動化測試中的一種,是針對程式模組(軟體設計的最小單位)來進行正確性檢驗的測試工作。程式單元是應用的最小的可測試部件。在過程化程式設計中,一個單元就是單個程式、函式、過程等;對於面向物件程式設計,最小單元就是方法,包括基類(超類)、抽象類、或者派生類(子類)中的方法。
單元測試又有許多風格,常見的兩個風格有:測試驅動開發(TDD)和行為驅動開發(BDD),二者最主要的區別在於:TDD關注所有功能是否被正確實現,每個功能都具備對應的測試用例;BDD強調的是系統最終的實現與使用者期望的行為是否一致,驗證程式碼實現是否符合設計目標。
co-mocha和co-supertest:
5.7 開發一個論壇系統
Nodeclub是一個優秀的開源論壇系統,已經在Node.js中文技術社群。
路由和功能設計:
自定義模型:
theme的設計:
註冊:
登入與登出:
主頁與版塊:
使用者頁:
發表頁與話題頁:
測試:
部署:使用pm2,申請MongoLab,部署到Heroku(雲服務平臺)
https://github.com/nswbmw/N-club
相關推薦
Node實戰(第2季)5 基於Koa快速開發Web應用
講解ES6中生成器、yield,以及Node.js下一代Web開發框架--Koa及其中介軟體的用法。 5.1 ES6時代的來臨 ECMAScript6,簡稱ES6,也稱作ECMAScript2015,於2015年6月正式定稿。ES6是一次重大升級,是自2009年
Node實戰(第2季) 2 開發OAuth2認證伺服器
REST+JSON風格的API和SOAP+XML相比,其好處是呼叫更加靈活,也更容易擴充套件,另外JSON格式傳輸資訊比XML減少約30%的資料量,效率更高。因此在搭建API伺服器時,往往首選REST風格的API。當API伺服器對外提供服務時,需要一種方式來驗證API
《Node.js實戰(第2季)》試讀感想
看到這本書的目錄 立刻讓我精神抖擻 ,特別是“開發OAuth2認證伺服器”這個章節 ,上面描述的實現大致章節標題 比如用到了目前流行的restful api,因為之前 我也搞過oauth2 ,不過是用 Apache Oltu 整合shiro實現的 java版本的 OAuth
《R語言實戰(第2版)》高清中文版PDF+高清英文版PDF+源代碼
英文版 高清 r語言 color pro mar ffffff text 技術分享 下載:https://pan.baidu.com/s/1DMDKWi9RPs4pYNbK1Kvc_A 《R語言實戰(第2版)》高清中文版PDF+高清英文版PDF+源代碼 高清中文版558頁,
[分享]《Flask Web開發:基於Python的Web應用開發實戰(第2版)》中文PDF+源代碼
全面介紹 flask 技術 ESS nfs 圖片 ges web應用開發 復制粘貼 下載:Flask Web開發第二版《Flask Web開發:基於Python的Web應用開發實戰》第二版中文PDF,324頁,帶目錄和書簽,文字能夠復制粘貼;配套源代碼;經典書籍第二版,講解
習題2.5 兩個有序鏈表序列的合並(15 分)浙大版《數據結構(第2版)》題目集
merge 其中 接口 cnblogs oid color 給定 style bsp 本題要求實現一個函數,將兩個鏈表表示的遞增整數序列合並為一個非遞減的整數序列。 函數接口定義: List Merge( List L1, List L2 ); 其中Lis
以前寫的兩本書《安全之路:Web滲透技術及實戰案例解析(第2版)》和《黑客攻防實戰加密與解密》
Web滲透技術及實戰案例解析 黑客攻防實戰加密與解密 應一些朋友的要求,我重新將書封面和購買地址發一下說明一下:www.antian365.com原來域名轉移到國外去了。現在國家對境外域名在國內訪問必須實名制,進行備份啥的,情況你懂的。最近正在制作《黑客攻防實戰加密與解密》的視頻課程,對黑客攻防過程遇
(Flask Web開發:基於Python的Web應用開發實戰)------學習筆記(第2章)
第2章 程式的基本結構 本章將帶你瞭解 Flask 程式各部分的作用,編寫並執行第一個 Flask Web 程式。 2.1 初始化 所有 Flask 程式都必須建立一個程式例項,程式例項是 Flask 類的物件。 Web 伺服器使用一種名為 Web 伺服器閘
《C語言程式設計:現代方法(第2版)(K.N.King 著)》學習筆記六:C語言基本概念(5)
問與答 GCC 最初是 GNU C Compiler 的簡稱。現在指 GNU Compiler Collection,這是因為最新版本的 GCC 能夠編譯用 Ada、C、C++、Fortran、Ja
《Java開發實戰1200例》(第2卷)學習筆記—TCP網路通訊
例項313:使用Socket通訊 通過Socket類的getInputStream()方法獲得輸入流物件,並藉助InputStreamReader類將輸入流物件轉換為BufferedReader物件讀取接收到的資訊,使用getOutputStream()方法獲
Android程式設計權威指南(第2版)—第5章挑戰練習
5.5 挑戰練習 (1)使用者作弊後,可以旋轉CheatActivity來清除作弊痕跡 這個可以用書本前面讓題目橫屏後不重置的方法來進行: 新建兩個常量和一個變數 private static final String TAG = "CheatActivity"; pri
《TensorFlow:實戰Google深度學習框架(第2版)》高清中文版PDF下載
《TensorFlow:實戰Google深度學習框架(第2版)》高清中文版PDF下載 領域旗艦重磅升級 新老谷歌專家聯袂 首度全面支援1.4.x程式碼 大量增補新版獨有核心功能 下載地址:https://pan.baidu.com/s/1uijUhufBV6nXNgz-VxZUGQ備用地址:https:/
演算法競賽入門經典(第2版)習題4-5 IP網路 IP Networks UVa1590
這道題的邏輯很簡單,讀入所有的ip地址,確認總共32位二進位制數中最左一個不同是在哪裡出現的,然後按規則輸出網路地址與子網掩碼即可。 可上傳後我發現它就是wa...還是wa...總是wa...... 然後我在網上找到了例程,設想出了很多測試資料,用fc拍來拍去,總是報告“找
《Java開發實戰1200例》(第2卷)學習筆記—TCP套接字
Socket基礎 例項307:建立伺服器套接字 -通過ServerSocket類建立繫結到指定埠的伺服器套接字物件,然後呼叫ServerSocket類的accept()方法監聽客戶端的連線。 全部程式碼如下: import java.awt.Bo
演算法競賽入門經典(第2版)習題3-5 謎題(Puzzle) Uva227
C++編寫 #include<iostream> using namespace std; int main() { int x = 2, y = 1; char Pu
學習《Spring實戰(第4版)》第5章,按照書上的程式碼來敲的,可是報404
學習《Spring實戰(第4版)》第5章,按照書上的程式碼來敲的,可是tomcat起來之後,輸入url報404。工程檔案結構如下:檔案內容如下:tomcat能起來,但是輸入url報404,學習一直卡在這裡:希望看到的大神能解答一下,謝謝
演算法競賽入門經典(第2版)習題4-5 IP網路UVa1590
#include <stdio.h> #include <string.h> int twoip[1005][35]; void changetwo(int num, int i, int j) { int q, chu = num; //printf("%d %d %d\n",
數據庫系統工程師教程(第2版)目錄
體系結構 多媒體 觸發 評估 實現 決策 可靠性 邏輯結構設計 視頻 北漂不易,為了所謂的“綠卡”,也為了以後能夠讓為孩子創造更好的條件;同時也為了充實下自己,終於下定決心,努力吧。 先從軟考開始《數據庫系統工程師教程》中級,以下純手碼,共勉 第
精通CSS:高級Web標準解決方式(第2版)
avi css dsm table 段落 空元素 支持 :after med 精通CSS:高級Web標準解決方式(第2版) 跳轉至: 導航、 搜索 層疊重要度:(也就是說。用戶!important能夠覆蓋inline style)
PostgreSQL即學即用(第2版)pdf
pla 通過 3.3 back 系統文件 pga 靈活 多條 ext 下載地址: 網盤下載 內容簡介 · · · · · ·本書將幫助你理解和使用PostgreSQL 這一開源數據庫系統。你不僅會學到版本9.2、9.3 和9.4中的企業級特性,還會發現PostgreSQ