使用JustGage和Require.js

时间:2015-05-04 21:29:37

标签: javascript requirejs raphael justgage

JustGage使用Raphael,正如经过充分讨论的here,它不符合AMD标准(因此不适用于Require.js)。

我之前没有使用过Require.js,也没有使用过很多JS,所以我正在努力解决这个问题。有很多试验和错误;)

使用建议here的方法,我将Raphael模块拆分为单独的文件并单独包含在内,并猜测如何为JustGage做些什么。

require.config({
    paths: {
        //other links removed
        'eve': 'vendor/eve/eve',
        'raphael-core': 'vendor/raphael/raphael.core',
        'raphael-svg': 'vendor/raphael/raphael.svg',
        'raphael-vml': 'vendor/raphael/raphael.vml',
        'raphael': 'vendor/raphael/raphael.amd',
        'justgage': 'vendor/justgage/justgage.1.0.1.min'
    },
    shim: {
        'eve': {
            exports: "eve"
        },
        'raphael': {
            deps: ['eve'],
            exports: "Raphael"
        },
        'justgage': {
            deps: ['raphael'],
            exports: "JustGage"
        }
    }
});

但是说明然后说“在上面的配置之后,你可以像其他require-js模块一样开始使用Raphael”,这不是那么有用;)

我想我需要在main.js做点什么吗?

在我的cshtml页面中我有

require(["raphael", "justgage"], function(JustGage) {
    $(function() {
        var a = new JustGage({
            id: "pvgauge",
            value: @Model.GaugeValues.PV,
            min: @Model.PVGauge.MinValue,
            max: @Model.PVGauge.MaxValue,
            title: "Personal Volume",
            label: "PV",
            levelColors: gaugeSettings.levelColors,
            levelColorsGradient: gaugeSettings.levelColorsGradient,
            showInnerShadow: gaugeSettings.showInnerShadow,
            shadowSize: gaugeSettings.shadowSize,
            labelFontColor: '#7ACE30',
            titleFontColor: gaugeSettings.titleFontColor,
            valueFontColor: gaugeSettings.valueFontColor
        });
    });
});

现在至少找到JustGage,但现在给出错误'Raphael' is undefined.

(我还尝试过直接在cshtml文件中包含脚本,但得到错误'Mismatched anonymous define() module: function (eve) {'

我的理解是否正确,Require.js意味着事情不在全球范围内? JustGage期待拉斐尔在全球范围内?

有关让JustGage工作的任何帮助吗?或建议使用与“Requireo”相同的“speedo”型仪表库?

2 个答案:

答案 0 :(得分:0)

几乎在那里,您需要将它添加到该功能中,因此JustGage可以使用它。

require(["raphael", "justgage"], function(raphael,JustGage) {

如果justgauge是一个模块,那么你应该在模块中加载依赖项,因为它将在该模块中查找raphael,但是当你已经加载它时,它应该可以工作,

更容易跟踪您的依赖关系并在需要的地方加载它们,

define(['module' , "pathto/raphael"], function (module, raphael) {

答案 1 :(得分:0)

这对我有用:

require('eve');
window.Raphael = require('raphael');
require('justgage');