大牛筆記:node.js基礎第一課時

編程語言 JavaScript Node.js Linux 愛攝影的小呆萌 2017-03-31

大牛筆記:node.js基礎第一課時

JavaScript是一個腳本語言,腳本語言都需要一個解析器才能運行,但是node.js採用C++語言編寫而成,是一個Javascript的運行環境。既然不是Javascript應用,為何叫.js呢?因為Node.js是一個Javascript的運行環境。作為Web前端最重要的語言之一,Javascript一直是前端工程師的專利。不過,node.js是一個後端的Javascript運行環境,這意味著你可以編寫系統級或者服務器端的Javascript代碼,交給Node.js來解釋執行。node.js採用了Google Chrome瀏覽器的V8引擎,性能很好,同時還提供了很多系統級的API,如文件操作、網絡編程等。瀏覽器端的Javascript代碼在運行時會受到各種安全性的限制,對客戶系統的操作有限。相比之下,Node.js則是一個全面的後臺運行時,為Javascript提供了其他語言能夠實現的許多功能。它的三大特徵: 模塊化,異步編程,事件驅動

實現http服務器

使用node.js來實現第一個http服務器, 博主是用WebStrom編譯器來編譯的

// 需要引入node的原生模塊"http"var http = require("http");

模塊化

可以參考 http://www.cnblogs.com/dolphinX/p/4381855.html

為什麼會有模塊?

在JavaScript發展初期就是為了實現簡單的頁面交互邏輯,寥寥數語即可。如今CPU、瀏覽器性能得到了極大的提升,很多頁面邏輯遷移到了客戶端(表單驗證等),隨著web2.0時代的到來,Ajax技術得到廣泛應用,jQuery等前端庫層出不窮,前端代碼日益膨脹,這時候JavaScript作為嵌入式的腳本語言的定位動搖了,JavaScript卻沒有為組織代碼提供任何明顯幫助,甚至沒有類的概念,更不用說模塊(module)了,JavaScript極其簡單的代碼組織規範不足以駕馭如此龐大規模的代碼

模塊的好處

既然JavaScript不能handle如此大規模的代碼,我們可以借鑑一下其它語言是怎麼處理大規模程序設計的,在Java中有一個重要帶概念——package,邏輯上相關的代碼組織到同一個包內,包內是一個相對獨立的王國,不用擔心命名衝突什麼的,那麼外部如果使用呢?直接import對應的package即可

import java.util.ArrayList;

遺憾的是JavaScript在設計時定位原因,沒有提供類似的功能,開發者需要模擬出類似的功能,來隔離、組織複雜的JavaScript代碼,我們稱為模塊化。一個模塊就是實現特定功能的文件,有了模塊,我們就可以更方便地使用別人的代碼,想要什麼功能,就加載什麼模塊。模塊開發需要遵循一定的規範,各行其是就都亂套了。

commonjs規範

CommonJS就是為JS的表現來制定規範,因為js沒有模塊的功能所以CommonJS應運而生,它希望js可以在任何地方運行,不只是瀏覽器中。

CommonJS能有一定的影響力,我覺得絕對離不開node.js的人氣,不過,node.js,CommonJS,瀏覽器甚至是W3C之間有什麼關係呢,如下圖所示:

大牛筆記:node.js基礎第一課時

引入url模塊解析路徑

var http = require("http");var url = require("url"); // 原生URL模塊var server = http.createServer(function(req, res){

創建自定義模塊

加載當前目錄的模塊

不加var的變量是全局變量,在模塊內部最好加var。

要導出一個屬性或者方法使用:module.exports

如果是模塊下的方法和屬性使用:module.exports={xx:xx};

如果是想讓模塊直接接受方法就導出函數

例如:

var a = 5; // 模塊裡的變量一定要加上varfunctionaddX(x){ console.log(a + x);

加載非當前目錄的模塊

首先會看當前目錄是否有一個 node_modules ,如果有就看進入裡面查找是否有叫模塊名稱的文件或者是否有叫模塊名稱的文件夾。

如果是模塊名稱的文件夾需要看一下文件夾內部是否有index.js或者package.json中是否有設置mian屬性。

如果當前目錄中沒有node_modules,會向上查找。可以通過:

console.log(module);

輸出

加載原生模塊

大牛筆記:node.js基礎第一課時

擴展

非node項目中也可以使用模塊化開發技術,用得比較多的模塊加載器有:requirejs(CMD),seaJs(AMD)。

npm

它是包(一組模塊的集合)。

npm作為node的包管理器

repl(交互式解釋器)

REPL(Read Eval Print Loop:交互式解釋器)概念

表示一個電腦的環境,類似 Window 系統的終端或 Unix/Linux shell,我們可以在終端中輸入命令,並接收系統的響應。

進入repl方式:終端中鍵入node。

repl處理

表達式運算

可以進行簡單的加減乘除運算,也可以使用變量甚至編寫for循環while語句等等

可以使用下劃線 (_) 獲取表達式的上一次的運算結果

REPL 命令

ctrl c 退出當前終端。ctrl+c 按下兩次,退出 Node REPL

本文由華宇互聯旗下領先品牌樂橙谷轉載!

相關推薦

推薦中...