Javascript 为包/库导入星号的良好实践?
我在github的某个地方看到人们导入Javascript 为包/库导入星号的良好实践?,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我在github的某个地方看到人们导入*,我不知道他为什么这样做,例如: import * as React from 'react'; export const doSomething = () => { return React.useMemo(() => { return { something: window.location.href }; }, []); }; 他对其他包裹也做了同样的处理。我们为什么不这样做呢 从“react”导入
*
,我不知道他为什么这样做,例如:
import * as React from 'react';
export const doSomething = () => {
return React.useMemo(() => {
return {
something: window.location.href
};
}, []);
};
他对其他包裹也做了同样的处理。我们为什么不这样做呢
从“react”导入{useMoom}
?使用*
或显式导入的两种建议都是可能的,并将按预期工作。
asterix将导入位于“react”库下的所有组件、挂钩和更多工件,因此在使用
import * from "react";
您可以自由使用任何类型的钩子或组件,而无需显式导入
不过,最好的做法是只导入与应用程序或组件相关的模块
import React, { useMemo } from "react";
这种方法将确保您不会导入未使用的组件,这些组件将对您的捆绑产品造成沉重负担,并将被标记为死代码。好的,为了扩展我的答案,我将说:您有两种选择
import React,{usemo}来自“React”代码>
从“React”导入React代码>
usemo()
<代码>反应。使用备忘录()。所以,是的,你猜到了,第一种选择的时间稍微长一点,但我不认为这是一个问题
这也是material ui展示示例的方式。这也是一种很好的方法(也是我使用的方法)我认为最常见的是从“React”导入React;然后使用React.useMemo()然后答案应该是第二个,只导入您只需要的方法。我不认为*是好的做法,不是吗?是的,使用显式导入比使用
*
更可取,那么*
的用途是什么?什么时候使用它是正确的,因为它是“坏的”?使用*
只会影响你的应用程序包,一些开发人员不介意包的大小或死代码,所以他们无论如何都会使用它。如果您大量使用所有类型的“react”导入,而不是逐个手动导入,您可以简单地使用asterix一次导入所有类型的导入。我个人并不经常使用ASTRIX,但我会考虑使用它,当我需要快速构建一个PoC或代码片断,但不是要去生产的东西。我问你为什么不应该只导入你需要的东西?基本上,较短的导入语句和对所有项目的短调用。既然它是“坏的”,那么它的用途是什么?什么时候使用它是正确的?