首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要确保插件在使用RequireJS加载其依赖项之前不会加载

我需要确保插件在使用RequireJS加载其依赖项之前不会加载
EN

Stack Overflow用户
提问于 2015-08-12 04:52:28
回答 2查看 211关注 0票数 4

我使用的是jquery.validationEngine.js插件。除非先加载jqueryValidateEngine,否则jqueryValidateEnglish无法运行。

我的jquery.wrapped.validationengish2.js的代码如下:

代码语言:javascript
复制
        define(['jqueryValidateEngine'],function($){

         //Plugin Code here

        });

我的jquery.wrapped.validationEngine2.js的代码如下:

代码语言:javascript
复制
        define(['jquery'],function($){

         //Plugin Code here

        });

我的主页包含:

代码语言:javascript
复制
    <script src="/imagesrv/marketing/requireJS/assets/lib/require.js" data-main="/imagesrv/marketing/requireJS/assets/js/common2">

common2.js包含:

代码语言:javascript
复制
        //Configure RequireJS

        require.config({
          baseUrl: "/imagesrv/marketing/requireJS/assets",
          paths: {
            // The libraries we use
            jquery: [
                '/imagesrv/marketing/js/jquery.min'
            ],
            bootstrap: '/imagesrv/marketing/requireJS/assets/lib/bootstrap.wrapped.min',
            smartdevice: '/imagesrv/marketing/requireJS/assets/page/smart-device',
            eloquatag: '/imagesrv/marketing/requireJS/assets/page/eloqua-tag',
            main: '/imagesrv/marketing/requireJS/assets/page/main',
            startupkit: '/imagesrv/marketing/requireJS/assets/js/startup.wrapped.kit',
            jqueryuicus: '/imagesrv/marketing/requireJS/assets/js/jquery-wrapped.ui-1.10.3.custom.min',
            smoothscrl: '/imagesrv/marketing/requireJS/assets/js/jquery.smoothdivscroll.wrapped-1.3-min',
            genscript: '/imagesrv/marketing/requireJS/assets/js/gen-wrapped.menu.script',
            owlcarousel: '/imagesrv/marketing/requireJS/assets/js/owl.wrapped.carousel',
            placeholder: '/imagesrv/marketing/requireJS/assets/js/jquery.wrapped.placeholder',
            explorewhatshot: '/imagesrv/marketing/requireJS/assets/js/explorewhatshot.wrapped',
            kiblog: '/imagesrv/marketing/requireJS/assets/js/ki.wrapped.blog.script',
            jqueryValidateEnglish: '/imagesrv/marketing/requireJS/assets/js/jquery.wrapped.validationEnglish2',
            jqueryValidateEngine: '/imagesrv/marketing/requireJS/assets/js/jquery.wrapped.validationEngine2'

          } 

        });


require(['main', 'bootstrap', 'startupkit', 'eloquatag', 'owlcarousel',    'kiblog', 'jqueryuicus', 'jqueryValidateEnglish'], function($) {// Load up this  pages script, once the 'common' script has loaded
  console.log('jQuery and r.js have been loaded!');
});

但是当我运行我的页面时,我总是在控制台中得到以下错误:"$(...).validationEngine不是一个函数

当我在Network下查看时,它显示我的封装插件正在加载,但由于某种原因,它们似乎加载顺序混乱,这可能是我收到控制台错误的原因。

我不确定问题出在哪里。

EN

回答 2

Stack Overflow用户

发布于 2015-08-15 23:30:50

如果先加载jQuery,则可以利用$.holdReady()$.when()

代码语言:javascript
复制
    $.holdReady(true);

    var scripts = {
      bootstrap: '/imagesrv/marketing/requireJS/assets/lib/bootstrap.wrapped.min',
      smartdevice: '/imagesrv/marketing/requireJS/assets/page/smart-device',
      eloquatag: '/imagesrv/marketing/requireJS/assets/page/eloqua-tag',
      main: '/imagesrv/marketing/requireJS/assets/page/main',
      startupkit: '/imagesrv/marketing/requireJS/assets/js/startup.wrapped.kit',
      jqueryuicus: '/imagesrv/marketing/requireJS/assets/js/jquery-wrapped.ui-1.10.3.custom.min',
      smoothscrl: '/imagesrv/marketing/requireJS/assets/js/jquery.smoothdivscroll.wrapped-1.3-min',
      genscript: '/imagesrv/marketing/requireJS/assets/js/gen-wrapped.menu.script',
      owlcarousel: '/imagesrv/marketing/requireJS/assets/js/owl.wrapped.carousel',
      placeholder: '/imagesrv/marketing/requireJS/assets/js/jquery.wrapped.placeholder',
      explorewhatshot: '/imagesrv/marketing/requireJS/assets/js/explorewhatshot.wrapped',
      kiblog: '/imagesrv/marketing/requireJS/assets/js/ki.wrapped.blog.script',
      // load `jquery.wrapped.validationEngine2` before `jquery.wrapped.validationEnglish2`
      jqueryValidateEngine: '/imagesrv/marketing/requireJS/assets/js/jquery.wrapped.validationEngine2',
      jqueryValidateEnglish: '/imagesrv/marketing/requireJS/assets/js/jquery.wrapped.validationEnglish2'
    };

    var requests = $.when.apply($, $.map(scripts, function(url, name) {
      return $.getScript(url)
    }));

    requests.then(function() {
       $.holdReady(false);
    }, function(error) {
       console.log(error)
    });

    $(document).ready(function() {
      // do stuff when `scripts` loaded
    });
票数 1
EN

Stack Overflow用户

发布于 2015-08-16 07:40:22

我不确定我是否正确理解了这个问题,但据我所知,您缺少对require.config的依赖声明,您没有告诉require它依赖于任何东西,因此,您需要对以下内容进行更改:

代码语言:javascript
复制
require.config({
    //alias
    paths: {
      jqueryValidateEnglish: '/imagesrv/marketing/requireJS/assets/js/jquery.wrapped.validationEnglish2',
      jqueryValidateEngine: '/imagesrv/marketing/requireJS/assets/js/jquery.wrapped.validationEngine2'
    },

    //dependencies
    shim: {
      'jqueryValidateEngine': ['jqueryValidateEnglish']
    }
});

我希望这就是你要找的

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

https://stackoverflow.com/questions/31951718

复制
相关文章

相似问题

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