Tag: js amd

dojo中的require()和define()函数与我们什么时候使用的主要区别是什么?

我是学习dojo的新手,并且遇到了require()和define()函数,我无法理解其中的任何一个。 另外,我什么时候可以使用其中之一? 一个小的演示或例子将是有益的。 非常感谢!

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)。 还是有人有一个更好的想法,如何做到这一点?

如何使用RequireJS加载Google Maps API?

我正在努力与requireJS加载gmaps api。 这是我试过的: requirejs.config({ urlArgs: "noCache=" + (new Date).getTime(), paths : { "jquery": "vendor/jquery-1.8.2.min", "bootstrap": "vendor/bootstrap.min", "underscore": "libs/underscore-min", "backbone": "libs/backbone-min", "template": "libs/template", "gmaps": "http://maps.google.com/maps/api/js?v=3&sensor=false" }, shim: { 'backbone': { deps: ['jquery', 'underscore'], exports: 'Backbone' }, 'underscore': { exports: '_' }, 'bootstrap': { deps: ['jquery'] }, 'gmaps': { deps: ['jquery'] }, 'main':{ deps: ['jquery','gmaps'] } } […]

如何使用RequireJS实现延迟加载?

我们正在使用Backbone,RequireJS和Handlebars构build一个非trival的web应用程序,当然,我只是好奇而已。 目前,我们的每个模型都是这样的: define(['Backbone', 'js/thing/a', 'js/thing/b', 'js/lib/bob'], function(a, b, bob) { return Backbone.Router.extend({ // stuff here }); }); 其中thing / a,thing / b都有自己的依赖关系,比如在Handlebars模板上。现在发生的事情是,在我的main.js中,所有的“顶级”路由器都被加载和初始化。 每个顶级路由器都有一组依赖关系(模型,视图等),每个依赖关系都有自己的依赖关系(模板,帮助器,utils等)。 基本上,一个大树的结构。 在这种情况下的问题是整个树被parsing并加载页面加载。 我不介意这样做,因为我们将通过优化器最终运行它,并最终得到一个大的单个文件(将RequireJS简化为模块化框架)。 不过,我很好奇你是否可以按需求加载视图和模板等内容。 这里解释了“简化的CommonJS包装”,所以我试过了: define(function(require) { Backbone = require('Backbone'); return Backbone.Router.extend({ doStuff: function() { var MyView = require('js/myView'); new MyView().render(); } }); }); 然而,看着Chrome的networking检查员,看起来RequireJS – 即使不触发触发doStuff处理程序的路由 – 也不知何故,仍会加载myView依赖项。 问题: 这实际上是可能的吗? RequireJS中是否存在黑色的磁条,在没有实际触发doStuffpath的情况下寻找require()调用? […]

为什么Underscore.js不支持AMD?

1.3.0 – 2012年1月11日删除了Underscore的AMD(RequireJS)支持。 如果你想在RequireJS中使用Underscore,你可以将它作为普通脚本加载,打包或修补你的副本,或者下载分叉版本。 他们为什么要这样做? 有人知道吗? 因为他们仅在几个月前(10月份)就添加了它,而AMD(asynchronous模块定义) 据说远远优于CommonJS模块。 更新:截至2013年12月,这再次得到支持。

RequireJS:加载包含模板和CSS的模块

玩过AMD / RequireJS之后,我想知道是否加载包括模板和CSS的UI模块是一个好主意,因此它们完全独立于网页。 这听起来很不错,但我还没有看到这在野外实施,所以可能有陷阱。 想想以下结构的一些UI模块: myWidget |–img |–main.js |–styles.css +–template.tpl 所有东西在一个文件夹中。 看起来很好。 main.js中的模块看起来像这样: define(["TemplateEngine", "text!myWidget/template.tpl"], function(TemplateEngine, template) { // Load CSS (Pseudo Code) var cssUrl = "myWidget/styles.css"; appendToHead(cssUrl); return function() { return { render: function(data) { return TemplateEngine.toHtml(template, data); } } } }); 现在的问题是: 我错过了什么吗? 有没有什么插件/概念如何以“标准”的方式来实现? RequireJS优化器是否能够在这里处理CSS部分,比如像JS部件那样对样式表进行连接/缩小? 对此有何意见? 是好是坏?

Require.js和在DOM中简单地创build一个<script>元素有什么区别?

在使用Require.JS和在DOM中简单地创build<script>元素之间有什么区别? 我对Require.JS的理解是,它提供了加载依赖的能力,但是这不能简单地通过创build加载必要的外部JS文件的<script>元素来完成。 例如,让我们假设我有函数doStuff() ,它需要函数needMe() 。 doStuff()在外部文件do_stuff.js ,而needMe()在外部文件need_me.js 。 这样做的Require.JS方式: define(['need_me'],function(){ function doStuff(){ //do some stuff needMe(); //do some more stuff } }); 通过简单地创build一个脚本元素来做到这一点: function doStuff(){ var scriptElement = document.createElement('script'); scriptElement.src = 'need_me.js'; scriptElement.type = 'text/javascript'; document.getElementsByTagName('head')[0].appendChild(scriptElement); //do some stuff needMe(); //do some more stuff } 这两个工作。 但是,第二个版本不需要我加载所有的Require.js库。 我真的没有看到任何function差异…

bower init – amd,es6,globals和node之间的区别

我正在创build我的第一个Bower组件。 在运行bower init ,脚本问我“这个软件包暴露了什么types的模块? 与这些选项: AMD ES6 全局 节点 这些选项有什么区别?

如何在使用AMD(require.js)时在Backbone.js中加载引导模型

Backbone.js文档build议以这种方式加载bootstrapped模型: <script> var Accounts = new Backbone.Collection; Accounts.reset(<%= @accounts.to_json %>); var Projects = new Backbone.Collection; Projects.reset(<%= @projects.to_json(:collaborators => true) %>); </script> 但是这是一个不能在AMD方法中使用的模式(使用require.js) 唯一可能的解决scheme是声明存储JSON数据的全局variables ,稍后在相关的初始化方法中使用这个variables。 有没有更好的方式来做到这一点(没有全局variables)?