gpt4 book ai didi

reactjs - webpack如何处理导入同一个模块的多个文件React

转载 作者:行者123 更新时间:2023-12-03 13:06:50 25 4
gpt4 key购买 nike

我有一个 React 应用程序,其中有许多组件导入相同的模块。 webpack 是否会为每个请求的文件导入每个模块一次,从而导致重复的代码(在这种情况下,仅针对两个组件每次导入两次)?我正在考虑重写组件,以便子组件不需要 React 模块,但也许我正在解决一个不存在的问题。如果导致重复的代码,我希望避免多次导入相同的 React 模块。

组件 1

import React from "react";
import { Link } from "react-router";
import ReactLogo from "elements/ReactLogo";

export default class MainMenu extends React.Component {
render() {
return <div>
<ReactLogo type="svg" /> <ReactLogo type="png" /> <ReactLogo type="jpg" />
<h2>MainMenu:</h2>
<ul>
<li>The <Link to="home">home</Link> page.</li>
<li>Do something on the <Link to="todo">todo page</Link>.</li>
<li>Switch to <Link to="some-page">some page</Link>.</li>
<li>Open the chat demo: <Link to="chat" params={{room: "home"}}>Chat</Link>.</li>
<li>Open the page that shows <Link to="readme">README.md</Link>.</li>
</ul>
</div>;
}
}

组件 2 导入相同的 3 个模块。

import React from "react";
import { Link } from "react-router";
import ReactLogo from "elements/ReactLogo";

export default class MainMenu extends React.Component {
render() {
return <div>
<ReactLogo type="svg" /> <ReactLogo type="png" /> <ReactLogo type="jpg" />
<h2>MainMenu:</h2>
<ul>
<li>The <Link to="home">home</Link> page.</li>
<li>Do something on the <Link to="todo">todo page</Link>.</li>
<li>Switch to <Link to="some-page">some page</Link>.</li>
<li>Open the chat demo: <Link to="chat" params={{room: "home"}}>Chat</Link>.</li>
<li>Open the page that shows <Link to="readme">README.md</Link>.</li>
</ul>
</div>;
}
}

最佳答案

不,webpack(类似于 browserify 和其他模块 bundler )只会捆绑一次。

每个 React 组件都会获得自己的作用域,当它需要/导入另一个模块时,Webpack 将检查所需的文件是否已包含在包中。

所以不会,它不会导致重复的代码。但是,如果导入一些外部打包库,则可能会出现一些重复的代码。在这种情况下,您可以使用 Webpack 的重复数据删除插件来查找这些文件并对其进行重复数据删除。更多信息请参见:https://github.com/webpack/docs/wiki/optimization#deduplication

关于reactjs - webpack如何处理导入同一个模块的多个文件React,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33313662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com