命令行窗口
(小黑屏)、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引擎
特點
- 非阻塞、異步的I/O
- 事件和回調函數
- 單線程(主線程單線程,後臺I/O線程池)
- 跨平臺
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
, 位於包的根目錄下,是包的重要組成部分。