在浏览器端管理多个NPM模块

时间:2013-01-09 02:30:26

标签: browser requirejs npm browserify

好吧,我看了看,看起来并没有看到一个看起来像我的问题,也没有一个完全满足我需要的项目。这可能是因为我做了一些疯狂的事情,而且我也要求一些困难的事情。但我想看看别人的想法。

我正在构建我的第一个大型单页面应用程序。我设置它的方法是将其分解为许多NPM模块。我喜欢这个,因为NPM为构建纯粹的节点运行单元测试提供了一个很好的环境,一种方法可以将我的一些代码重用于我们公司的其他项目,并强制分离关注点。这是一般的想法:

  • 核心数据模型库
  • 核心UI库
  • 一个伪造的库,它根据以上两个提供单独的UI组件......
  • ......另一个......
  • ...等我的应用程序的每个子应用程序
  • 一个非常小的中央项目,将上述提供的所有组件一起拉到一个接口中

这意味着很多库,以及许多常见的依赖项(Underscore,moment,EventEmitter2等)。

现在我需要弄清楚如何将所有代码放入浏览器中。理想情况下,我想要一些具有 browserify 特性的东西(将模块和依赖关系整合到单个文件中以减少资源回调),但是有一些 requirejs 的异步加载DNA(我宁愿不必预先加载我的整个应用程序;能够在用户导航时调用块是有用的)。

但是,我在调和上述内容时遇到了麻烦。我得到了需要尝试做的事情,但每次我尝试将它用于已经构建的NPM模块(不是AMD模块,虽然我很高兴以AMD-ish方式编写该中心项目)但我真的很困惑这种感觉并不是真正意义上的。对于单页面应用程序,它似乎只是将所有内容解析为一个文件,因为我的动态资源是完整的依赖项而不是单个文件?当然,Browserify的唯一目的是将Hulk Smashing所有代码整理到一个文件中。我可以使用Browserify单独捆绑每个NPM模块,但后来我复制了每个模块的公共依赖项。

我看了很多其他项目,他们似乎都比捆绑方面更能解决客户端问题。我在这里缺少什么?

[在管道梦模式中,我也喜欢注入,部分原因是它是由LinkedIn编写的(在我的脑海中有良好的声誉),还有它的localStorage缓存。] < / em>的

0 个答案:

没有答案