<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                目錄 (づ ̄ 3 ̄)づ=> [TOC] ## 模塊 ### 什么是模塊 >[info]一個JS文件就是一個模塊 NodeJS模塊文件是依據它自己發明的COMMONJS規范來書寫的,一個常見的模塊長這樣: ``` let obj = {}; module.exports = obj; //導出obj ``` ### 模塊化的好處 >[success]低耦合、高內聚、方便維護、解決命名沖突... - 低耦合:本身模塊和其它模塊文件沒有關聯 - 高內聚:相同的邏輯代碼放在一個文件中 - 方便維護:都放到一個文件中的了。。。你說呢 - 解決命名沖突:只要文件名不重復就好 - 方便調用:若果是以前為了解決命名沖突可能導致命名過長,調用這個命名過長的對象下的屬性就很。。。 ### 模塊的引入 >[info]我們可以通過使用require方法來引入一個文件 ``` require('./文件名'); //引入本地模塊 reuqire('模塊名); //引入第三方 ``` 可以發現reuqire時并沒有帶上后綴,這是因為node會幫我們從`.js` `.node` `.json`三種后綴從前往后依次查找,看是否有匹配上的文件。且在當前工程的node_module中沒有找到還會往上查找,直到根目錄。 **注意:** 第三方模塊引入時可以不用帶上`./`。 --- #### 緩存機制 >[warning] 模塊只會被加載一次,這意味著如果被加載的模塊有打印代碼只會打印一次,且如果是在同一個入口文件下的不同文件中多次require一個相同文件,這個被多個不同文件引入的文件其實同一份引用。 ![](https://box.kancloud.cn/a00fff3cadad3b153da5b419a900cb01_1044x510.png) 相對的瀏覽器中的JS引入是不存在緩存機制的 #### 模塊查找鏈 我們可以通過以下方式來查看查找鏈: ``` console.log(module.path); //會打印出當前模塊所有可能的node_module路徑 ``` #### NODE_PATH >[warning] **注意**:需在環境變量中手動設置查詢鏈的頂端NODE_PATH ![](https://box.kancloud.cn/30a5542764dc48796331ddf614a163c6_848x699.png) #### 循環引入 >[warning]有可能會出現這么一種情況,模塊A引入了模塊B,模塊B又引入了模塊A,**那么模塊B引入的模塊A只是模塊A已經讀過的地方(即引入模塊B之前的代碼)** ### 模塊的導出 #### 模塊包裝 >[success] 一個運行在NodeJS下的JS文件會被NODE自動打包成一個匿名函數 ``` function(exports,require,module,__filename,__dirname){ exports = module.exports = this = {}; ... return module.exports; } ``` #### 導出模塊中的內容 ``` let obj = {}; modules.exports = obj; ``` >[danger]**注意:** 導出到一個文件時間上就是把上面NODE打包的匿名函數賦值粘貼到那個文件上,而匿名函數中實際return 的是module.exports ## NPM是什么 >[success] NPM:NODE Package Manager,是NodeJS的包管理工具,我們可以通過NPM來下載各種各樣的第三方模塊或則一個包(多個模塊) ### 常用命令 - npm install(簡寫為i) [-g ][--save-dev(簡寫為-D)] 第三方模塊/包的名字[@版本號] 默認為開發依賴;-D為開發依賴;-g為全局安裝;npm i不帶參數為安裝packge.json上的全部依賴 - npm init [-y] 初始化一個包,-y代表選用默認配置 - npm uninstall [其它參數同install] 卸載一個包 ### 發布一個包 >[danger] 注意發布前要把registry源改回來 ``` npm login/addUsername //登錄/注冊 NPM賬號 npm publish //發布當前工程目錄下的包 npm unpublish 包名@版本號//撤銷發布 ``` ## NRM是什么 >[success] NRM:NODE Registry mannager,是一個NPM包,我們可以通過安裝它來切換NPM的鏡像(源),以達到更好的下載體驗。 ### 常用命令 - npm i -g nrm 安裝nrm - nrm ls 查看所有鏡像 - nrm use 鏡像名 使用選中的鏡像 - nrm test 鏡像速度測試 ### 其它 > 為了解決國內下載速度慢還可以選用兩種方式 #### 安裝cnpm ``` npm i -g cnpm //然后就可以把命令中的npm替換成cnpm其它和npm一樣用 ``` #### 安裝yarn ``` npm i -g yarn //略微不同 詳見npm包 ``` ## NVM是什么 >[success] NVM:NODE Version Manager,node的版本管理工具,也是一個npm包,需要先卸載已經安裝的NPM和NodeJS ### 常用命令 nvm常用命令: nvm install <version> ## 安裝指定版本,可模糊安裝,如:安裝v4.4.0,既可nvm install v4.4.0,又可nvm install 4.4 nvm uninstall <version> ## 刪除已安裝的指定版本,語法與install類似 nvm use <version> ## 切換使用指定的版本node nvm ls ## 列出所有安裝的版本 nvm ls-remote ## 列出所以遠程服務器的版本(官方node version list) nvm current ## 顯示當前的版本 nvm alias <name> <version> ## 給不同的版本號添加別名 nvm unalias <name> ## 刪除已定義的別名 nvm reinstall-packages <version> ## 在當前版本node環境下,重新全局安裝指定版本號的npm包
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看