Node基礎原理

環境變量

(windows系統中變量path)
    當我們在一個命令行窗口打開一個文件或程序時,
    系統首先會在當前目錄下尋找文件程序,如果找到了則直接打開
    如果沒有找到則會依次到環境變量path的路徑中查找,直到找到爲止
    如果沒有找到則會報錯 xxx不是內部或外部命令,也不是可運行的程序或批處理文件

下載安裝完node之後,在控制檯輸入node -v 若提示以上紅字信息,則需要配置環境變量

環境變量的配置過程:

計算器右鍵屬性 》高級系統設置 》 環境變量 》將安裝node的目錄位置放置在 變量爲path 的值中

注意用;分開

 


進程和線程

進程

  •     ·進程負責爲程序的運行提供必備的環境
  •     ·進程就相當與工廠中的中間

線程

  •     線程是計算機中的最小單位,線程負責執行進程中的程序
  •     線程就想當與工廠中的工人

node.js是一個能夠運行在服務器端運行的代碼,跨平臺的javascript運行環境
node採用Google開發的V8引擎執行js代碼,使用事件驅動、非組塞和異步I/O模型等技術來提高性能,可優化應用程序的傳輸量和規模

 

Node歷史

  1. node版本中偶數爲開發穩定版(生產版本)4 6 8 10 12 。。。
  2. node版本中奇數爲開發測試版(開發版本)5 7 9 11 13 。。。

Node精髓

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

  通過module.exports  導出 成員變量 ,通過 require ()  加載模塊,進行訪問

NodeJs是CommonJS規範的實現,webpack也是以CommonJs的形式來書寫

通過require(" 模塊名稱 "); 進行加載

通過exports導出模塊文件 

require()有兩個作用

  1. 加載文件模塊並執行裏面的代碼
  2. 拿到被加載文件模塊導出的接口對象

exports

  1. 多個接口對象導出:module.exports.屬性 = 值
  2. 單個接口對象導出: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下載地址
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章