node.js快速入門(一)
一、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的一些特性。
相關文章
- Node.js核心入門(一)Node.js
- JS快速入門(一)JS
- 如何快速入門一門語言
- RabbitMQ(一):RabbitMQ快速入門MQ
- Node.js入門教學之一Node.js
- Solon詳解(一)- 快速入門
- 一文快速入門DockerDocker
- Spring Boot (一)快速入門Spring Boot
- SpringBoot快速入門(一)Spring Boot
- TinyXML快速入門(一)(二)(三)XML
- 快速排序快速入門排序
- 【入門指南】node.jsNode.js
- webpack 快速入門 系列 —— 實戰一Web
- Objective C 快速入門學習一Object
- 《Node.js入門經典》一1.2 使用Node.js能做什麼Node.js
- 自學前端如何快速入門?怎麼快速入門前端?前端
- SQL快速入門 ( MySQL快速入門, MySQL參考, MySQL快速回顧 )MySql
- MySQL 快速入門MySql
- mysqlsla快速入門MySql
- Pipenv 快速入門
- Envoy 快速入門
- mongodb快速入門MongoDB
- Spark 快速入門Spark
- zookeeper 快速入門
- MQTT 快速入門MQQT
- Lumen快速入門
- Webpack快速入門Web
- RabbitMQ快速入門MQ
- QT快速入門QT
- makefile快速入門
- CSS快速入門CSS
- Markdown快速入門
- Docker快速入門Docker
- mybatis快速入門MyBatis
- Nginx快速入門Nginx
- TypeScript快速入門TypeScript
- TypeScript 快速入門TypeScript
- phpunit 快速入門PHP