ES6模块共享类:两种导入方式的可读性与性能疑问
模块导入方式的性能顾虑解答
几乎没有性能顾虑,原因如下:
ES模块的单例机制
ES模块本身是单例加载的——不管你在多少个文件里重复导入main.js,它只会被解析、执行一次,后续所有导入都会直接复用已经加载完成的模块实例,不会重复加载或执行模块代码。所以第一种方式里,background.js同时导入Main和one,并不会导致main.js被加载两次,和第二种重导出方式在模块加载层面没有本质差异。打包工具的自动优化
现在前端项目基本都会通过Webpack、Rollup、Vite这类工具处理模块,这些工具会自动做**树摇(Tree Shaking)**和模块合并优化。不管你用哪种导入方式,工具都会分析依赖关系,剔除未使用的代码,最终打包出的产物体积和执行效率不会有明显差别。
既然第一种方式可读性更强(直接明确依赖来源,无需通过one.js间接查找Main的出处),完全可以优先选择第一种,不用纠结性能问题。
内容的提问来源于stack exchange,提问作者erosman
相关产品推荐
相关产品推荐

