Tag: requirejs

RequireJS – 当给定某些别名时,jQuery未定义

在设置jQuery的路径时,每当我使用时: require.config({ paths: { ‘jQuery’: ‘./libs/jquery-1.8.0.min’ } }); 然后: define([‘jQuery’], function($) { console.log($); }; $将是未定义的。 但是,如果我使用: require.config({ paths: { ‘jquery’: ‘./libs/jquery-1.8.0.min’ } }); 然后: define([‘jquery’], function($) { console.log($); }; 所有事情都突然变得很好。 使用jQuery定义jQuery的别名有什么问题?

RequireJS不同的jQuery

我想使用RequireJS来加载jQuery(我开发的模块应该在jQuery可能已经初始化的不受控制的环境中工作),但是当需要不同版本的jQuery时会出现一些问题。 结果是不可想象的。 里面需要的function块jQuery版本是随机的。 怎么了? 这是代码来说明问题: console.log(jQuery.fn.jquery); setTimeout(function(){ require([“http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js”], function() { console.log($.fn.jquery); }); },1000); setTimeout(function(){ require([“http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js”], function() { console.log($.fn.jquery); }); },2000); setTimeout(function(){ require([“http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.js”], function() { console.log($.fn.jquery); }); },3000); setTimeout(function(){ require([“http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js”], function() { console.log($.fn.jquery); }); },4000); setTimeout(function(){ require([“http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js”], function() { console.log($.fn.jquery); }); },5000); setTimeout(function(){ require([“http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js”], function() { console.log($.fn.jquery); }); },6000); setTimeout(function(){ require([“http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js”], function() { console.log($.fn.jquery); }); },7000); […]

TypeError:$(…)。typeahead不是RequireJS的函数

我正在使用RequireJS来加载我的依赖项。 这是我的配置文件: requirejs.config({ baseUrl: “/js/dist”, paths: { jquery: “../bower_components/jquery/dist/jquery.min”, bootstrap: “../bower_components/bootstrap/dist/js/bootstrap.min”, typeahead: “../bower_components/bootstrap3-typeahead/bootstrap3-typeahead.min”, validator: “../bower_components/bootstrapvalidator/dist/js/bootstrapValidator.min”, openlayers: “../vendor/openlayers/OpenLayers” }, shim: { bootstrap: { deps: [“jquery”] }, validator: { deps: [“bootstrap”] }, openlayers: { exports: “OpenLayers” } } }); 我的主要应用程序文件的一部分: define([“jquery”, “bootstrap”, “openlayers”, “./popup”, “typeahead”], function($, Bootstrap, OpenLayers, Popup) { (…) $(“#textSearch”).typeahead(“destroy”); (…) }); 使用Firebug进行检查,我可以看到所有依赖项都已加载。 但是在我的搜索文本框上调用typeahead()输出以下消息: “TypeError: […]

RequireJS – 在上下文中隔离jQuery版本和插件

我有一个项目,它利用多个require上下文和动态加载的jQuery版本和插件。 (jQuery版本将集中采购,不会内联)。 主机和每个上下文的jQuery完整性以及插件隔离都很关键。 我正在为RequireJS编写一个加载器插件来处理以下用例: 在特定的需求上下文中 在不影响托管页面的fn或任何其他需要的上下文的情况下,我想: 加载我需要的任何版本的jQuery 将插件加载到我特定的jQuery版本的fn上 在所需的jQuery版本上具有参照完整性,以便我的require上下文中的任何模块都可以共享插件 我有一个带有测试的加载器的示例项目。 当我使用加载器进行第二次调用时,它在最后一个条件下失败,它正在吹走先前的版本。 我也使用eval将加载的插件中的$引用隔离到本地加载的jQuery版本范围。 任何有关更好的方法的想法将不胜感激。 如果有一个更简单/更清洁的解决方案,想要保持简单(愚蠢)。 非常感谢。

如何加载多个JQuery插件?

如何加载多个使用$来访问方法的JQuery插件? 我的配置文件( config.js )如下: var require = { paths: { “jquery”: “lib/jquery”, “jqueryui”: “lib/jquery-ui”, “semanticui”: “lib/semantic”, }, shim: { “jqueryui”: { exports: “$”, deps:[‘jquery’] }, “semanticui”: { exports: “$”, deps: [‘jquery’] } }}; 我的应用程序文件( load.js )定义如下: define([‘jqueryui’, ‘semanticui’], function ($) { console.log($); }) 我发现$未定义。 但是当我使用下面的代码时: define([‘semanticui’, ‘jqueryui’], function ($) { console.log($); }) $被定义为jQuery对象。 是否可以使用$来访问jQuery和插件定义的方法? 这是我使用的index.html文件: […]

如何在同一模块中调用函数?

我试图让我的头围绕RequireJS来整理我的应用程序。 我有一些模块和一个main.js脚本。 在我的main.js中,我正在定义一个包含一些AJAX函数的模块,以进行基本的API调用。 在这个“API”模块中,我首先调用其中一个AJAX函数,在完成之后,需要在同一个“API”模块中调用不同的AJAX函数(因为这些是异步任务,我认为像这样链接它们会好吗?!)。 但是,只是在同一模块中调用函数名称不起作用。 那么如何在同一个模块中调用函数呢? 以下是我的“API”模块的设置方式: define(function() { return { ajaxCall_A: function() { $.ajax({ // settings }).done(function() { // now call ajaxCall_B ajaxCall_B(); // doesn’t work! }); }, ajaxCall_B: function() { $.ajax({ // settings }).done(function() { // finished }); } } }

从外部源加载脚本时,WebSocket连接不起作用

所以,我有简单的webSocket连接脚本: $(document).ready(function() { // set web scocket connection var wsConnection = new WebSocket(‘wss://websocket.lh:4443’); // web socket on open action wsConnection.onopen = function() { // web socket wsConnection.send(JSON.stringify({ ‘action’: ‘subscribe’, ‘channel’: ‘{{ app.user.webSocketToken }}’ })); } // web socket on recive data action wsConnection.onmessage = function(e) { // load notifications handler requirejs([“notificationsHandler”], function() { fn_notificationsHandler.getNotify(e); }); […]

如何以AMD方式集成Foundation 3

编辑4 在(来自Foundation 3包) app.js定义了一个模块: (function($, window, undefined) { ‘use strict’; var $doc = $(document), Modernizr = window.Modernizr; $(document).ready(function() { $.fn.foundationAlerts ? $doc.foundationAlerts() : null; // … $.fn.foundationClearing ? $doc.foundationClearing() : null; $(‘input, textarea’).placeholder(); }); // touch support detction is omitted })(jQuery, this); 我试着将它解释为下一个forms: BOOTSTRAP.JS require.config({ paths: { // other paths then.. ‘foundation’: ‘../libs/zurb’ }, shim: […]

使用requirejs中的插件停止全局jquery

我在下面正确地使用了jquery和jquery-cookie 。 我想让jquery不是全局的。 现在是。 我试过的任何方法似乎打破了jquery-cookie 。 require.config({ paths: { “jquery”: ‘../components/jquery/jquery’, “jquery-cookie”: “../components/jquery-cookie/jquery.cookie”, }, shim: { “jquery-cookie”: { deps: [‘jquery’] } } }); require([“jquery”, “jquery-cookie”], function($) { console.log($().jquery); // 1.7.2 console.log($.cookie(“hello”)); // null }); 以下更改将使jquery本地和中断cookie: define(“nc-jquery”,[‘jquery’], function () { return jQuery.noConflict(true); }); require([“nc-jquery”, “jquery-cookie”], function($) { console.log($().jquery); console.log($.cookie(“hello”)); });

jQuery 1.7 +,AMD(RequireJS)和全球范围

我正在尝试与AMD进行更多的合作,而且我在jQuery源代码中遇到过一些我不能完全理解的东西。 这是部分(在文件结尾之前找到): if ( typeof define === “function” && define.amd && define.amd.jQuery ) { define( “jquery”, [], function () { return jQuery; } ); } 从我所看到的,AMD的一个主要观点是保持全球范围的清洁。 然而,jQuery选择将对自身的引用作为模块返回,但仍会感染全局空间。 在我看来,添加“jQuery.noConflict();” 就在返回之前解析它并仍然将对象作为模块返回。 我知道RequireJS有一些专门用于jQuery的特殊文件,但我不确定它是否需要1.7+。 我的问题是2部分: 1)有谁知道为什么要做出这个决定? 2)由于这种方法不是升级友好的,是否有人熟悉使用标准版RequireJS和jQuery的更优雅的解决方案?