環境變量
(windows系統中變量path)
當我們在一個命令行窗口打開一個文件或程序時,
系統首先會在當前目錄下尋找文件程序,如果找到了則直接打開
如果沒有找到則會依次到環境變量path的路徑中查找,直到找到爲止
如果沒有找到則會報錯 xxx不是內部或外部命令,也不是可運行的程序或批處理文件
下載安裝完node之後,在控制檯輸入node -v 若提示以上紅字信息,則需要配置環境變量
環境變量的配置過程:
計算器右鍵屬性 》高級系統設置 》 環境變量 》將安裝node的目錄位置放置在 變量爲path 的值中
注意用;分開
進程和線程
進程
- ·進程負責爲程序的運行提供必備的環境
- ·進程就相當與工廠中的中間
線程
- 線程是計算機中的最小單位,線程負責執行進程中的程序
- 線程就想當與工廠中的工人
node.js是一個能夠運行在服務器端運行的代碼,跨平臺的javascript運行環境
node採用Google開發的V8引擎執行js代碼,使用事件驅動、非組塞和異步I/O模型等技術來提高性能,可優化應用程序的傳輸量和規模
Node歷史
- node版本中偶數爲開發穩定版(生產版本)4 6 8 10 12 。。。
- node版本中奇數爲開發測試版(開發版本)5 7 9 11 13 。。。
Node精髓
- 在node中,一個js文件就是一個模塊
- 在node中,每一個js文件中的js代碼都是獨立運行在一個函數中,而不是全局作用域,所以一個模塊中的變量和函數在其他模塊中無法訪問
通過module.exports 導出 成員變量 ,通過 require () 加載模塊,進行訪問
NodeJs是CommonJS規範的實現,webpack也是以CommonJs的形式來書寫
通過require(" 模塊名稱 "); 進行加載
通過exports導出模塊文件
require()有兩個作用
- 加載文件模塊並執行裏面的代碼
- 拿到被加載文件模塊導出的接口對象
exports
- 多個接口對象導出:module.exports.屬性 = 值
- 單個接口對象導出:module.exports = 值
exports === module.exports , 所以可以省略module
但是最終返回的是module.exports
啓動node(在當前文件下執行)
node app.js(也就是文件名)
驗證node中,js代碼是否獨立運行在一個函數中
驗證方式1
函數中 聲明的變量 var 是 局部變量,而沒有var則是隱士全局變量,即爲全局變量 所以在var的情況下 報錯 str is not defined
而在沒有var的情況下正常輸出了 node
驗證方式2
js在瀏覽器端可以通過window對象找到全局屬性,但是js在node中並沒有window對象,而有global全局對象
驗證方式3
通過arguments.callee 用於引用該函數的函數體內當前正在執行的函數,看到真正的函數內部
當node在執行模塊中的代碼時,它會首先在代碼的最頂部,添加如下代碼
function (exports,require,module,__filename,__dirname){
在代碼的最底部,添加如下代碼
}
實際上模塊中的代碼都是包裝在一個函數中執行的,並且在函數執行時,同時傳進了5個實參
- exports:該對象用來將變量或函數暴露到外部
- require:用來引入外部的模塊
- module:代表的是當前模塊本身,exports就是module的屬性
- __filename:當前模塊的完整路徑
- __dirname:當前模塊所在文件夾的完整路徑
exports 和 module.exports
通過exports 只能使用.的方式來向外暴露內部變量
exports.xxx = xxx
而module.exports既可以通過.的形式,也可以直接賦值
module.exports = {}
module.exports.xxx = xxx
node在使用模塊名字來引入模塊時,會首先在當前目錄的node_modules中查找是否含有該模塊,如果有,則直接使用,沒有則向上一級目錄的node_modules中查找,直到找到爲止
直到找到磁盤的根目錄,如果依然沒有,則報錯
包和NPM
包(package)
CommonJS包規範由包結構和包描述文件兩個部分組成
包結構:用於組織包中各個文件
包描述文件(package.json):描述包的相關信息,以供外部讀取分析
NPM(Node Package Manager)包管理工具
CommonJS包規範是理論,NPM是其中一種實現、
對於Node而言,npm幫助其完成了第三方模塊的發佈、安裝和依賴等。
藉助npm,node與第三方模塊之間形成了一個很好的生態系統
npm常用命令:
- npm init 初始化 package.json 文件
-
npm version 查看版本(npm,node,v8引擎等)
- npm search 包名 : 搜索包
- npm install / i 包名: 下載包
- npm remove / r 包名 :刪除包
- npm install 包名 --save : 安裝包並添加到依賴中
- npm install : 下載當前項目所依賴的包
- npm install 包名 -g :全局安裝的包,一般都是一些工具
- npm config set registry 地址 : 設置npm下載地址