首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bower & amd模

Bower & amd模
EN

Stack Overflow用户
提问于 2013-04-02 21:30:25
回答 1查看 1.8K关注 0票数 3

案卷

我试图找到建立一个大型javascript项目的最方便的解决方案。

所需经费如下:

  1. 模块化javascript:必要时只在全局命名空间中的一个对象
  2. 与保龄球组件兼容
  3. 与grunt兼容:通过grunt (contrib-usemincontrib-requirejs)进行构建和部署

令我惊讶的是,这是一项非琐碎的任务。我在使用AMD时遇到了以下问题:

  1. 装货保龄球组件不容易完成。例如,Raphael不能在不修改源代码的情况下使用AMD加载。在使用bower时,这确实不是一个选项,因为我只将依赖项列表推到git。另外:加载不支持AMD的javascript库是有问题的,但是包含多个文件(如jquery)是有问题的;我需要将这些文件合并起来。
  2. requirejs优化器将所有内容都构建到一个文件中,不允许从站点脚本中分离库。似乎是一件明智的事。

当我不使用AMD时,我遇到了其他问题:

  1. 如何控制大型项目中的依赖关系?

可能的解决办法

所以我在考虑一种解决方案:

  1. 保持便携,不要强迫AMD对未来的用户
  2. 防止全局命名空间混乱
  3. 与保龄球兼容
  4. 允许usemingrunt中构建全部

它将由一个定义require( <deps>, <factory> )的小脚本和一个实现基本模块定义和注入的‘`define(,,)函数组成。它不会实现任何、异步加载、或具有不匹配依赖项的脚本队列!

此外,我将使用命名模块模式来定义任何模块,而不是使用匿名模块。尽管这将牺牲最少的可移植性。

现在,我可以使用、requirejs、或那个微小的依赖注入器以及手动的<script src=""></script>加载。在使用后一个选项时,我仍然需要使用如下所示的方式注册已加载的非amd库:

代码语言:javascript
复制
define( 'raphael', [], function() { return Raphael; })

你认为如何?我是不是在做些理智的事?重新发明方向盘?不必要的复杂?

更新

我想我可以用杏仁( almondhttps://github.com/jrburke/almond)来达到上述目的。

EN

回答 1

Stack Overflow用户

发布于 2013-07-18 07:33:08

装货保龄球组件不容易完成。例如,如果不修改源,就不能使用AMD加载Raphael。

您可以使用requirejs中的shim来加载通常不是AMD可加载的模块。(或者拉斐尔真的是个特例?)

requirejs优化器将所有内容都构建到一个文件中,不允许从站点脚本中分离库。似乎是一件明智的事。

那不是真的,伊霍。读取http://requirejs.org/docs/optimization.html#wholemultipage

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

https://stackoverflow.com/questions/15774775

复制
相关文章

相似问题

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