關于Node.js

一 Node.js介紹

Node.js是一個基于Chrome V8引擎的ECMAScript運行環(huán)境马澈,其使用了一個事件驅動罚随、非阻塞式I/O的模型垫毙,使其輕量又高效。

1.1 宿主環(huán)境

以網景的Netscape Navigator內置的JavaScript 1.1為藍本,由ECMA-262定義的 ECMAScript 是一種腳本語言標準艾蓝,它對該腳本語言的語法、類型斗塘、語句赢织、操作符等做出明確規(guī)定。


圖片1.png



Javascript是由ECMAScript馍盟、DOM于置、BOM三部分組成,瀏覽器實現了ECMAScript標準贞岭,使其能夠運行于瀏覽器八毯,我們稱瀏覽器為ECMAScript的宿主環(huán)境。


除了可以運行于瀏覽器環(huán)境外瞄桨,ECMAScript還可以運行于Adobe Flash環(huán)境中(稱為Action Script)话速,這時Adobe Flash也是ECMAScript的宿主環(huán)境。
Nodejs是另一種可以運行ECMAScript的宿主環(huán)境芯侥。

1.2 運行Node.js

宿主環(huán)境不同,依據ECMAScript標準實現的腳本的執(zhí)行方式也不同泊交,例如Javascript必須通過script標簽引入,在瀏覽器環(huán)境下才能被執(zhí)行柱查,Nodejs則需要通過命令終端以命令的形式執(zhí)行活合。
圖片:

2.1 基礎語法

Nodejs是ECMAScript的宿主環(huán)境,與瀏覽器中的Javascript類似物赶,所以其基礎語法是一致的,都遵循ECMAScript 的標準語法規(guī)范留晚。
實踐中不同的宿主環(huán)境又會在ECMAScript的基礎上進行擴展酵紫,例如瀏覽器的Javascript就擴展了window、location错维、navigator等對象奖地,在Nodejs中則擴展了一些其他的對象。


Nodejs的擴展,如下:
1赋焕、require 用來加載并執(zhí)行其它腳本文件
2参歹、module用來導出腳本文件的屬性或方法
3、exports 用來導出腳本文件的屬性或方法
4隆判、__dirname 用來獲取當前文件目錄
5犬庇、__filename 用來獲取當前文件的絕對路徑
6僧界、global 全局對象,類似于瀏覽器中的window臭挽。

2.2 ES6

Javascript在設計之初只是用來做簡單的數據較驗捂襟,后來發(fā)展到可以做一些網頁的動態(tài)效果用來增強用戶體驗,再后來ECMA組織負責組織制訂Javascript規(guī)范的制訂欢峰,將其稱為ECMAScript葬荷,伴隨著互聯網的迅速發(fā)展,對ECMAScript提出了更高的要求纽帖,為了適應開發(fā)的需要宠漩,ECMA組織也在不斷的修改完善ECMAScript的標準(如ECMAScript6簡稱ES6)。
然而新的標準所定義的規(guī)范在瀏覽器中的Javascript中并不能得到很好的應用懊直,原因在于瀏覽器種類較多扒吁,開發(fā)者并不能約束用戶必須使用何種瀏覽器,導致瀏覽器高低版本共存是常態(tài)吹截,為了考慮兼容瘦陈,開發(fā)者不得不放棄使用一些高級特性。
Nodejs則不會出現上述情況波俄,Nodejs由統一的團隊組織維護晨逝,通過版本升級方式可以及時跟進ECMAScript的標準,而且多數情況Nodejs是運行于服務端的懦铺,開發(fā)者可以決定使用Nodejs的版本捉貌,很多高級特性可以在Nodejs中得到很好的運用。

2.2.1 塊級作用域

任何一對花括號({})中的語句集都屬于一個塊冬念,在塊中聲明的變量在代碼塊外都是不可訪問的趁窃,稱之為塊級作用域,ES5以前沒有塊級作用域.

2.2.2 let關鍵字

let用于聲明變量(類似于var)急前,其聲明的變量只在當前代碼塊內有效醒陆,實際上是創(chuàng)建了塊級作用域.

2.2.3 const關鍵字

const 用于聲明常量,常量與變量不同裆针,變量聲明后其值可以任意更改刨摩,而常量一旦賦值就不允許被更改.

