Javascript 导入es6模块的最佳方式是什么?
在我看来,这种方式更好、更有效:Javascript 导入es6模块的最佳方式是什么?,javascript,reactjs,react-router,es6-modules,Javascript,Reactjs,React Router,Es6 Modules,在我看来,这种方式更好、更有效: import stuff from 'library/stuff' 所以我不是导入整个库,我只是导入了应该更快的模块 但当我使用react router dom执行此操作时,例如,我会收到警告,说我应该这样做: import {Link } from 'react-router-dom' 否则我会得到警告 Warning: Please use `require("react-router-dom").Link` instead of `
import stuff from 'library/stuff'
所以我不是导入整个库,我只是导入了应该更快的模块
但当我使用react router dom
执行此操作时,例如,我会收到警告,说我应该这样做:
import {Link } from 'react-router-dom'
否则我会得到警告
Warning: Please use `require("react-router-dom").Link` instead of `require("react-router-dom/Link")`. Support for the latter will be removed in the next major release.
这是违反直觉的,因此导入es6模块的第一种或第二种方法的更好方法是什么??
import { Link } from 'react-router-dom'
这是正确的方法。我认为演出不会有太大差别
导入始终加载整个模块,创建所有导出的值,并解析导入的绑定。仅使用一个或所有导出的绑定并不重要。导入声明使用的语法并不重要
有关更多详细信息,请查看此链接:
这取决于您的环境
// Import all from utils
import utilities from "utils";
// Import only com1 of the utilities
import { com1 } from "utils";
import com1 from "utils/com1";
生产中构建
这是树抖动,树抖动是JavaScript上下文中常用的消除死代码的术语。
在生产版本中,我们可以配置webpack来“摆脱”ES6模块中未显式导入的导出,从而使这些生产包更小
如果您使用的捆绑程序支持树抖动,您可以安全地使用命名导入,并且仍然可以自动获得优化的捆绑大小,但是…
在开发环境中
文件可能包含完整的库,这会导致启动时间变慢。那么这个更快:
//Faster
import com1 from "utils/com1";
不管警告如何,即使是
react router dom/Link
也能工作吗?@SILENT是的,我认为它能工作嗯,我不知道。这确实会产生影响,但如果您使用webpack,树抖动应该可以消除这些差异。什么是树抖动?简而言之,由于树抖动,所有来自react router dom的“未使用”导出不会捆绑到生产构建中。你可以在
import { com1 } from "utils";