摘要:使用一個事件驅動的非阻塞式的模型,讓它輕量而高效。也就是說提供了用編寫服務器的可能性,這種服務器具有令人難以置信的性能。正如官方聲明所說是一個使用與瀏覽器相同引擎的運行時。這意味著有兩個發布版本穩定版和試驗版。
本文轉載自:眾成翻譯
譯者:網絡埋伏紀事
鏈接:http://www.zcfy.cc/article/1748
原文:https://blog.risingstack.com/node-hero-tutorial-getting-started-with-node-js/
這是 Node.js 系列教程 Node Hero 的第一篇文章。在這些章節中,將學習如何上手 Node.js 以及如何使用它交付軟件產品。
本教程從基礎開始 - 不需要以前有 Node.js 知識。本教程的目標是讓你入門 Node.js,確保你可以理解如何用它來編寫應用程序,所以如果有不清楚的,請馬上問我們。
目錄
開始使用 Node.js
使用 NPM
理解異步編程
第一個 Node.js 服務器
Node.js 數據庫教程
Node.js request 模塊教程
Node.js 項目結構教程
Node.js 身份驗證 - 使用 Passport.js
Node.js 單元測試教程
調試 Node.js 應用程序
Node.js 安全教程
如何部署 Node.js 應用程序
監控 Node.js 應用程序
在第一篇教程中,將學習什么是 Node.js,如何在電腦上安裝它,如何開始使用它 - 這樣在下一章我們就可以做實際開發。我們開始吧!
Node.js 概述官方 Node.js logo
Node.js 是一個建立在 Chrome 的 JavaScript 引擎 V8 之上的 JavaScript 運行時。Node.js 使用一個事件驅動的、非阻塞式的 I/O 模型,讓它輕量而高效。
也就是說:Node.js 提供了用 JavaScript 編寫服務器的可能性,這種服務器具有令人難以置信的性能。正如官方聲明所說:Node.js 是一個使用與 Google Chrome 瀏覽器相同 JavaScript 引擎 V8 的運行時。但是這還不足以支撐 Node.js 的成功 - Node.js 還使用了專注于異步 I/O 的多平臺支持庫 libuv。
官方 libuv logo
從開發者的觀點來看,NodeJS 是單線程的 - 但是在幕后,它是用 libuv 來處理線程、文件系統事件、實現事件循環、使 Node.js 具有線程池特征 等等。大多數情況下,我們不會直接與它交互。
安裝 Node.js要得到最新的 Node.js 執行文件,可以訪問 Node.js 官網:https://nodejs.org/en/download/。
用這種方法,很容易開始 - 但是如果以后要添加更多 Node.js 版本,最好是從使用 Node 的版本管理器 nvm 開始。
一旦安裝了 NVM,就可以使用很簡單的 CLI API 來與 Node.js 交互了。
安裝 Node.js 版本nvm install 4.4
然后,如果想看看試驗性版本:
nvm install 5
要校驗 Node.js 的啟動和運行,請執行:
node --version
如果一切順利,就會返回當前活動的 Node.js 執行文件的版本號。
使用 Node.js 版本如果正在開發一個支持 Node.js v4 的項目,可以用如下命令開始使用它:
nvm use 4
然后可以用如下命令切換到 Node.js v5:
nvm use 5
好了,現在我們知道了如何安裝和在 Node.js 版本之間切換 - 但是這有何意義?
自從 Node.js 基金會成立,Node.js 就有一個發布計劃。這與 Linux 基金會的其它項目很相似。這意味著有兩個發布版本:穩定版和試驗版。在 Node.js 中,帶有長期支持(LTS)的穩定版是以偶數開始(4,6,8...),而試驗版是從奇數開始(5, 7...)。我們推薦在生產環境中用 LTS 版本,而用試驗版嘗試新東西。
Hello World如果你的操作系統是 Windows,請使用 nvm-windows。
要開始使用 Node.js,先在終端中試試!只需要鍵入 node,就可以啟動 Node.js:
$ node >
好了,下面我們試著打印點什么:
$ node > console.log("hello from Node.js")
一旦敲了回車,就會得到下面這樣的信息:
> console.log("hello from Node.js") hello from Node.js undefined
用這個界面隨便玩玩 Node.js - 通常會在這里嘗試點小代碼片段,因為我不想把它們放到一個文件中。
*
是時候創建我們的 Hello Node.js 應用了!
首先創建一個 index.js 文件。打開 IDE(Atom、Sublime、Code 都行),創建一個新文件,然后存為 index.js。完成后,復制如下代碼片段到該文件中:
// index.js console.log("hello from Node.js")
要運行該文件,只需再次打開終端,轉到你存放 index.js 文件的目錄,然后執行 node index.js 命令。你會看到它會生成與前面一樣的輸出 - 在終端上直接打印字符串。
模塊化你的應用程序現在你已經有了 index.js 文件,該升級一下游戲了!下面我們創建更復雜的應用,基于可讀性和可維護性的目的,將源代碼分成多個 JavaScript 文件。打開 IDE(Atom、Sublime、Code 都可以),創建如下目錄結構(帶有空文件),但是暫時忽略 package.json,我們將在下一步自動生成它:
├── app | ├── calc.js | └── index.js ├── index.js └── package.json
每個 Node.js 項目都是從創建一個 package.json 文件開始 - 可以把它當作是應用程序及其依賴的 JSON 表示。它包含了應用程序的名稱、作者,以及運行應用程序所需的所有依賴。我們打算在后面使用 NPM 一章中再講解依賴。
可以在終端中使用 npm init 命令,以交互式的方式生成 package.json 文件。
鍵入回車后,會被要求給幾個輸入,比如應用程序的名稱、版本、描述等等。不要擔心,只管敲回車,直到得到了 JSON 片段,以及提問 is it ok?。最后一次敲回車,package.json 就被自動生成了,放在應用程序的文件夾中。如果在 IDE 中打開該文件,就會看到跟如下代碼片段很相似的代碼:
{ "name": "@risingstack/node-hero", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo "Error: no test specified" && exit 1", "start": "node index.js" }, "author": "", "license": "ISC" }
給 package.json 添加一個 start 腳本是一個好實踐 - 一旦你像上例一樣這樣做了,就可以用 npm start 啟動應用。如果要把應用程序部署給 PaaS 提供者,那么就很方便了 - 它們會識別它,然后用它啟動你的應用程序。
現在回到我們創建的第一個文件 index.js。我建議讓這個文件保持很瘦 - 只請求應用程序本身(來自你之前創建的 /app 子目錄下的 index.js 文件)。復制如下腳本到 index.js 文件,然后存盤:
// index.js require("./app/index")
現在到了開始創建實際應用程序的時候了。打開 /app 文件夾下的 index.js 文件,創建一個很簡單的示例:數字數組相加。在本例中,index.js 會只包含我們要加的數字,執行計算的邏輯需要放在另一個模塊中。
將如下腳本粘貼到 /app 目錄下的 index.js 中。
// app/index.js const calc = require("./calc") const numbersToAdd = [ 3, 4, 10, 2 ] const result = calc.sum(numbersToAdd) console.log(`The result is: ${result}`)
現在將實際的業務邏輯粘貼到同一文件夾下的 calc.js 文件中。
// app/calc.js function sum (arr) { return arr.reduce(function(a, b) { return a + b }, 0) } module.exports.sum = sum
要檢查你是否成功,就保存這些文件,打開終端,鍵入 npm start 或者 node index.js。如果你所有東西都做對了,會得到答案:19。如果出錯了,就仔細檢查一下控制臺日志,根據日志找到問題所在。
接下來在下一章使用 NPM 中,我們會看看如何使用 JavaScript 的包管理器 NPM。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/84984.html
摘要:本教程會學習如何正確組織一個項目的結構,從而在應用程序開始增長時避免混亂。項目結構的五個基本規則組織項目有不少可能的方式并且每種已知的方式都有其興衰。過去在,我們有機會創建各種規模的高效應用程序,也獲得了大量關于項目結構注意事項的見解。 本文轉載自:眾成翻譯譯者:網絡埋伏紀事鏈接:http://www.zcfy.cc/article/1756原文:https://blog.rising...
摘要:是一種設計用于關系型數據庫的查詢語言。另一方面,數據庫在最近十年變得相當流行。大多數數據庫都有驅動程序可以用,它們在上也有庫。我們已經完成了在中使用數據庫所必須知道的所有基礎知識。 本文轉載自:眾成翻譯譯者:網絡埋伏紀事鏈接:http://www.zcfy.cc/article/1751原文:https://blog.risingstack.com/node-js-database-t...
摘要:異步編程在傳統編程實踐中,大多數操作都是同步發生的。中的異步編程異步是一種輸入輸出處理的形式,它允許在傳輸完成之前,其它處理能繼續進行。 本文轉載自:眾成翻譯譯者:網絡埋伏紀事鏈接:http://www.zcfy.cc/article/1759原文:https://blog.risingstack.com/node-hero-async-programming-in-node-js/ ...
摘要:網站和使用同樣的注冊庫來顯示模塊以及查找模塊。使用在上一章開始使用中,當創建文件時,已經遇到了。此外,全局命名空間只包含公共模塊。通過引入作用域包來解決此問題。下一步異步編程下一章學習使用回調和實現異步編程的原理。 本文轉載自:眾成翻譯譯者:網絡埋伏紀事鏈接:http://www.zcfy.cc/article/1749原文:https://blog.risingstack.com/n...
摘要:本文轉載自眾成翻譯譯者網絡埋伏紀事鏈接原文本教程中將學習如何使用和實現一個本地身份驗證策略。我們將有一個用戶頁,一個備注頁,和一些與身份驗證相關的功能。下一步下一章主要涉及應用程序的單元測試。你會學習單元測試測試金字塔測試替代等概念。 本文轉載自:眾成翻譯譯者:網絡埋伏紀事鏈接:http://www.zcfy.cc/article/1755原文:https://blog.risings...
閱讀 627·2023-04-25 18:37
閱讀 2786·2021-10-12 10:12
閱讀 8358·2021-09-22 15:07
閱讀 570·2019-08-30 15:55
閱讀 3178·2019-08-30 15:44
閱讀 2198·2019-08-30 15:44
閱讀 1631·2019-08-30 13:03
閱讀 1564·2019-08-30 12:55