2.2.4 變量解構賦值

按照某種模式,從數組和對象中提取值世吨,對變量進行賦值這被稱為解構澡刹。
(a) 數組解構賦值
(b) 對象解構賦值

2.2.5 字符串擴展

2.png

2.2.6 數組擴展

3.png

2.2.7 函數擴展

(a) 默認參數,允許為函數指定默認參數
(b) reset參數耘婚,用于獲取多余的參數罢浇,將多余的參數裝到一個數組中
(c) 擴展運算符,它好比 rest 參數的逆運算,將一個數組轉為用逗號分隔的參數序列
(d) 箭頭函數嚷闭,使用“箭頭”(=>) 定義函數

3.1 模塊介紹

Nodejs在ECMAScript的基礎上擴展并封裝了許多高級特性攒岛,如文件訪問、網絡訪問等凌受,使得Nodejs成為一個很好的Web開發(fā)平臺阵子。
基于Nodejs這個平臺將Web開發(fā)常用的一些功能進行封裝,稱為模塊胜蛉。

3.2 系統模塊

在安裝Nodejs時一些模塊自動被安裝挠进,這些模塊大多由Nodejs官方維護,稱這類模塊為系統(核心)模塊誊册,如fs领突、path、os案怯、http等君旦。
模塊被加載后才能使用,Nodejs提供了全局的函數require加載模塊嘲碱。
1金砍、os模塊 獲取當前操作系統信息
2、fs模塊 文件讀寫操作
3麦锯、path模塊 路徑處理

3.3 文件模塊

除了系統模塊外恕稠,還有以文件形式存在的模塊,這些模塊由一些組織或個人根據不同的業(yè)務需求開發(fā)扶欣。
注:模塊也被稱為包鹅巍。

3.4 用戶模塊

1、Nodejs中文件模塊分兩種料祠,一種是.js結尾骆捧,一種是以.json結尾
2、require加載模塊路徑
相對路徑髓绽,如 ./ 或 ../
絕對路徑敛苇,如 E:\nodejs\02day\4-code\23cart 或 / (類unix系統)
直接寫模塊名會被當成系統模塊或加載node_modules目錄的模塊
3、exports和module.exports暴露模塊接口
4顺呕、多文件模塊(也叫包)指某一個功能模塊的集合接谨,通常由多個文件構成,統一到某一目錄集中管理塘匣,并且使用package.json記錄包的相關信息,例如模塊名稱巷帝、版本號忌卤、作者等,可使用npm init根據提示創(chuàng)建

3.5 第三方模塊

到目前為止楞泼,第三方模塊數量已經相當龐大驰徊,為了能夠更好的管理這些模塊笤闯,Nodejs官方提供了一個工具(npm)專門用于管理這些第三方模塊
npm (Node Package Manager) 這個工具隨Nodejs一起被安裝,可以使用 npm -v 檢測是否安裝

4.1 http服務模塊

使用Nodejs系統模塊http可以創(chuàng)建并啟動http服務器棍厂。

4.2 搭建服務器

1颗味、引入http模塊

屏幕快照 2018-02-02 下午3.27.03.png

2、創(chuàng)建http服務
屏幕快照 2018-02-02 下午3.28.43.png

3牺弹、監(jiān)聽端口
屏幕快照 2018-02-02 下午3.29.38.png

4浦马、監(jiān)聽http請求
屏幕快照 2018-02-02 下午3.30.37.png

5、瀏覽器訪問 http://localhost:3000
屏幕快照 2018-02-02 下午3.33.59.png

4.3 處理響應

通過res對象處理響應张漂,如狀態(tài)碼晶默,響應頭,響應主體等


屏幕快照 2018-02-02 下午3.43.38.png

4.4 處理請求

使用req對象處理請求航攒,如請求方式磺陡、請求頭、請求參數漠畜、請求主體等

屏幕快照 2018-02-02 下午3.49.28.png

get 查詢參數,查詢字符串做為地址的一部分,需要使用url模塊進行解析才可以得到

屏幕快照 2018-02-02 下午3.55.56.png

post參數做為請求主體傳遞
屏幕快照 2018-02-02 下午3.59.25.png

4.5 靜態(tài)網站

