首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Webpack用核心模块和子模块构建应用程序

Webpack用核心模块和子模块构建应用程序
EN

Stack Overflow用户
提问于 2016-04-29 12:21:42
回答 1查看 918关注 0票数 8

我正试图用webpack开发一个应用程序,但发现了一个问题。应用程序的堆栈是React + Flux体系结构(ES6语法可用),以及我正在使用的构建系统的堆栈webpack。我想要解决的问题是构建一个应用程序系统的想法,它被分解成位于子目录核心内部的核心模块和子模块。核心系统应该提供基本功能(比如dispatcher、基本Flux动作和核心视图模块),插件应该能够导入核心功能来扩展应用程序。

当前的构建解决方案允许我构建一个应用程序,但我遇到了模块可能被复制的问题。我已经创建了位于核心模块中的registerPlugin插件存储,以及允许在内核内注册不同模块的操作。

核心模块在index.js文件中有插件的入口点,我正在导出可还原的组件和操作(也用于注册插件)。

代码语言:javascript
复制
// core index.js
export * as AppDispatcher from './src/dispatcher/AppDispatcher';
export BaseModel from './src/models/BaseModel';
export registerPlugin from './src/actions/registerPlugin';
// etc..

该文件与每个插件一起导入,并允许我访问这些模块。

代码语言:javascript
复制
// bootstrap plugin / entry point for plugin webpack
import {registerPlugin} from 'core-module';

// plugin index.js
require('./dist/plugin');

另外,每个插件都公开了index.js文件,该文件返回核心的捆绑产品。然后,core简单地抓取该文件,并在引导过程中导入它。

代码语言:javascript
复制
// bootstrap app / entry point for webpack
import 'plugins/plugin-1';
import 'plugins/plugin-2';
...

一切都进行得很好,但后来我发现了(可能)依赖关系复制方面的问题。当我尝试从core调试代码时,似乎调用了已注册的插件存储,但是每个存储都是不同的实例,所以基本上当我在听核心模块中的存储更改时,我没有看到这种变化(因为一些不同的存储已经改变了,这里可能有两个分配器,也许还有两个操作…)。

这是循环依赖的问题吗?有没有办法配置webpack,这样它就不会重复那个动作了?

另外值得一提的是,每个插件都有自己的webpack配置,允许我为插件创建包,这个包是被核心模块抓取的,而webpack的核心模块则是为整个应用程序创建包。

EN

回答 1

Stack Overflow用户

发布于 2016-05-12 08:35:03

为什么不在全球范围内公开您的核心对象?

然后,您可以使用ES6破坏销毁它。

一些人可能会说全局变量是一个糟糕的想法,不使用它们是ES6和commonJs模块背后的主要想法,而且它们是正确的,但是在这种特殊情况下,将核心模块的主要功能公开为单个对象(请不要公开所有东西!)以后会给你省下很多麻烦。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36938257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档