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}) => { // ...· });
时间: 2024-10-23 09:22:02