【问题标题】:import module in parent and child class在父类和子类中导入模块
【发布时间】:2018-03-29 13:20:38
【问题描述】:

我有一个 import _ from lodash 的父类,然后在父类中导入的另一个类也是 import _ from lodash。捆绑的 js 也会有两次 lodash 代码。

//Parent Class
import Component from 'react';
import _ from 'lodash';
import Child from './Child';
class Parent extends Component{
   // using lodash here
} 

// Child class
import Component from 'react';
import _ from 'lodash';
class Child extends Component{
   // using lodash here
}

我正在使用 webpack 来捆绑代码 .. 捆绑的文件会有两次 lodash 代码吗? 如何理解进口? 如果是这样..如何防止这种情况发生? 我认为模块只导入一次,即使它被导入两次..只有它的单个实例会存在?是真的吗?

【问题讨论】:

  • 你为什么不检查你的包大小?
  • @YuryTarabanko ohhh .. 我还没有想过这个 ..thanx 很多启发。会检查的。

标签: javascript reactjs webpack ecmascript-6 es6-modules


【解决方案1】:

Webpack 3 或更高版本在进程捆绑时立即运行重复数据删除算法。 如果你使用 webpack plugins 配置中使用 new webpack.optimize.DedupePlugin()

我建议你通过这个例子导入 lodash 函数,因为你可以只加载必要的函数并减少 bundle 内存使用:

import { isEmpty, findIndex } from 'lodash';
import isEmpty from 'lodash/isEmpty';
import findIndex from 'lodash/findIndex';

【讨论】:

  • DedupePlugin 甚至不需要,因为lodash 指的是两个模块中的同一个包。
  • 有一个错字,isEmpty
  • @estus,嗯,在哪里? _.isEmpty(value) - 来自 lodash 网站?
  • @ArtemMirchenko 所以 lodash 将被导入两次..但是 webpack 会删除重复的代码?
  • @Uchit Kumar 就正确我而言@estus lodash 指的是两个模块中的相同包。 webpack 也对你的模块进行重复数据删除。我编辑了我的答案,lodash 导入是正确的。
猜你喜欢
  • 2012-05-15
  • 1970-01-01
  • 2020-12-06
  • 2021-12-15
  • 2011-02-11
  • 1970-01-01
  • 1970-01-01
  • 2016-10-31
  • 2011-10-15
相关资源
最近更新 更多