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、import
和export
命令只能在模塊的頂層,不能在代碼塊之中(比如,在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}) => { // ...· });