帶你3分鐘瞭解Node.JS

命令行窗口

(小黑屏)、CMD窗口、終端、shell

使用

開始菜單 --> 運行 --> CMD --> 回車

常用指令

  • dir 列出當前目錄下的所有文件
  • cd 目錄名 進入到指定的目錄
  • md 目錄名 創建一個文件夾
  • rd 目錄名 刪除一個文件夾
  • 目錄
    . 表示當前目錄
    .. 表示上一級目錄

  • 環境變量(windows系統中變量)

path

			C:\work\jdk\jdk1.7.0_75/bin;
			%CATALINA_HOME%/bin;
			C:\work\soft\tools\AppServ\Apache24\bin;
			C:\work\soft\tools\AppServ\php5;
			C:\Users\lilichao\AppData\Local\Programs\Fiddler;
			C:\work\environment\Egret\Egret Wing 3\bin;
			C:\Users\lilichao\AppData\Roaming\npm;
			C:\Program Files\MongoDB\Server\3.2\bin;
			C:\Users\lilichao\Desktop\hello
			
  • 當我們在命令行窗口打開一個文件,或調用一個程序時,
    系統會首先在當前目錄下尋找文件程序,如果找到了則直接打開
    如果沒有找到則會依次到環境變量path的路徑中尋找,直到找到爲止
    如果沒找到則報錯
  • 所以我們可以將一些經常需要訪問的程序和文件的路徑添加到path中,
    這樣我們就可以在任意位置來訪問這些文件和程序了

Node.JS

  • Node.js是一個能夠在服務器端運行JavaScript的開放源代碼、 跨平臺JavaScript運行環境。
  • Node採用Google開發的V8引擎運行js代碼,使用事件驅動、 非阻塞和異步I/O模型等技術來提高性能,可優化應用程序的傳 輸量和規模。
  • Node大部分基本模塊都用JavaScript編寫。在Node出現之前, JS通常作爲客戶端程序設計語言使用,以JS寫出的程序常在用 戶的瀏覽器上運行。
  • 目前,Node已被IBM、Microsoft、Yahoo!、Walmart、 Groupon、SAP、 LinkedIn、Rakuten、PayPal、Voxer和 GoDaddy等企業採用。

簡介

  • node是一款對ES標準實現的JS引擎
  • 通過node可以使js在服務器中運行
  • node就是一款使用js編寫的web服務器
  • node底層是使用c++的編寫的
  • node的中js引擎使用的chrome的v8引擎

特點

  1. 非阻塞、異步的I/O
  2. 事件和回調函數
  3. 單線程(主線程單線程,後臺I/O線程池)
  4. 跨平臺

Node的用途

  • Web服務API,比如REST

  • 實時多人遊戲

  • 後端的Web服務,例如跨域、服務器端的請求

  • 基於Web的應用

  • 多客戶端的通信,如即時通信

安裝





模塊化

  • ES5中沒有原生支持模塊化,我們只能通過script標籤引入js文件來實現模塊化一個js文件就是一個模塊
  • 在Node中,每一個js文件中的js代碼都是獨立運行在一個函數中,而不是全局作用域,所以一個模塊的中的變量和函數在其他模塊中無法訪問
  • 在node中爲了對模塊管理,引入了CommonJS規範

模塊的暴露

我們可以通過exports 來向外部暴露變量和方法

  • 只需要將需要暴露給外部的變量或方法設置爲exports的屬性即可
  • 也可以使用module.exports暴露
exports.x = "我是module.js中的x";
exports.y = "我是y";
exports.fn = function () {
	
};

module.exports  = {
	name:"豬八戒",
	age:28,
	sayName:function () {
		console.log("我是豬八戒");
	}
};

在Node中,每一個js文件中的js代碼都是獨立運行在一個函數中,而不是全局作用域,所以一個模塊的中的變量和函數在其他模塊中無法訪問

exports 和 module.exports

  • 通過exports只能使用.的方式來向外暴露內部變量
   exports.xxx = 值
  • 而module.exports既可以通過.的形式,也可以直接賦值
   module.exports.xxx = 值
   module.exports = {}

模塊的引用

在node中,通過require()函數來引入外部的模塊

  • require()可以傳遞一個文件的路徑作爲參數,node將會自動根據該路徑來引入外部模塊

  • 這裏路徑,如果使用相對路徑,必須以...開頭

    • require("./module");
    • require("../module");
  • 我們使用require()引入外部模塊時,使用的就是模塊標識,我們可以通過模塊標識來找到指定的模塊

    • 模塊分成兩大類

      • 核心模塊

        ​ - 由node引擎提供的模塊

        ​ - 核心模塊的標識就是,模塊的名字

      • 文件模塊

        ​ - 由用戶自己創建的模塊

        ​ - 文件模塊的標識就是文件的路徑(絕對路徑,相對路徑)

        ​ 相對路徑使用...開頭

// 引入文件模塊
var md = require("./module");
// 引入核心模塊
var fs = require("fs");

console.log(md);
console.log(fs);

在node中有一個全局對象 global,它的作用和網頁中window類似

  • 在全局中創建的變量都會作爲global的屬性保存
  • 在全局中創建的函數都會作爲global的方法保存

模塊結構

當node在執行模塊中的代碼時,它會首先在代碼的最頂部,添加如下代碼

 function (exports, require, module, __filename, __dirname) {

其次會在代碼的最底部,添加如下代碼

      }

實際上模塊中的代碼都是包裝在一個函數中執行的,並且在函數執行時,同時傳遞進了5個實參

  • exports

    • 該對象用來將變量或函數暴露到外部
  • require

    • 函數,用來引入外部的模塊
  • module

    • module代表的是當前模塊本身
    • exports就是module的屬性
    • 既可以使用 exports 導出,也可以使用module.exports導出
  • __filename

    • g:\BaiduYunDownload\(5)NodeJS\source\01.node\module.js
  • __dirname

    • g:\BaiduYunDownload\(5)NodeJS\source\01.node

  • CommonJS的包規範允許我們將一組相關 的模塊組合到一起,形成一組完整的工具。
  • CommonJS的包規範由包結構包描述文件兩個部分組成。

包結構

  • 用於組織包中的各種文件
  • 包實際上就是一個壓縮文件,解壓以後還 原爲目錄。符合規範的目錄,應該包含如下文件:
    • package.json 描述文件
    • bin 可執行二進制文件
    • lib js代碼
    • doc 文檔
    • test 單元測試

包描述文件

  • 包描述文件用於表達非代碼相關的信息, 它是一個JSON格式的文件
  • package.json, 位於包的根目錄下,是包的重要組成部分。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章