首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过require加载cola.js (AMD)

通过require加载cola.js (AMD)
EN

Stack Overflow用户
提问于 2015-10-24 21:33:33
回答 2查看 95关注 0票数 0

我正在使用require.js将cola.js异步加载到Chrome浏览器中。我在本地托管了cola.v3.min.js,并在我的require.config块中引用了它。浏览器找到正常的模块,加载状态为200的模块,我可以在浏览器中检查cola.v3.min.js内容。但在函数的作用域中,cola出现了未定义的情况。Require似乎并没有抛出错误--只是将cola作为undefined传递。D3加载正常,并且工作正常。查看cola.js源代码,它似乎解决了AMD加载问题,而'cola‘似乎是正确的定义。为什么不喝可乐?谢谢。

代码语言:javascript
复制
define('geotbl', ['jquery','underscore','backbone','cola','d3'],
  function($, _, Backbone, cola, d3){

    tbl.force = cola.d3adaptor()   //<-- cola is undefined here
               .linkDistance(320)
               .etc;
  })
EN

回答 2

Stack Overflow用户

发布于 2015-11-13 22:24:37

我发现requirejs有时似乎会加载这个可乐模块,但并不总是如此。最终,我在require.js入口点的配置部分添加了一个填充程序,使其正常工作:

代码语言:javascript
复制
require.config({
  paths: {
    'cola': '/vendor/colajs/cola.min',
  }, 
  shim: {
        'cola':{ exports: 'cola'},
        'underscore': { exports: '_' },
  }, etc.
票数 0
EN

Stack Overflow用户

发布于 2016-12-20 06:30:32

我试过垫片,但它似乎不起作用。因此,我使用了以下新石器时代的方法:

代码语言:javascript
复制
define(['jquery','underscore','backbone','cola','d3',], 
  function($, _, Backbone,d3,cola,tpl_dendro){
    this.g_cola = cola;  // cola is loaded here, so save in global context

    var myView = Backbone.View.extend({  // create the local context
      initialize: function(p){
         // here require.js has created cola in the local context but left it undefined
         // so use the global copy created earlier:
         if(cola === undefined){ cola = g_cola; }  // crude but effective

我很想知道为什么要求是卡住的,并希望有一个更好的解决方案。

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

https://stackoverflow.com/questions/33318786

复制
相关文章

相似问题

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