在javascript中,是否可以部分导入;中间模块;?
我创建了一个包含很多东西文件的东西文件夹,然后在东西文件夹内创建了一个索引,作为“中间模块” 像这样在javascript中,是否可以部分导入;中间模块;?,javascript,ecmascript-6,Javascript,Ecmascript 6,我创建了一个包含很多东西文件的东西文件夹,然后在东西文件夹内创建了一个索引,作为“中间模块” 像这样 // things/thing1.js console.log('thing1 loaded'); const thing1 = () => { console.log('Hi from thing1!'); }; export default thing1; 当我从中间模块导入任何文件时 // anotherFile.js import { thing1 } from '../
// things/thing1.js
console.log('thing1 loaded');
const thing1 = () => {
console.log('Hi from thing1!');
};
export default thing1;
当我从中间模块导入任何文件时
// anotherFile.js
import { thing1 } from '../things';
thing1();
…所有文件都已加载
#控制台输出
装载的东西
thing2加载了当前代码的一般设置方式,不,这是不可能的。无论何时导入模块,它导入的所有内容都将被导入(并且它们的顶级代码将运行)
一个选项是更改thing1
和thing2
模块,以便它们导出函数,这些函数在运行时自行加载-这样,它们的初始化可以按需运行,而不是在导入时运行(仅仅导入所产生的副作用通常不是一个好主意-如果入口点可以单独控制事情何时开始运行,则效果更好):
及
(或者,如果其他模块从index.js
导入,您可以在中间模块中初始化)当前代码的一般设置方式,不,这是不可能的。每当导入模块时,它导入的所有内容都将被导入(并且它们的顶级代码将运行)
一个选项是更改thing1
和thing2
模块,以便它们导出函数,这些函数在运行时自行加载-这样,它们的初始化可以按需运行,而不是在导入时运行(仅仅导入所产生的副作用通常不是一个好主意-如果入口点可以单独控制事情何时开始运行,则效果更好):
及
(或者,如果其他模块从index.js
导入,则可以在中间模块中初始化)使用树摇动删除未使用的导出,检查没有意义的Webpack;您的things/index.js
必须加载其所有模块才能导出它们。唯一的方法可能是使用一些绑定器来最小化JavaScript。使用树摇动删除未使用的导出,检查没有意义的Webpackke sense;您的things/index.js
必须加载其所有模块才能导出它们。唯一的方法可能是使用一些绑定器来最小化JavaScript。
// things/index.js
export { default as thing1 } from './thing1';
export { default as thing2 } from './thing2';
// anotherFile.js
import { thing1 } from '../things';
thing1();
import thing1 from './things/thing1';
import thing2 from './things/thing2';
// things/initThing1.js
export default () => {
console.log('thing1 loaded');
const thing1 = () => {
console.log('Hi from thing1!');
};
return thing1;
};
// anotherFile.js
import { initThing1 } from '../things';
const thing1 = initThing1();
thing1();