iKcamp新書上市《Koa與Node.js開發實戰》

来源:https://www.cnblogs.com/ikcamp/archive/2018/12/27/10186752.html
-Advertisement-
Play Games

Node.js 10已經進入LTS時代!其應用場景已經從腳手架、輔助前端開發(如SSR、PWA等)擴展到API中間層、代理層及專業的後端開發。Node.js在企業Web開發領域也日漸成熟,無論是在API中間層,還是在微服務中都得到了非常好的落地。本書將通過Web開發框架Koa2,引領你進入Node.... ...


Koa與Node.js開發實戰

內容摘要

Node.js 10已經進入LTS時代!其應用場景已經從腳手架、輔助前端開發(如SSR、PWA等)擴展到API中間層、代理層及專業的後端開發。Node.js在企業Web開發領域也日漸成熟,無論是在API中間層,還是在微服務中都得到了非常好的落地。本書將通過Web開發框架Koa2,引領你進入Node.js的主戰場!
本書系統講解了在實戰項目中使用Koa框架開發Web應用的流程和步驟。第1章介紹Node.js的安裝、開發工具及調試。第2章和第3章介紹搭建Koa實戰項目的雛形。第4章詳細介紹HTTP基礎知識及其實戰應用。第5章介紹MVC、模板引擎和文件上傳等實用功能。第6~8章介紹資料庫、單元測試及項目的優化與部署。第9~13章介紹從零開始搭建時下火爆的微信小程式前端及後臺管理應用的全部過程,以及最終的伺服器部署,包括HTTPS、Nginx。
本書示例豐富、側重實戰,以完整的實戰項目貫穿全部章節,並提供書中涉及的所有源碼及部分章節的配套視頻教程,將是前端開發人員立足新領域和後端開發人員瞭解Node.js並使用Koa2開發Web應用的得力助手。

前言

Node.js誕生於2009年,到本書出版時已經有近10個年頭。它擴充了JavaScript的應用範圍,使JavaScript也能像其他語言一樣操作各種系統資源,因此,前端工程化開發的大量工具都開始運行在Node.js環境中。由於Node.js採用事件驅動、非阻塞I/O和非同步輸出來提升性能,因此大量I/O密集型的應用也採用Node.js開發。掌握Node.js開發,既能極大地拓寬前端開發者的技術知識面,也能拓展前端開發者的生存空間,從目前前端開發者越來越多的環境中脫穎而出。

由於Node.js僅提供基礎的類庫,開發者需要自主合理地設計應用架構,並調用大量基礎類庫來進行開發。為了提升開發效率和降低開發門檻,相關技術社區涌現出不少基於Node.js的Web框架。

Express框架在Node.js誕生之初出現,並迅速成為主流的Web應用開發框架。在社區中,大量的第三方開發者開發了豐富的Express插件,極大地降低了基於Node.js的Web應用開發成本,同時也帶動了大量的開發者選擇使用Express框架開發Web應用。但Express框架採用傳統的回調方式處理非同步調用,對於經驗不足的開發者來說,很容易將代碼寫成“回調地獄”,使開發的應用難以持續維護。在ECMAScript 6的規範中提出了Generator函數,依據該規範,Express的作者TJ Holowaychukhttps://github.com/tj巧妙地開發了co庫https://github.com/tj/co,使開發者能夠通過yield關鍵詞,像編寫同步代碼一樣開發非同步應用,從而解決了“回調地獄”問題。2014年,他基於co庫開發了新一代的Web應用開發框架Koa,用官方語言來描述這個框架就是“next generation web framework for Node.js”。

社區開發者為Koa開發了大量的插件,與Express相比,兩者的處理機制存在根本上的差異。Express的插件是順序執行的,而Koa的中間件基於“洋蔥模型”,可以在中間件中執行請求處理前和請求處理後的代碼。ECMAScript 7提供了Async/Await關鍵詞,從語法層面更好地支持了非同步調用。TJ Holowaychuk在Koa的基礎上,採用Async/Await取代co庫處理非同步回調,發佈了Koa第2版(簡稱Koa2)。隨著Node 8 LTS(Long Term Support,長期支持)的發佈,LTS版本正式支持ECMAScript 7規範,選擇使用Koa開發框架開發的Node.js Web應用也越來越多,Koa框架逐步取代了Express框架。
儘管目前Koa非常流行,但“純天然”支持ECMAScript 7語法的Node.js 8在2017年10月才正式發佈。目前,市面上介紹Koa的書籍幾乎沒有,大多介紹的是Express框架,本書可以說是第一本介紹Koa的書籍。本書從Node.js基礎、HTTP、Koa框架、資料庫、單元測試和運維部署等方面全方位地介紹了應用開發所應具備的知識體系。通過閱讀本書,讀者可以瞭解Node.js開發的方方面面,減少實際開發中出現的問題。同時,本書的重點章節也提供了線上代碼講解和視頻,讀者可以在閱讀本書的同時,結合線上代碼講解和視頻,更容易地理解本書介紹的知識。

