node.js快速入門(一)

囬_發表於2020-12-17

一、Node.js簡介

Node.js 是一個基於 Chrome V8 引擎的 JavaScrip 執行環境。 Node.js 使用了一個事件驅動非阻塞式 I/O的模型。

JavaScrip是一種具有函式優先的輕量級,解釋型或即時編譯型的高階程式語言。JavaScript 基於原型程式設計、多正規化的動態指令碼語言,並且支援物件導向、命令式和宣告式(如函數語言程式設計)風格。

Node是一個類似於perl,python,ruby等的一個本地執行環境,理論上可以在它的基礎上開發任何應用,使用expressjs庫,可在node環境下開發高效能web伺服器。

事件驅動是指在持續事務管理過程中,進行決策的一種策略,即跟隨當前時間點上出現的事件,調動可用資源,執行相關任務,使不斷出現的問題得以解決,防止事務堆積。

非阻塞式 I/O,也叫非同步 I/O,顯然對應的就是阻塞式 I/O。阻塞式 I/O 是指,當一個執行緒在執行 I/O 操作時,這個執行緒會阻塞,等待 I/O 操作完成後繼續執行。故使用單執行緒非阻塞式I/O的node的效能優異。但存線上程崩潰的隱患。

二、安裝配置

安裝node.js和npm

sudo apt-get install nodejs
sudo apt-get install npm 
npm 是 Node.js 的包管理工具,用來安裝各種 Node.js 的擴充套件

驗證安裝

$ node -v
v10.19.0  

$ npm -v 
6.14.4       

測試js執行環境

$ vi hlwd.js
console.log("hello world")

$ node hlwd.js
hello world #成功

三、建立伺服器

Node.js 應用是由以下部分組成:

1.引入 required 模組:我們可以使用 require 指令來載入 Node.js 模組。

2.建立伺服器:伺服器可以監聽客戶端的請求,類似於 Apache 、Nginx 等 HTTP 伺服器。

3.接收請求與響應請求 伺服器很容易建立,客戶端可以使用瀏覽器或終端傳送 HTTP 請求,伺服器接收請求後返回響應資料。

分析Node.js 的 HTTP 伺服器

·第一行請求(require)Node.js 自帶的 http 模組,並且把它賦值給 http 變數。
·

·接下來呼叫 http模組提供的函式: createServer 。這個函式會返回 一個物件,這個物件有一個叫做listen 的方法,這個方法有一個數值引數,指定這個 HTTP 伺服器監聽的埠號

引入requred模組

使用 require 指令來載入 http 模組,並將例項化的 HTTP 賦值給變數 http。

vi server.js
var http = require("http");

建立伺服器

使用 http.createServer() 方法建立伺服器,並使用 listen 方法繫結 8888 埠。 函式通過 request, response 引數來接收和響應資料。


var http = require('http');

http.createServer(function (request, response) {

    // 傳送 HTTP 頭部 
    // HTTP 狀態值: 200 : OK
    // 內容型別: text/plain
    response.writeHead(200, {'Content-Type': 'text/plain'});

    // 傳送響應資料 "Hello World"
    response.end('Hello World\n');
}).listen(8888);

// 終端列印如下資訊
console.log('Server running at http://127.0.0.1:8888/');

測試伺服器

以上程式碼我們完成了一個可以工作的 HTTP 伺服器。

使用 node 命令執行以上的程式碼:

$ node server.js 
Server running at http://127.0.0.1:8888/                                                                                        

開啟瀏覽器訪問 http://127.0.0.1:8888/,可以看到一個寫著 "Hello World"的網頁

在這裡插入圖片描述

四、NPM介紹

NPM是隨同NodeJS一起安裝的包管理工具,能解決NodeJS程式碼部署上的很多問題,常見的使用場景有以下幾種:

允許使用者從NPM伺服器下載別人編寫的第三方包到本地使用。

允許使用者從NPM伺服器下載並安裝別人編寫的命令列程式到本地使用。

允許使用者將自己編寫的包或命令列程式上傳到NPM伺服器供別人使用。

常用 NPM 命令

安裝常用的 Node.js web框架模組 express:

本地安裝:將安裝包放在 ./node_modules 下(執行 npm 命令時所在的目錄);可以通過 require() 來引入本地安裝的包。

$ npm install express	

全域性安裝:將安裝包放在 /usr/local 下或者你 node 的安裝目錄;可以直接在命令列裡使用。

$ npm install express -g 

更新模組

$ npm update express

搜尋模組

$ npm search express

解除安裝express模組

$ npm uninstall express

檢視是否解除安裝成功

$ npm ls

清空NPM本地快取

$ npm cache clear可以

檢視某條命令的詳細幫助

npm help <command>

使用package.json

package.json 位於模組的目錄下,用於定義包的屬性。Package.json 屬性說明:

name - 包名。

version - 包的版本號。

description - 包的描述。

homepage - 包的官網 url 。

author - 包的作者姓名。

contributors - 包的其他貢獻者姓名。

dependencies - 依賴包列表。如果依賴包沒有安裝,npm 會自動將依賴包安裝在 node_module 目錄下。

repository - 包程式碼存放的地方的型別,可以是 git 或 svn,git 可在 Github 上。

main - main 欄位指定了程式的主入口檔案,require(‘moduleName’)
就會載入這個檔案。這個欄位的預設值是模組根目錄下面的 index.js。

keywords - 關鍵字

其他命令

#建立模組
$ npm init
#在npm資源庫中註冊使用者
$ npm adduser
#釋出模組
$ npm publish

使用淘寶 NPM 映象

淘寶 NPM 映象是一個完整 npmjs.org 映象,你可以用此代替官方版本(只讀),同步頻率目前為 10分鐘 一次以保證儘量與官方服務同步。

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

之後便可以使用淘寶定製的 cnpm (gzip 壓縮支援) 命令列工具代替預設的 npm,如:

$ cnpm install [name]

五、Node.js REPL

Node 自帶了REPL(Read Eval Print Loop:互動式直譯器互動式直譯器),可以執行以下任務:

讀取 - 讀取使用者輸入,解析輸入的 Javascript 資料結構並儲存在記憶體中。

執行 - 執行輸入的資料結構

列印 - 輸出結果

迴圈 - 迴圈操作以上步驟直到使用者兩次按下 ctrl-c 按鈕退出。

node.js的REPL類似於python終端,所以只做一些簡單補充:

變數宣告需要使用 var關鍵字
使用下劃線_獲取上一個表示式的運算結果

$ node

> var a = 1 +4
undefined
> var sum = _
undefined
> sum
5

REPL 命令

ctrl + c 按下兩次 - 退出 Node REPL。

ctrl + d - 退出 Node REPL.

向上/向下 鍵 - 檢視輸入的歷史命令

tab 鍵 - 列出當前命令

.help - 列出使用命令

.break - 退出多行表示式

.clear - 退出多行表示式

.save filename - 儲存當前的 Node REPL 會話到指定檔案

.load filename - 載入當前 Node REPL 會話的檔案內容。

以上,我們已經能夠初步的使用node.js了,接下來會介紹node.js的一些特性。