我在lobb.js项目中使用raphael.js。 导入raphael就像一个超级按钮(此版本兼容AMD)。 一切都按预期进行。 “ app”是在另一个app.js文件中定义的预定义全局对象。

define(['jquery','underscore','app','backbone','raphael'],function($,_,app,Backbone,Raphael){

var AppView = Backbone.View.extend({

initialize: function() { 

    app.paper = Raphael(0, 0, app.w, app.h);

} ...})})

现在我的app.paper具有所有Raphael方法。 太棒了!

我刚刚在Raphael API中发现可以使用Raphael.el和Raphael.fn添加自己的预定义方法

initialize: function() { 

    app.paper = Raphael(0, 0, app.w, app.h);

    Raphael.el.myfill = function(){
        this.attr('fill', '90-#fff-#000');
    }

    app.paper.circle(x,y,r).myfill(); //it works! (Brilliant!)

    }

}

我的问题是,如何将Raphael.el.myfill定义与其他Raphael.fn.mydefined方法一起放入另一个javascript文件,并将其带入上述AppView中?

我不想使用冗长的定义来阻塞我的AppView文件,并且我也想提供在不同视图中使用哪个Raphael。[el | fn]定义的可变性。 但是由于这些对象构造函数已经作为我已经作为依赖项进入的Raphael.js对象的一部分,所以我不确定如何使用require.js协议将Raphael.el和Raphael.fn定义分开。 在require.js之前,我只是将这样的定义放在另一个myRaphaelDefs.js文件中,在我的html中添加另一个“ script”标签,它们都将始终可用,但这是2015年,我跳上了模块化js潮流。

我使用的是AMD兼容的RedRaphael分支,因此Raphael.js本身没有“定义”包装。 如果该库确实带有这样的包装器,我可以尝试将外包定义作为依赖项直接添加到Raphael.js中。 (不是一种选择)RedRaphael可以直接使用require.js,因此那里没有“定义”包装器。

#1楼 票数:0 已采纳

我们要做的是在我们的库周围添加一个包装器,并使用require.config中的map选项对其进行路由,以便该包装器获取原始库,但其他所有操作都将包装器抛出:

raphael-wrapper.js:

define(['raphael'], function (Raphael) {
    Raphael.el.myfill = function(){
        this.attr('fill', '90-#fff-#000');
    };
    return Raphael;
});

require.config:

{
    paths: {
        'raphael': '/path/to/rahpael'
    },
    map: {
        '*': {
            'raphael': '/path/to/rahpael-wrapper'
        },
        '/path/to/rahpael-wrapper': {
            'raphael': 'raphael'
        }

    }
}

  ask by deusoz translate from so

未解决问题?本站智能推荐:

1回复

在require.js中,可以在全局添加通用依赖项并在本地定义更具体的依赖项

我有一个骨干/木偶应用程序-在每个js文件中我定义我需要的骨干,在myApp下划线,然后在我需要的任何模板视图控制器上都这样 我希望将某些东西作为组添加在每个文件上重复 其次是更具体的依赖
3回复

require.js和r.js依赖项

我的应用程序一直运行良好,但今天我决定给r.js一个漩涡。 现在我的树(它的一部分)看起来像 的index.html 资产 JS require.js r.js main.js 组件
2回复

在AdobeCQ5中使用require.js作为客户端依赖项

我想知道是否有人在使用Adobe CQ5平台的require.js时有经验。 我正在编写一个Chaplin.js(基于骨干的)单页应用程序,该应用程序将集成到我们正在开发的基于CQ5的其余站点中。 卓别林需要使用像AMD / Common.js这样的模块系统,我想确保我编译的javascri
1回复

使用Backbone.js和require.js的jQuery插件-如何将“this”变量传递给依赖项?

我需要协助。 我对require.js相当新,我遇到了麻烦 。 我正在创建一个使用require.js架构的jquery插件。 一旦调用了setupSchedule插件,它就会传递调用它的元素的“this”变量。 jQuery 101.我的依赖项ScheduleView需要这个“thi
3回复

如何使用require.js设置简单的Backbone/Marionette项目及其依赖项

我已经阅读了很多,甚至买了一本专门关于使用require.js设置木偶应用程序的书,并在github上遵循了这个小方法,这似乎很简单……但是由于某些原因,我无法看起来就像启动一个空的Marionette项目一样简单! 我的项目的结构如下: 根目录 楷模 意见
2回复

require.js依赖分析工具

如何从使用requir.js构建的项目中检测循环依赖? 例如 我的意思是,随着项目变大,手动检查每个文件变得麻烦。 编辑:如何检测冗余依赖项?
1回复

使用require.js依赖注入

我正在尝试创建一个使用jQuery和Handlebars的模块 这是主文件: 这是应用程序文件: 为什么说它hb is not defined ,但当我删除所有依赖项时,它使用Handlebars而不是hb (这是正常的方式)?
2回复

使用Require.js嵌套依赖项Backbone.js视图Backbone.js导致将视图加载为对象而不是函数

我将Require.js与Backbone.js和Underscore.js结合使用,并且我有一个嵌套视图,当被称为依赖项时,嵌套视图的状态为undefined,但是当我在同一模块中拥有两个视图时,它们可以正常工作。 我想知道我在做什么错。 这是一个例子: child-view.js