Browser 在浏览器端管理多个NPM模块
好吧,我看了又看,没有看到一个像我一样的问题,也没有看到一个完全满足我需求的项目。这可能是因为我在做一些疯狂的事情,我也在要求一些困难的事情。但我想看看别人怎么想 我正在构建我的第一个大型单页应用程序。我设置它的方式是将它分解为多个NPM模块。我喜欢这一点,因为NPM提供了一个很好的环境来构建纯节点运行的单元测试,一种为我们公司的其他项目重用我的一些代码的方法,以及一种强制分离关注点的方法。以下是总体思路:Browser 在浏览器端管理多个NPM模块,browser,requirejs,npm,browserify,Browser,Requirejs,Npm,Browserify,好吧,我看了又看,没有看到一个像我一样的问题,也没有看到一个完全满足我需求的项目。这可能是因为我在做一些疯狂的事情,我也在要求一些困难的事情。但我想看看别人怎么想 我正在构建我的第一个大型单页应用程序。我设置它的方式是将它分解为多个NPM模块。我喜欢这一点,因为NPM提供了一个很好的环境来构建纯节点运行的单元测试,一种为我们公司的其他项目重用我的一些代码的方法,以及一种强制分离关注点的方法。以下是总体思路: 核心数据模型库 核心用户界面库 一个psuedo库,提供基于上述两个 …另一个 …等,
- 核心数据模型库
- 核心用户界面库
- 一个psuedo库,提供基于上述两个
- …另一个
- …等,用于我的应用程序的每个子应用程序
- 一个非常小的中心项目,根据需要将上面提供的所有组件拉到一个接口中
[在白日梦模式下,我也喜欢inject,部分原因是它是由LinkedIn编写的(在我心目中,LinkedIn享有很好的声誉),但也因为它的本地存储缓存。]您认为NPM模块将如何运送到浏览器中。我可以看到如何将节点样式的模块文件重新打包到某个连接块中,但如何将NPM模块转换为在浏览器中运行的模块?一些模块已编译(本机代码)组件/需求。您还必须确保其他模块常用的节点的fs、sys和其他模块也捆绑在一起。我看到您保持理智的唯一方法是在节点中“为浏览器编写代码”。这意味着,对于发送到浏览器的内容,您不依赖节点的本机/NPM。两个答案基本上是相同的“为节点中的浏览器编码”:a)我不依赖任何不纯粹的东西。我需要下划线和EventEmitter2等纯js库。b)例如,Browserify在所有必要的情况下都提供节点stdlib垫片、模拟或传递。在我的情况下,我不需要或利用此功能。太好了。你的(a)(b)基本上允许您在上面以AMD模式编写代码,同时以CommonJS风格编写依赖项“你的项目。目前支持AMD和CommonJS模块的最稳定的构建工具是“r.js”。我正在为PruneJS项目做贡献,该项目试图成为一个更友好的r.js,但PruneJS仍然是测试版。看看“r.js”,谢谢你的推荐;在发布这篇文章之前,我试过r.js,它似乎因为神秘的原因对我感到不安。等我有机会再看一看。