当前位置: 首页 > 面试题库 >

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

令狐建修
2023-03-14
问题内容

我有一个React应用,其中有许多导入相同模块的组件。webpack是否为每个请求它的文件导入每个模块一次,从而导致重复的代码(在这种情况下,每个模块仅对两个组件导入两次)?我正在考虑重新编写组件,以便子组件不需要使用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和其他模块捆绑器)只会捆绑一次。

每个react组件都有自己的作用域,当它需要/导入另一个模块时,webpack将检查所需的文件是否已经包含在捆绑包中。

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



 类似资料:
  • 我正在处理IDE中制作一个Java处理项目,并希望将其传播到多个PDE(处理源代码)文件中。 我无法使用导入将Java处理源代码文件导入为Java类文件。 <代码>配置。pde <代码>项目。pde 返回导入项目/配置无法解析 分别为。 我必须先编译PDE文件吗?是否可以将处理IDE设置为每次运行都自动执行? 太长,读不下去了 拥有此项目文件夹: 如何使用配置中的函数和变量。项目中的pde。pde

  • 我在继承的项目上有以下目录结构: 从或我可以从模型运行此,并且可以正常工作。使用PyCharm时,我可以在。 然而,当我在我的dev服务器上部署它时,这在。我得到错误 PyCharm做了些什么来避开这个问题? 如何在在开发服务器上运行Flask应用程序时是否同时在PyCharm中工作?我通常只使用来自目录。

  • 问题内容: 我经历了许多Python相对导入问题,但是我无法理解该问题/无法正常工作。 我的目录结构是: 当我尝试运行时: 我得到错误 问题答案: 之所以发生这种情况,是因为就Python而言,它们是独立的,无关的软件包。 在与该目录相同的目录中创建一个目录,一切都会按预期进行。

  • 我正在开发一个带有webpack的网站。当我有这样的代码时: 我收到错误 更改为不会导致任何错误。 为什么module.exports导入会导致此错误?使用要求代替有什么问题吗?

  • 我的项目有以下结构: 以下是的部分内容: