js-ES6學習筆記-module(3)


1、如果想設置跨模塊的常量(即跨多個文件),或者說一個值要被多個模塊共享,可以采用下面的寫法。

// constants.js 模塊
export const A = 1;
export const B = 3;
export const C = 4;

// test1.js 模塊
import * as constants from './constants';
console.log(constants.A); // 1
console.log(constants.B); // 3

// test2.js 模塊
import {A, B} from './constants';
console.log(A); // 1
console.log(B); // 3

2、如果要使用的常量非常多,可以建一個專門的constants目錄,將各種常量寫在不同的文件里面,保存在該目錄下。

// constants/db.js
export const db = {
  url: 'http://my.couchdbserver.local:5984',
  admin_username: 'admin',
  admin_password: 'admin password'
};

// constants/user.js
export const users = ['root', 'admin', 'staff', 'ceo', 'chief', 'moderator'];

然后,將這些文件輸出的常量,合並在index.js里面。

// constants/index.js
export {db} from './db';
export {users} from './users';

使用的時候,直接加載index.js就可以了。

// script.js
import {db, users} from './constants';

3、importexport命令只能在模塊的頂層,不能在代碼塊之中(比如,在if代碼塊之中,或在函數之中)。

這樣的設計,固然有利於編譯器提高效率,但也導致無法在運行時加載模塊。從語法上,條件加載就不可能實現。如果import命令要取代 Node 的require方法,這就形成了一個障礙。因為require是運行時加載模塊,import命令無法取代require的動態加載功能。

因此,有一個提案,建議引入import()函數,完成動態加載。

import()類似於 Node 的require方法,區別主要是前者是異步加載,后者是同步加載。

4、下面是import()的一些適用場合。

(1)按需加載。

import()可以在需要的時候,再加載某個模塊。

(2)條件加載

import()可以放在if代碼塊,根據不同的情況,加載不同的模塊。

(3)動態的模塊路徑

import()允許模塊路徑動態生成。

5、import()加載模塊成功以后,這個模塊會作為一個對象,當作then方法的參數。因此,可以使用對象解構賦值的語法,獲取輸出接口。

import('./myModule.js')
.then(({export1, export2}) => {
  // ...·
});

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM