標籤:有趣 載入 標準 全域變數 包管理 ports 編寫 mon code
1.nodejs簡介:
1.Node不是js應用,而是js運行平台。用戶端js通過瀏覽器和v8引擎聯絡到了一起,伺服器端js用Node和v8又牽起了小手,所以說Node是運行平台,類似於用戶端的瀏覽器。Node採用c++語言編寫,v8引擎也是c++寫的。Node為神馬用c++寫呢?這是個有趣的故事,詳見《深入淺出Nodejs》.
2.模組機制:
說模組機制之前,先說下CommonJS.CommonJS是一種規範。原來js規範比較薄弱,不利於js大規模應用:主要有以下的缺陷:
2.1:js沒有模組系統,沒有原生的支援密閉範圍或依賴管理。
2.2:js沒有標準庫,除了核心庫以外,沒有檔案系統的API,沒有IO流API.
2.3:js沒有標準介面,沒有web server 或者資料庫的統一介面。
2.4:js沒有包管理系統,不能自動載入和安裝依賴。
於是乎就有了CommonJS規範,就是為瞭解決以上問題,Node.js就是這種規範的實現。Node自身實現了require方法作為其引入模組的方法,同時NPM也是基於這種規範。
3.模組的簡單定義及應用:
寫一個circle.js
1 var PI=Math.PI;2 exports.area=function(r){3 return PI*r*r;4 }5 exports.zhouchang=function(r){6 return 2*PI*r;7 }
寫一個testCircle.js
1 var circle=require("./circle");2 console.log("erea:"+circle.area(1)+"zhouhcang:"+circle.zhouchang(1));
執行結果:
require是匯入;exports是匯出,內部方法原理是由node自身實現的,在es6之前node匯入匯出用這兩個實現,es6出現後,export;import成為主流。
ES6發布的module並沒有直接採用CommonJS,甚至連require都沒有採用,也就是說require仍然只是node的一個私人的全域方法,module.exports也只是node私人的一個全域變數屬性。
nodejs從0到1(Node簡介+模組機制)