特別感謝杜珂珂、哈志輝、薑帥、李波、李益、盛瀚欽、田小虎、徐磊、閆萌、趙晨雪(排名不分先後)對線上培訓音視頻課程資源的開發和支持。

本書特色

  • 重點章節附帶教學視頻。
    為了便於讀者理解本書的內容,一些基礎、重點的內容配有視頻教程。讀者可以訪問https://ikcamp.com,結合書中內容觀看視頻。
  • 所有源碼托管於GitHub。
    為了降低讀者獲取源碼的難度,本書的所有源碼都托管於GitHub(https://github.com/ ikcamp),讀者也可通過GitHub直接和本書作者溝通。
  • 一線互聯網公司Node.js技術棧實戰經驗總結。
    本書補充了前端開發者所不具備的後端開發技能和規範,介紹瞭如何開發Koa應用,如何通過ORM(Object Relational Mapping,對象關係映射)類庫讀寫資料庫,如何通過單元測試來保障代碼質量,如何通過PM2、CI等方式啟動並部署Node.js應用,以及如何採用日誌、監控來保障線上應用的穩定運行等內容。
  • 典型項目案例解析,實戰性強。
    本書第3篇通過雲相冊小程式開發項目介紹了目前流行的小程式技術,包括小程式登錄流程、掃碼登錄、文件上傳、相冊管理等功能。通過學習本書的相關內容,讀者可以獨立開發時下流行的小程式和其需要的後端服務。

本書知識體系

第1篇 基礎知識(第1~4章)

這部分介紹了開發Koa應用需要具備的預備知識,包括Node.js入門、遇見Koa、路由和HTTP共4個章節。
在第1章中,介紹了Node.js的歷史和發展過程,以及Node.js基礎和環境準備。介紹了NPM(Node Package Manager,Node.js的第三方包管理工具),通過該包管理工具,開發者能夠方便地使用大量的第三方軟體包。本章還介紹了微軟公司推出的免費開發工具:Visual Studio Code編輯器,以及如何使用該編輯器調試Node.js應用。
在第2章中介紹了Koa的發展歷程和作為Koa核心技術的中間件。
在第3章中介紹了路由的概念,以及Koa中最流行的路由中間件koa-router。
在第4章中介紹了HTTP的基礎知識,以及HTTP的後續協議HTTP/2;介紹了在Node.js中如何獲取客戶端傳遞來的數據,如何通過koa-bodyparser中間件獲取請求中的body數據等。

第2篇 應用實戰(第5~8章)

這部分介紹了應用開發各個環節的知識,包含構建Koa Web應用、資料庫、單元測試、優化與部署共4個章節。
在第5章中介紹了MVC架構、模板引擎、靜態資源,以及如何輸出JSON數據,如何通過koa-multer中間件上傳文件等。
在第6章中介紹了資料庫的概念和以MySQL為代表的關係型資料庫,以及如何通過ORM類庫操作MySQL資料庫;介紹了以MongoDB為代表的非關係型資料庫,以及如何在Node.js中操作MongoDB;介紹了以Redis為代表的新型緩存資料庫,以及如何在Node.js中利用Redis實現Session持久化。
在第7章中介紹了Chai斷言庫,它用來檢測單元測試過程中的結果是否符合預期;介紹了Mocha測試框架,使用該框架可以編寫和運行單元測試代碼;介紹了使用SuperTest工具測試HTTP服務,以及通過Nock庫模擬HTTP服務請求響應;最後,介紹了Nyc工具,用以檢查單元測試的覆蓋率、提升代碼質量。
在第8章中介紹瞭如何記錄日誌和統一捕獲異常,以及如何輸出自定義錯誤頁;介紹瞭如何通過PM2、Docker啟動應用,如何通過CI集成發佈應用,如何通過Nginx提供HTTPS支持;介紹瞭如何利用日誌等途徑監控伺服器運行情況,以及如何利用PM2提供的Keymetrics監控雲伺服器。

第3篇 項目實戰:從零開始搭建微信小程式後臺(第9~13章)

這部分通過介紹時下最流行的小程式開發,結合具體的相冊小程式來說明如何開發一個完整的小程式,以及如何部署小程式。其中,彙總本書前面章節的知識介紹了小程式的功能模塊、介面開發、小程式開發、管理後臺開發和服務部署。
在第9章中介紹了小程式應具備的產品功能及如何開發小程式門戶網站。
在第10章中介紹了小程式登錄流程,掃碼登錄的邏輯和實現方式,小程式中用到的介面和後臺管理系統需要的介面。具體包括如何通過中間件來鑒權,如何統一控制後臺管理系統的許可權,如何通過Mongoose來定義數據模型和訪問、存儲數據,如何使用log4js記錄日誌。
在第11章中介紹了開發微信小程式的流程,以及如何藉助微信開發者工具開發小程式。
在第12章中介紹了開發後臺管理系統的整體架構和設計思路,並提供了一套登錄與鑒權的技術方案。
在第13章中介紹了小程式相關服務的線上部署過程,包括對資料庫、Nginx、HTTPS、和Koa服務的部署,具體包括如何通過Nginx實現把多個功能變數名稱解析到同一臺雲伺服器上,如何通過PM2管理應用。

本書適合讀者

  • Web前端開發人員
  • 對Node.js應用感興趣的開發人員
  • Node.js開發的自學者
  • 大中專院校相關專業的教師和學生
  • 相關培訓機構的學員

本書由陳達孚、金晶、乾珺、張利濤、戴亮、周遙、薛淑英編寫。本書涉及的技術知識點較多,作者團隊成員雖竭力爭取奉獻好的作品以使技術得到更好的普及,但難免存在疏漏和不足,讀者如有問題或建議,可以直接到iKcamp的GitHub上留言。本書源碼也可前往GitHub上獲取,地址為https://github.com/ikcamp。本書部分內容配有視頻,可前往https://camp.qianduan.group/koa2/2/0/0觀看。

本書已經在各大電商網站開始上架,感謝對iKcamp的支持!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 轉載請標明出處,維權必究:https://www.cnblogs.com/tangZH/p/10181330.html 該錯誤是在載入so庫的時候出現的,就是找不到so庫。 一、檢查jinLibs目錄下是否有so庫 二、gradle的android{}裡面是否有設置: 三、相容性是否正確: 我們使用 ...
  • 1.vue生命周期的作用是什麼? 2. Vue實現數據雙向綁定的原理:Object.defineProperty()? 3.vue-cli如何新增自定義指令? 4.v-if 和 v-show 區別? 5.mvvm和mvc區別? ...
  • WebWorker 一定程度上可以算得上是瀏覽器中的多線程技術了,在項目中適當使用 Worker 來做一些耗時的操作能大大提高頁面整體流暢度。 Worker的使用也是非常簡單的,通過向 Worker 構造函數傳遞需要在worker中運行的文件路徑作為參數,就可以使得對應的文件運行在worker線程。 ...
  • 背景 最近使用ELK的sentinl進行告警配置,sentinl的郵件通知支持mustache,藉此機會學習了mustache相關知識,記錄在此。 mustache的思想 mustache的核心是標簽和logic less. 標簽: 定義模板的時候,使用了{{name}}、{{ systems}}{ ...
  • 寫前端代碼,尤其是做一個前端框架的時候,經常需要及時知道代碼的大致性能,這時候如果能有個好的辦法能一直看到當前頁面的fps就好了。 整體思路是一秒有一千毫秒,先記錄當前時間作為最後一次記錄fps的時間,通過 requestAnimationFrame 回調不斷給累加fsp計數器,並且判斷上次記錄fp ...
  • 圓角,其css如下 這沒什麼難的,記憶一下即可。但是深入一下,還是很有講究的。 問題1,div寬高皆為100px,border-radius:30px,這個30px是怎麼工作的?換成50px,70px,甚至200px會有什麼反應? 答:等於一個100px的正方形,然後用半徑為30px的圓來過渡邊角, ...
  • Vue 項目在開發時運行正常,打包發佈後卻出現各種報錯,這裡整理一下遇到的問題,以備忘。 1、js 路徑問題 腳手架預設打包的路徑為絕對路徑,改為相對路徑。修改 config/index.js 中 build 節點下 assetsPublicPath,把原來 ‘/’ 改為 ‘./’ 2、img 路徑 ...
  • jQuery是什麼? jQuery是一款優秀的JavaScript庫,從命名可以看出jQuery最主要的用途就是用來做查詢(jQuery=js+Query),正如jQuery官方Logo副標題所說(write less,do more)使用jQuery能讓我們對HTML文檔遍歷和操作、事件處理、動畫 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...