Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 导入es6模块的最佳方式是什么?_Javascript_Reactjs_React Router_Es6 Modules - Fatal编程技术网

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";