Tag: requirejs

Ember.js和RequireJS

有没有人有RequireJS和Ember.js很多成功? 看到Ember喜欢把它的结构分配给一个全局对象,我发现它可以真正的与Requirejs对接。 像Ember的LAB.js会更好吗?

为什么在用RequireJS运行Mochatesting时看到“define not defined”?

我想了解如何开发独立的Javascript代码。 我想用testing和模块编写Javscript代码,从命令行运行。 所以我已经安装了node.js和npm以及库requirejs , underscore和mocha 。 我的目录结构如下所示: > tree . . ├── node_modules ├── src │ └── utils.js └── test └── utils.js 其中src/utils.js是我写的一个小模块,使用下面的代码: > cat src/utils.js define(['underscore'], function () { "use strict"; if ('function' !== typeof Object.beget) { Object.beget = function (o) { var f = function () { }; f.prototype = o; return new […]

require.js:访问所有加载的模块

有没有办法访问require.js的所有加载模块? 背景: 我想自动调用我的JavaScript模块的init()函数加载后,请参阅require.js + backbone.js:如何构造具有初始化函数的模块? 没有require.js我打开了我自己的模块存储并调用每个init()函数。 我现在想用require.js来做到这一点。 我知道调用每个加载模块(包括外部库)的my_custom_init_function_favoritecolor_petname_love123是危险的。 我希望这会比手动保存所有模块的清单(以及这些模块的要求)更新更为麻烦。 忘记一个模块init()比拥有自定义函数名称的第三方库更可能(尽pipe后者可能更难以debugging)。 还是有人有一个更好的想法,如何做到这一点?

使用Backbone.js路由器浏览通过require.js模块化的视图

我将我的意见和路由器分开与要求单独的文件。 然后我有一个main.js文件实例化路由器,并呈现我的默认视图。 我的路由器有视图('查看/:id')和编辑('编辑/:id')作为路由。 在main.js中,当我实例化路由器时,我可以硬编码router.navigate('View / 1',true),导航工作正常。 在我的视图文件中,当我点击编辑链接时,我想调用router.navigate('View /'+ id,true),但我不知道我应该怎么做。 我已经成功地调用Backbone.history.navigate('View /'+ id,true),但我不觉得我应该依赖全局Backbone对象。 我尝试通过({路由器:appRouter})到我的意见,所以我可以使用this.options.router.navigate(),但是这不是为我工作。 如果你好奇,下面是我的应用程序的一堆代码: 路由器: define(['./View', './Edit'], function (View, Edit) { return Backbone.Router.extend({ routes: { 'View/:id': 'view', 'Edit/:id': 'edit' }, view: function (id) { var model = this.collection.get(id); var view = new View({ model: model }); view.render(); }, edit: function (id) { var model = […]

RequireJS:有没有办法实现多个基本的URL?

我想使用一个单独的域作为JavaScript框架,它会创build一个基本的需求configuration,我可以从应用程序中增加。 foo.example.com main.js lib/foo-specific.js framework.example.com framework.js <– entry point lib/jquery.js lib/etc… 最好,我希望能够要求“lib / foo-specific”和/或“lib / jquery”,并且path只是很好的解决,但是从我发现的,没有办法做到这一点,除非我为框架中的每个js文件使用特定的path键/值。 目前,我有一个自定义的插件来加载给定的path与不同的基地址(例如fw!lib/jquery ),但如果我想使用text! 插件,它不会工作,插件链不受支持。 请参阅https://github.com/jpillora/js-framework ,了解我目前的使用情况,以及https://github.com/jpillora/prettyprinter的用例。 有没有一个干净的方法来解决这个问题? 或者实现多个基本的URL? 注:我也研究了多个需求实例,但我不认为这将工作,因为我希望应用程序能够访问框架的configuration。

为什么串联的RequireJS AMD模块需要加载器?

我们喜欢RequireJS和AMD在开发过程中,我们可以编辑一个模块,在我们的浏览器中重新加载,并立即看到结果。 但是,当我们将模块连接成一个单独的文件进行生产部署时,显然必须有一个AMD加载器,无论该加载器是RequireJS本身,还是小型合作伙伴“杏仁”,如下所述: http://requirejs.org/docs/faq-optimization.html#wrap 我的困惑是:为什么装载机是必要的? 除非你有非常不寻常的情况,使得你require()在你的模块中进行require()调用,否则看起来一系列的AMD模块可以在没有加载器的情况下连接在一起。 最简单的例子可能是像下面这样的一对模块。 ModA.js: define([], function() { return {a: 1}; }); ModB.js: define(['ModA'], function(A) { return {b : 2}; }); 考虑到这两个模块,似乎一个连接器可以简单地生成以下文本,并且不会给生产服务器或浏览器带来RequireJS或Almond所需的额外带宽或计算负担。 我想象一个产生(我使用V形引号«,»来显示上面两个模块的代码片段已被插入的连接符): (function() { var ModA = «function() { return {a: 1}; }»(); var ModB = «function(A) { return {b : 2}; }»(ModA); return ModB; })(); 就我所知,这将正确地重现AMD的语义,并至less有一些额外的粘连JavaScript。 有没有这样的连接器? 如果不是的话,我是否会觉得自己应该写一个傻瓜 – 是否真的有很less的代码库,它们是用define()编写的简单和干净的模块组成的,而且不需要进一步的require()调用,代码提取?

从CDN采购jQuery?

我正在使用require JS,并想知道使用jQuery的CDN版本的最佳方法。 我听说1.7版本是应该帮助,但不能find一个直接的例子“AMD”。 希望有些RequireJS大师可以帮助我。

捕捉模块加载错误并处理它们

我正在尝试使用require.js加载一些内容。 如果内容不存在,我想赶上错误,并通知用户。 在萤火虫,我可以看到两个错误: “NetworkError:404 Not Found …几秒钟后: var e = new Error(msg + '\nhttp://requirejs.org/docs/errors.html# Load timeout for modules: modules/messages/messages http://requirejs.org/docs/errors.html#timeout 我的代码类似于: require([path], function(content){ //need to catch errors as this will not be called; }); 如何绑定到requirejs事件? 任何想法?

与Firebug / Chrome控制台中的require.js模块交互?

我刚刚开始使用require.js。 我已经成功地包装了jquery,一些插件和几个我自己的模块。 我试图与我的模块(或jQuery)从Firebug(或谷歌浏览器的JS控制台)交互,我没有太多的运气。 从控制台访问这些模块的正确方法是什么?

Shim Twitter Bootstrap for RequireJS

RequireJS 文档说,要支持旧版本的IE,你需要configurationenforceDefine: true 。 所以,如果你想支持Internet Explorer,捕捉加载错误,并通过直接define()调用或填充configuration模块化代码,总是设置enforceDefine为true。 请参阅下一部分的示例。 注意:如果你设置了enforceDefine:true,并且你使用了data-main =“”加载你的主JS模块,那么这个主JS模块必须调用define()而不是require()来加载它需要的代码。 主JS模块仍然可以调用require / requirejs来设置configuration值,但是对于加载模块,它应该使用define()。 由于Twitter Bootstrap不是AMD模块,因此我需要为它启动而努力。 这是我如何configuration它; <script type="text/javascript"> var require = { paths: { "bootstrap": "../bootstrap", "jquery": "../jquery-1.8.2" }, shim: { "bootstrap": ["jquery"] }, enforceDefine: true }; </script> 后来当我的模块想要引导作为一个依赖,我仍然结束了一个错误消息; Error: No define call for bootstrap http://requirejs.org/docs/errors.html#nodefine 如果我已经正确理解了文档, enforceDefine应该忽略垫片,但不是。 我在这里做错了什么?