我正在尝试设置一个大型javascript项目的最方便的解决方案。
要求是:
令我惊讶的是,事实证明这是一项非常重要的任务。 使用AMD时,我遇到了以下问题:
当我不使用AMD时,我会遇到其他问题:
所以我正在考虑一个解决方案:
它包含一个定义require( <deps>, <factory> )
的小脚本和一个实现基本模块定义和注入的`define(,,)函数。它不会实现任何异步加载或具有不匹配依赖关系的脚本排队!
此外,我将使用命名模块模式定义任何模块,而不是使用匿名模块。即使这会牺牲最小的便携性。
现在我可以将 requirejs 或那个微小的依赖注入器与手动<script src=""></script>
加载结合使用。当使用后一个选项时,我仍然需要使用以下内容注册加载的非amd库:
define( 'raphael', [], function() { return Raphael; })
你怎么看?我做得很清醒吗?重新发明轮子?不必要的复杂?
我想我可以使用 almond (https://github.com/jrburke/almond)来满足上述目的。
答案 0 :(得分:0)
装载凉亭组件不能轻易完成。例如,拉斐尔无法在不修改源
的情况下使用AMD加载
您可以使用requirejs中的shim配置来加载通常不是AMD可加载的模块。 (或raphael是一个非常特殊的案例?)
De requirejs优化器将所有内容构建到一个文件中,不允许选项从站点脚本中分离库。这似乎是一件理智的事情。
那不是真正的imho。阅读http://requirejs.org/docs/optimization.html#wholemultipage