我們通過瀏覽器所能看到的網頁內容實質上是服務器返回的html字符串币他,瀏覽器進行渲染輸出


屏幕快照 2018-02-02 下午4.03.24.png

瀏覽器解析html標簽過程中,遇到img憔狞、script蝴悉、link、iframe等標答時會再次向服務器發(fā)起請求躯喇,服務器也需要做出響應


屏幕快照 2018-02-02 下午4.07.44.png

4.5.1 路徑

路徑是描述位置的一種方式辫封,遵循一定規(guī)則,即路徑都有一個起點稱之為“根”廉丽,以“/”或“\”做為分隔符倦微,使用“.”和“..”分別表示當前級和上一級。路徑分為絕對路徑和相對路徑正压。
將以“根”開始欣福,使用“/”或“\”分隔的路徑稱為絕對路徑。
將以“.”或“..”開始焦履,使用“/”或“\” 分隔的路徑稱為相對路徑拓劝。
1、文件系統路徑
操作系統上的文件都是存儲在磁盤中的嘉裤,使用路徑可以準確確定到某個文件的位置郑临。
文件系統中盤符(windows)或“/”(類unix)為路徑的“根”,使用分隔符“/”或“\”分隔的是真實存在的目錄名稱和文件名屑宠。
2厢洞、網絡路徑
網絡路徑即url,用來標識互聯網資源位置的一種方式,通常由協議躺翻、服務器地址丧叽、路徑、文件名構成公你。
網絡中服務器地址開始為路徑的“根”(用“/”)表示踊淳,使用分隔符“/”或“\”分隔的不一定是真實的目錄名稱和文件名。
網絡中的“根”路徑可以通過服務器軟件映射到文件系統中的任意位置陕靠,例如 Apache 配置documentRoot更網站根目錄迂尝。
目錄不等路徑
根+目錄+分隔符+文件名 格式
E:\asdf\sadf\aa.txt 文件系統的
http://localhost/dsaf/ads/index.html 網絡系統的
判斷路徑位置應從路徑本身出發(fā),而不是站在目錄的角度觀察懦傍。
在文件系統中目錄和文件都是真實存在的雹舀,路徑與目錄和文件的關系是一一對應的,以目錄角度確定路徑不出有問題粗俱。
但是網絡中目錄和文件不一定真實存在说榆,路徑與目錄和文件不一定是一一對應的關系,以目錄角度確定路徑就會出問題寸认。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末签财,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子偏塞,更是在濱河造成了極大的恐慌唱蒸,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灸叼,死亡現場離奇詭異神汹,居然都是意外死亡,警方通過查閱死者的電腦和手機古今,發(fā)現死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門屁魏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人捉腥,你說我怎么就攤上這事氓拼。” “怎么了抵碟?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵桃漾,是天一觀的道長。 經常有香客問我拟逮,道長撬统,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任敦迄,我火速辦了婚禮恋追,結果婚禮上粒竖,老公的妹妹穿的比我還像新娘。我一直安慰自己几于,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布沿后。 她就那樣靜靜地躺著沿彭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尖滚。 梳的紋絲不亂的頭發(fā)上喉刘,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音漆弄,去河邊找鬼睦裳。 笑死,一個胖子當著我的面吹牛撼唾,可吹牛的內容都是我干的廉邑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼倒谷,長吁一口氣:“原來是場噩夢啊……” “哼蛛蒙!你這毒婦竟也來了?” 一聲冷哼從身側響起渤愁,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤牵祟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后抖格,有當地人在樹林里發(fā)現了一具尸體诺苹,經...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年雹拄,在試婚紗的時候發(fā)現自己被綠了收奔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡办桨,死狀恐怖筹淫,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情呢撞,我是刑警寧澤损姜,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站殊霞,受9級特大地震影響摧阅,放射性物質發(fā)生泄漏。R本人自食惡果不足惜绷蹲,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一棒卷、第九天 我趴在偏房一處隱蔽的房頂上張望顾孽。 院中可真熱鬧,春花似錦比规、人聲如沸若厚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽测秸。三九已至,卻和暖如春灾常,著一層夾襖步出監(jiān)牢的瞬間霎冯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工钞瀑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沈撞,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓雕什,卻偏偏與公主長得像缠俺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子监徘,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內容