<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 功能強大 支持多語言、二開方便! 廣告
                JavaScript 的頂層對象是window, Node的頂層對象是global JavaScript也存在globale, 但是不對外訪問,而使用window對象指向global對象 Node.js 的global.a 得不到,是模塊的變量,不是全局變量 var?a?=?100; //console.log(global.a);?//undefined,global是全局 console.log(a); 在Node.js中,一個文件是一個模塊,每個文件都有自己的作用域 ,使用var聲明的是當前模塊作用域的,而不是全局的。 Node.js 模塊 1. 核心模塊, Node.js提供 2. 文件模塊, 用戶編寫 核心模塊在Node源碼編譯過程,編譯為二進制文件,在Node啟動時,直接加載進內存。 文件模塊運行時動態加載,需要完整的路徑分析、文件定位、編譯,速度較慢。 模塊加載 JavaScript使用 <script>標簽, Node.js使用 require()方法引入。 前端瀏覽器會緩存靜態腳本, Node對導入的模塊也會緩存,緩存的是編譯和執行之后的對象 模塊標識: 1. 核心模塊: http、path 2. . 或 ..開始的相對路徑文件模塊 3. /開頭的絕對路徑文件模塊 4. 非路徑形式的文件模塊 當前路徑以 ./ 開頭 后綴名: 后綴名可以包含,也可以不包含。 不包含則首選查找沒有后綴的文件,在按.js .json .node依次查找。 .node 和 .json文件, 帶上擴展名,可以加快速度。 跨模塊訪問變量: 1. 將變量定義到 global中, 簡單、污染了全局環境,不推薦 2. 使用模塊對象(Module) module.id 模塊的識別符,通常是帶有絕對路徑的模塊文件名。 module.filename 模塊的文件名,帶有絕對路徑。 module.loaded 返回一個布爾值,表示模塊是否已經完成加載。 module.parent 返回一個對象,表示調用該模塊的模塊。 module.children 返回一個數組,表示該模塊要用到的其他模塊。 module.exports 表示模塊對外輸出的值。 module.exports屬性表示當前模塊對外輸出的接口,其他文件加載該模塊,實際上就是讀取module.exports變量 //a.js var a = 100; m module.exports.a = a; //b.js var result = require('./a'); c console.log(result);//'{ a: 100 }' 為了方便,Node為每個模塊提供一個exports變量,指向module.exports。造成的結果是,在對外輸出模塊接口時,可以向exports對象添加方法 console.log(module.exports === exports); 模塊編譯: 不同的文件擴展名,載入方法不同: 1. js 文件, 通過 fs模塊同步讀取文件后編譯執行 2. mode文件,C/C++編寫的擴展文件, 通過dlopen()方法加載 3. json文件, 通過fs模塊同步讀取,用 JSON.parse()解析返回的結果 CommonJs、AMD、CMD、ES6模塊 JavaScript 模塊化 模塊化好處 - 獨立,維護和改動方便 - 可以重復利用 需要解決的問題: 1. 命名沖突 // a.js var a = 1; // b.js var a = 2; 2. 文件依賴 <script src='a.js' type='text/javascript'></script> <script src='b.js' type='text/javascript'></script> 如何解決沖突、依賴 1. 使用命名空間,暴露模塊所有成員 let module = { name: '', hello() { console.log(this.name); } } 2. 立即執行函數+閉包 函數內部有自己獨立的作用域, 外部只能訪問暴露的成員 let module = (function () { let privateName = 'private'; // 私有變量 let privateFn = function () {}; // 私有函數 // 對外暴露的成員 return { name: '111', // 公有屬性 hello() { // 公有方法 console.log(this.name); } } })(); 3. 立即執行函數+類 const People = (function () { let privateName = 'private'; // 私有變量 let fn = function () {}; // 私有方法 return class People { constructor () { this.name = 'likang xie'; // 公有變量 } // 公有方法 sayName() { console.log(this.name); } } })()
                  <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>

                              哎呀哎呀视频在线观看