65.9K
CodeProject 正在变化。 阅读更多。
Home

#javascript Require.js 与 CommonJS / AMD 模块以及 #angularjs

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2014年3月17日

CPOL

2分钟阅读

viewsIcon

13539

#javascript Require.js 与 CommonJS / AMD 模块以及 #angularjs

我最近回复了关于require.js 与 browserify 的一则 Twitter 讨论。


Angular.js 和 AMD

最近,我尝试将一些 AMD 模块集成到一个 angularjs 应用程序中。我没有花太多时间在上面,但我的印象是集成并不直接。

在这个 Twitter 线程中,@tbranyen 指出,使用 angular 依赖注入注解,我可以轻松地重用现有的require.js 模块。我必须在我的下一个项目上尝试一下。

AMD 与 CommonJS

首先,我必须说,我理解 CommonJS 支持者的观点,但require.js 配置文件给了我额外的能力……

requirejs 的一个很棒的特性是你可以创建不同的执行上下文。这意味着你可以,例如,将同一模块的不同版本加载到两个不同的上下文执行中。这可能非常强大。

我正在我的 js-utils 项目中使用它,使其只是一个模块仓库,而没有硬性依赖。这意味着 js-utils node_modules 文件夹只会包含很少的引用。

var requirejs = require('requirejs');

requirejs = requirejs.config({

    /// isolate this context
    context: 'context1',

    /// use local packages, located on node_modules
    nodeRequire: require,

    /// modules baseurl
    baseUrl: __dirname,

    /// the lookup paths
    paths: [ ... ]

});

我不认为自己是require.js 的粉丝,因为

  • 我知道它的复杂性需要更大的学习曲线,而这并不总是必要的。
  • 我知道 browserify 更简单,并且与 node 模块兼容。
  • 我知道它的语法可能非常冗长。
  • 我知道 r.js 需要很多改进。
  • 我知道 r.js 源码映射几乎没用(变量和函数已经被压缩)。

但我同时也知道

  • 我可以在require.js 配置文件中创建复杂的依赖关系
  • 我可以在require.js 配置文件中创建友好的别名
  • 我可以通过更改配置文件轻松更改依赖项的版本
  • 我可以使用不同的执行上下文

如果我说错了什么,请告诉我,因为我真的很想听听您对此事的想法!

@aetheon

访问 www.divhide.com 以获取更多信息、联系方式和有关 Web 开发的最新消息。
blog.divhide.com 查看其他博客文章。

Divhide 的目标是遵循 HTML5 运动并贡献能够证明技术质量的应用程序。
请随时 联系 divhide

© . All rights reserved.