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