摘要:前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點分為新聞熱點開發教程工程實踐深度閱讀開源項目巔峰人生等欄目。對該漏洞的綜合評級為高危。目前,相關利用方式已經在互聯網上公開,近期出現攻擊嘗試爆發的可能。
前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點;分為新聞熱點、開發教程、工程實踐、深度閱讀、開源項目、巔峰人生等欄目。歡迎關注【前端之巔】微信公眾號(ID:frontshow),及時獲取前端每周清單;本文則是對于半年來發布的前端每周清單中的 Node.js 相關的教程實踐與開源項目的盤點,可以查看這里獲得往期清單或者其他盤點篇。
教程實踐掌握 Node.js 核心模塊之文件系統:本文介紹 Node.js 核心模塊中與文件系統、文件流等相關的部分,同時還介紹了實際開發中常用的第三方文件庫。本文首先介紹了基本的讀取與寫入操作,然后介紹了權限控制、監聽等功能,最后討論了使用 graceful-fs、mock-fs、lockFile 等優秀的第三方庫來輔助開發。( https://parg.co/bMj )
《關于Node.js存在反序列化遠程代碼執行漏洞的安全公告》:近日,國家信息安全漏洞共享平臺(CNVD)收錄了Node.js反序列化遠程代碼執行漏洞(CNVD-2017-01206,對應 CVE-2017-594)。攻利用漏洞執行遠程執行操作系統指令,獲得服務器權限。由于目前驗證代碼已經公開,極有可能誘發大規模網站攻擊。Node.js反序列化模塊node-serialize庫中的unserialize()函數未做安全處理,該漏洞通過傳遞調用JavaScript IIFE函數表達式的方式實現遠程任意代碼執行的效果。攻擊者可通過遠程攻擊獲得當前服務器運行環境權限,由于實際部署中node.js運行環境較多為操作系統root權限,因此可完全控制服務器主機。CNVD對該漏洞的綜合評級為“高危”。目前,相關利用方式已經在互聯網上公開,近期出現攻擊嘗試爆發的可能。不過根據原作者表述,實際上這個庫在 GitHub 上一共只有 20 個 star,還有幾個是漏洞文章發布后引來的,而且下載量也是非常少。如果想要避免此類安全問題,需要解決的就是確保用戶輸入的安全。方法比如通過安全傳輸方式(內網 & 加密)傳輸序列化字符串、使用如 RSA 等簽名算法對字符串進行完整化校驗。
《一次一個微優化,改進Node.js應用的吞吐量》:本文是多個提高 Node.js 應用吞吐量的小優化技巧介紹,包括盡可能地使用聚合 IO 操作,以批量寫的方式來最小化系統調用的次數、需要將發布的開銷考慮進內,清除應用中不同的定時器、CPU 分析器能夠給你提高一些有用信息,但是并不能完整地反饋整個流程、謹慎使用 ECMAScript 高級語法,特別是你還未使用最新的 JavaScript 引擎或者類似于 Babel 這樣的轉換器的時候、要洞察你的依賴樹的組成并且對你使用的依賴進行適當的性能評測。當我們希望去優化某個包含了 IO 功能的應用性能時,我們需要對于應用耗費的 CPU 周期以及那些妨礙到應用并行化執行的因素了如指掌。本文則是分享作者在提升 Apache Cassandra 項目中的 DataStax Node.js 驅動時的一些思考與總結出的導致應用吞吐量降級的關鍵因素。
《并發與并行:理解 Node.js 中 IO 底層機制》:本系列希望能幫助開發者深入了解開發并發應用的相關知識,而本文則是著眼于相對基礎的操作系統級別的調度、應用的 IO 這些知識。
《Node.js 社區的發展之道:質量與速度并重》: Node.js 社區的核心目標之一就是在快速迭代的同時保證代碼質量,新發布的版本務必與之前的版本保持相同的穩定性,避免造成生產環境下應用的崩潰。Node.js 社區并沒有一味的尋求妥協,而是不斷突破自己,從而在保證變更速度的同時達成較高的質量要求。文本則是 Node.js 社區對于他們發布版本、變更流程以及自動化測試、性能測試等多方面的介紹。
《為何使用 Node.js ?》:本文來自于 Node.js 的技術專家 Tomislav Capan,此文最早發布于 2013 年,詳細介紹了 Node.js 的內部原理,并且論述了 Node.js 適用的業務場景與典型的范模式。( http://suo.im/3sFwvm )
《你應該知道的關于 Node.js 中模塊導入的知識》:在 Node.js 開發中我們時刻都在于其模塊機制打交道,而本文作者則深入淺出地介紹了 Node.js 中負責處理模塊依賴的兩個核心模塊:require 與 module;并且介紹了不同的導入對象在 Node.js 中實際的遞歸處理流程以及最終在 module 中形成的元數據描述。( https://parg.co/bQl )
《Node.js 應用監控實踐指南》:本文介紹生產環境下 Node.js 應用監控實踐指南,包括了監控的意義、監控的對象、目前開源的監控解決方案以及一些 SaaS 解決方案等。( https://parg.co/bhb )
《使用 Faker.js 為 Node.js 應用創建模擬數據》:在應用開發中我們往往會頭疼于如何構建大量的隨機數據,特別是那些符合某些固定模式的數據,我們可能會要用這些數據仿制 RESTful 接口、進行單元測試等等。而 Faker.js 則為我們提供了這樣的隨機數據生成器。( https://parg.co/bhU )
《Node.js 運行時介紹》:本文是一篇不錯的 Node.js 入門介紹的文章,包括了 Node.js 中常見的概念知識、JavaScript 并發模型以及基于 Event Loop 的實現、Node.js 內置的對象,以及 Node.js 緣何取名為 Node.js 等等。( https://parg.co/b4I )
《TypeScript 在 Slack 的實踐分享》:維護大型的跨平臺的 JavaScript 代碼庫是一件非常具有挑戰性的工作,無論是從 Chrome 的 JavaScript 中傳遞對象給 Objective-C 或者單純的接受來自 Node.js 中的回調結果,你都需要保證不同的代碼對于通訊對象的期望之間的一致性。而本文即是在開發跨平臺多終端的應用中,Slack 使用 TypeScript 來約束類型,從而避免意外的類型不一致導致的崩潰的實踐經驗分享。( https://parg.co/bRR )
《Node.js 中 Object Streams 的終極指南》:Node.js 中的流為我們提供了強大的功能,允許我們異步地處理輸入與輸出,或者在多個獨立步驟中進行數據轉換。而本文則是首先回顧了流相關的理論,然后介紹了如何像 Gulp 那樣進行對象流的轉換操作。( https://parg.co/bfV )
《在 Node.js 應用中如何使用 ESLint》:ESLint 是開源的 JavaScript Linting 工具,它能夠幫助開發者解決 JavaScript 無類型語言本身帶來的一些錯誤。ESLint 遵循組件化的設計思想,它允許開發者動態地設置使用的規則,而本文即是介紹基礎的 ESLint 環境搭建與使用方法的文章。( https://parg.co/bN4 )
《8 小時內學習 Node.js》:Node.js 是基于 Google Chrome V8 引擎的 JavaScript 框架,其能夠用于開發類似于視頻直播、單頁應用等 IO 密集型的 Web 項目。而本文則是提供了完整的從零到一的 Node.js 學習路線圖,包含了基礎的環境構建、Console 使用、核心模塊使用、基本的 Web 服務器搭建等等內容。( https://parg.co/bNy )
《掌握 Node.js 核心模塊之文件系統》:本文介紹 Node.js 核心模塊中與文件系統、文件流等相關的部分,同時還介紹了實際開發中常用的第三方文件庫。本文首先介紹了基本的讀取與寫入操作,然后介紹了權限控制、監聽等功能,最后討論了使用 graceful-fs、mock-fs、lockFile 等優秀的第三方庫來輔助開發。( https://parg.co/bMj )
《使用 Electrino 減少近 99% 的應用大小》:Electro 是非常不錯的利用 Web 技術開發跨平臺桌面應用的運行時,不過其缺陷在于打包的應用中往往需要攜帶 Node.js 與 Chromium 的完整框架,導致了即使是最簡單的 HelloWorld 應用也有近 115MB。而 Electrino 提供了類似于 Electron 的接口,不過使用系統自帶的 Web 運行時來替代 Chromium,從而保證最后打包出來的應用僅有原來的 0.1% 大小。Electrino 適用于那些不依賴于操作系統本身功能的應用,項目也處于開發狀態。( https://parg.co/bM2 )
《調試 Node.js 應用的最佳工具》:調試,也就是尋找與修復軟件中存在問題的過程一直是 Node.js 項目構建過程中的挑戰之一,而本文則是介紹了如何利用那些優秀的工具來輔助進行 Node.js 代碼調試。本文首先介紹日志相關內容,恰當的日志能夠幫助開發者在生產環境中迅速定位到錯誤所在;然后本文介紹了如何在開發環境中直接調試 Node.js 應用。( https://parg.co/bMB )
《Node.js 根本沒有 float:浮點反序列化錯誤背后的故事》:在 Node.js 中,當我們把一個浮點數序列化,再反序列化,居然出錯了,這是為什么呢?作者通過刨根問底的追查,發現 Node.js 根本沒有 float!( https://parg.co/bMX )
《編寫安全的 Node.js 代碼》:本文是對于 Danny Grander 演講的總結,他首先回顧了如何黑掉有漏洞的 Node.js 應用,同時也深度闡述了數個流行的 npm 包中存在的安全威脅;最后作者給出了修復這些漏洞以及在未來應用開發中保證 Node.js 代碼安全性的建議。( https://parg.co/bVL )
《需要掌握的 Node.js Streams 相關知識》:Node.js steams 一直以來都被詬病難以理解與使用,近年來也有不少的開發者創建了封裝庫以便于使用 Node.js streams;不過本文追本溯源,著重于介紹 Node.js Streams 的基本語法并且理清常見的誤解。本文首先以簡單的利用 Stream 讀取文件的例子來介紹 Stream 的概念,然后介紹了 Node.js 中四個流以及其具體實現方式。( https://parg.co/bJN )
《N-API:下一代編寫 Node.js 原生模塊的接口》:Node.js 有著非常龐大而又生機勃勃的模塊生態圈,這也是其一直保有活力與魅力的源泉。而現在的很多基于 C/C++ 編寫的原生模塊直接依賴于 V8 或者 NAN 接口,導致了它們缺乏穩定性的暴走,并且需要隨著 Node.js 版本的更迭而不斷變化或者重編譯。而 N-API 則致力于解決這個問題,文本即是對于 N-API 的基本語法與當前狀態的介紹。( https://parg.co/bip )
《Yarn 與 npm5 比較》:隨著 Node.js 8.0.0 一起發布的 npm 5.0.0 不僅在性能上得到了極大提升,還通過引入類似于 yarn.lock 的 package-lock.json 文件來實現所謂可確定的包管理。本文則是介紹了所謂可確定的包管理的具體含義,以及 yarn 與 npm5 各自不同的實現方式與優缺性的比較。( https://parg.co/bir )
《JavaScript 模塊現狀》:近日隨著各大瀏覽器紛紛開始支持 ESM(ECMAScript Moduls),Node.js 中也計劃引入 *.mjs 作為 ESM 的文件擴展名,關于 JavaScript 模塊化的未來發展也在社區引發了熱切討論。本文則是首先介紹了 ESM 在瀏覽器、Webpack 等構件工具以及 Node.js 中未來的實現,然后討論了個人對于 ESM 未來發展以及對于程序開發本身的潛在影響。( https://parg.co/bi0 )
《Node.js 8 中 util.promisify 介紹》:Node.js 8 為我們提供了新的工具函數 util.promisify(),它能夠將某個基于回調的函數封裝為基于 Promise 的函數。本文介紹了 util.promisify() 的基本使用,首先介紹了對于文件讀取寫入相關接口的封裝使用,然后討論了如何引入 async 語法,最后還介紹了自定義 promisify 函數的用法。
《你應該掌握的關于 Node.js 子進程的知識》:Node.js 最初以單進程單線程非阻塞方式提供了強大的性能表現,不過在目前多核時代下僅使用單進程已遠遠不能承載日益增長的應用壓力。本文即介紹在 Node.js 中如何使用 spawn()、exec()、execFile()、fork() 等多進程相關模塊的用法與各自的特點,依次介紹了使用 spawn 來創建實現了 EventEmit 接口的子進程、使用 exec 執行子命令、使用 fork 創建自帶通信信道的子進程等。( https://parg.co/bLq )
16 行代碼構建基于 Node.js 的天氣應用:本文是一篇淺顯易懂的 Node.js 入門實踐介紹,作者利用 Node.js 抓取來自 OpenWeatherMap 的開放數據并且打印在控制臺中。本文依次介紹了如何注冊并且獲得 OpenWeatherMap 的 ApiKey、如何使用 npm 初始化項目、如何利用 request 抓取數據、如何優化命令行交互顯示等等。( https://parg.co/byY )
基于 Prometheus 的 Node.js 應用性能監控:本文致力于幫助已有生產環境下 Node.js 應用的開發者,了解如何利用開源應用 Prometheus 搭建監測平臺;Prometheus 為我們提供了強大的數據壓縮與針對時序數據的快速查詢功能。本文首先討論了 Node.js 應用監控的設計理念與指標,然后對比了當前存在的幾種監控解決方案的優缺點。最后介紹了如何在項目中引入 Prometheus,并且集成 Kubernetes、Grafana 等第三方插件;更多 Node.js 相關資料參考 https://parg.co/be0 。( https://parg.co/bed )
擴展 Node.js 應用:Node.js 設計的初衷之一即是保證其可擴展性,本文則詳細介紹了開發者應該了解的可用于擴展 Node.js 應用的內建工具。本文首先介紹了復制、分解、分割等常用的設計思想,然后討論了如何利用 Node.js 內置的 Cluster 模塊來保證應用的可擴展性與如何提供零停機重啟的特性。
Node.js 實戰第二版:該倉庫是 Azat Mardan 的著作 Practical Node.js 第二版參考的開源發布地址,包含了十二個章節與相關的示范代碼,非常值得一讀。該書依次介紹了 Node.js 環境搭建與 Express.js 初探、基于 Mocha 的單元測試、模板引擎、數據持久化與性能優化、項目調試、部署與發布等章節;更多 Node.js 相關資料參考 https://parg.co/be0 。
使用 Apollo Server 快速開發基于 Node.js 的 GraphQL 服務端:Apollo Server 是由社區維護的開源 GraphQL 服務端,它支持目前主流的 Node.js HTTP 服務端框架:Express、Connect、Hapi、Koa、AWS Lambda、Restify 以及 Micro。本文首先介紹 Apollo Server 遵循著開放、簡單、高性能的原則,然后介紹了基于 Express 的基礎用法以及性能監控等內容;更多 GraphQL 相關資料參考 https://parg.co/b1e 。
swagger-decorator:swagger-decorator 是旨在一處注解多處使用的 JavaScript & Node.js 應用中實體類與方法注解庫,其能夠用于實體類生成與校驗、Sequelize ORM 實體類生成、面向 Koa 的路由注解與 Swagger 文檔自動生成的場景。
基于 Node.js 與 HTML5 的視頻流:本文一步一步地介紹如何構建基礎的 Node.js 接口,并且添加某個路由從而將視頻文件發送給前端。本文首先介紹了 Node.js 中流的基礎概念與如何獲取文件體積、從文件創建流并且獲取塊的大小等基本 API,然后介紹了如何搭建服務器并且添加合適的路由以返回視頻流,最后介紹了前端如何利用 HTML5 的 video 標簽實現視頻播放與控制;更多 Node.js 相關資料參考 https://parg.co/be0 。
Node.js 微服務實踐:微服務架構目前正在大行其道,不過作者發現由于很多人有自己獨到的見解,微服務架構的變種與復雜度在持續增加;作者則希望通過本文使初學者快速地利用 Node.js 開發出簡單的微服務。本文首先介紹了微服務出現的背景以及微服務的五個原則:零配置、高冗余、可容錯、自我修復、自動發現;然后介紹了使用 cote 這個微服務庫一步一步地實現 Node.js 微服務集群,依次創建 Requester、Responder 等基礎組件以最終實現系統中的幾個相互依賴的模塊。更多 Node.js 相關資料參考 https://parg.co/be0 。
Node.js 實踐教程:本教程是希望以一些有名的模塊/功能為基礎, 在實現的過程中講解各項知識點,主要分為控制流、Web、存儲等幾個部分。目前完成的模塊包括 async 介紹、Promise 實現、coroutine 實現、co 模塊介紹、HTTP Client 實現、HTTP Server 實現等;更多 Node.js 相關資料參考 https://parg.co/be0 。
Node.js 如何解析 Form 上傳?:NPM 和 GitHub 里的開源組件幫我們解決了很多繁瑣的工作,但是也讓我們失去了很多深入技術細節的機會。在現有組件無法滿足我們需求的時候,就需要我們來自己動手豐衣足食了。 作者前段時間遇到了一個需要手動解析 Form 表單上傳的機會,也借此為各位解析一下 Node.js 解析 Form 上傳的實現細節。更多 Node.js 相關資料參考 https://parg.co/be0 。
利用 Node.js 構建 API Gateway:隨著現代業務復雜度的增加,微服務的理念正在得到更多的落地實踐;作為微服務架構的重要組成部分,API Gateway 能夠為所有的后端服務提供統一的權限校驗與客戶端協議兼容的抽象層。本文首先介紹了微服務的基礎架構與 API Gateway 的概念,然后介紹了面向前端團隊的 Node.js API Gateway 組成;接下來詳細的分析了 API Gateway 的基礎功能需求:路由與版本、迭代式設計、權限校驗、數據聚合、數據序列化與反序列化、限流與緩存等等,最后討論了基于 Express 的 API Gateway 的實現。更多 Node.js 相關資料參考這里。
利用 std/esm 在 Node.js 開發中使用 ES Modules:隨著主流瀏覽器逐步開始支持 ES Modules 標準,越來越多的目光投注于 Node.js 對于 ESM 的支持實現上;Node.js 擬計劃在 2020 年發布的 9.x 版本中引入內置的 ESM 支持。而近日正式發布的 @std/esm 為我們提供了高性能的 Node.js 中 CommonJS 與 ES Modules 模塊間調用,其能夠作用于 Node.js 4.x 以上版本;它能夠順滑地集成到現有的 Webpack、Babel 環境中,并且支持不同模塊使用不同的依賴版本。不同于目前的解決方案需要是發布編譯之后的 CommonJS 格式的文件,@std/esm 能夠以最小的代價的、按需轉化的、動態緩存的方式來進行源代碼轉化。更多 Node.js 相關資料參考這里。
你看到的 Node.js 權限校驗指南可能都存在著錯誤:權限校驗幾乎是每個服務端應用程序的標配,本文作者在搜索學習 Node.js / Express.js 相關的權限校驗教程時發現大部分都或多或少地存在著問題,因此編撰了這篇文章以提醒其他開發者。常見的誤區可能包括憑證的存儲方式、密碼的重置策略、API Tokens 的生成與校驗、限流等多個方面;更多 Node.js 相關資料參考這里。
開源項目《pkg》:pkg 能夠將 Node.js 項目打包為單個可執行文件,其允許開發者發布商業級應用而不用擔心源代碼泄露的風險。pkg 會自動掃描你的 node_modules,然后將需要用到的本地內容打包到可執行文件中。( https://github.com/zeit/pkg )
doppio: doppio 是基于 TypeScript 0.5.0 版本編寫的 Java 虛擬機(JVM),其支持 Node.js 6.0 以上版本,并且內置了 Java 8 JDK 環境;doppio 是個有趣的嘗試打破瀏覽器語言柵欄的嘗試,瀏覽其源代碼也可以學習如何編寫 Java 虛擬機。
notifme-sdk:notifme-sdk 是用于簡化通知發送流程的 Node.js 庫,它允許我們靈活地集成郵件、短信、推送、WebPush 等不同的渠道來發送通知;notifme-sdk 還允許我們自由注冊服務提供商,內建的 Fallback 與輪詢機制也能進行簡單的容錯,同時 notifme-sdk 還提供了簡單的 UI 控制臺以方便我們僅界面化監控。
《使用 create-graphql-server 快速搭建 GraphQL 服務器》:本文介紹了如何用幾個簡單的命令快速搭建 GraphQL 服務器,其使用 Node.js 作為應用后端、Mongodb 作為數據存儲。( https://parg.co/bfQ )
《Caporal.js》:特性全面的可用于創建 Node.js 命令行工具的框架,包括了幫助信息生成、自動補全等。 ( https://github.com/mattallty/... )
延伸閱讀Node.js 學習與實踐資料索引
深入淺出 Node.js 全棧架構
前端每周清單半年盤點之 React 與 ReactNative 篇
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/87307.html
摘要:感謝王下邀月熊分享的前端每周清單,為方便大家閱讀,特整理一份索引。王下邀月熊大大也于年月日整理了自己的前端每周清單系列,并以年月為單位進行分類,具體內容看這里前端每周清單年度總結與盤點。 感謝 王下邀月熊_Chevalier 分享的前端每周清單,為方便大家閱讀,特整理一份索引。 王下邀月熊大大也于 2018 年 3 月 31 日整理了自己的前端每周清單系列,并以年/月為單位進行分類,具...
摘要:延伸閱讀學習與實踐資料索引與前端工程化實踐前端每周清單半年盤點之篇前端每周清單半年盤點之與篇前端每周清單半年盤點之篇 前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點;分為新聞熱點、開發教程、工程實踐、深度閱讀、開源項目、巔峰人生等欄目。歡迎關注【前端之巔】微信公眾號(ID:frontshow),及時獲取前端每周清單;本文則是對于半年來發布的前端每周清單...
摘要:前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點分為新聞熱點開發教程工程實踐深度閱讀開源項目巔峰人生等欄目。利用降低三倍加載速度自推出之后,很多開發者都開始嘗試在小型項目中實踐,不過尚缺大型真實案例比較。 前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點;分為新聞熱點、開發教程、工程實踐、深度閱讀、開源項目、巔峰人生等欄目...
摘要:前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點分為新聞熱點開發教程工程實踐深度閱讀開源項目巔峰人生等欄目。 前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點;分為新聞熱點、開發教程、工程實踐、深度閱讀、開源項目、巔峰人生等欄目。歡迎關注【前端之巔】微信公眾號(ID:frontshow),及時獲取前端每周清單;本文則是對于...
閱讀 3233·2021-11-18 10:02
閱讀 1936·2021-09-22 10:54
閱讀 2988·2019-08-30 15:43
閱讀 2576·2019-08-30 13:22
閱讀 1575·2019-08-29 13:57
閱讀 1041·2019-08-29 13:27
閱讀 731·2019-08-26 14:05
閱讀 2511·2019-08-26 13:30