Javascript 将JustGage与Require.js一起使用

Javascript 将JustGage与Require.js一起使用,javascript,requirejs,raphael,justgage,Javascript,Requirejs,Raphael,Justgage,JustGage使用Raphael,正如大家所讨论的,Raphael不符合AMD(因此不适用于Require.js) 我以前没有使用过Require.js,也没有做过很多js,所以我正在努力解决这个问题。有很多尝试和错误;) 使用建议的方法,我将Raphael模块拆分为单独的文件,并分别包含它们,同时猜测如何为JustGage做些什么 require.config({ paths: { //other links removed 'eve': 'vendo

JustGage使用Raphael,正如大家所讨论的,Raphael不符合AMD(因此不适用于Require.js)

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

使用建议的方法,我将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(["raphael", "justgage"], function(raphael,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”未定义。

(我也尝试过直接在cshtml文件中包含一个脚本,但得到了错误
“不匹配的匿名定义()模块:函数(eve){'

我的理解正确吗?Require.js表示事物不在全局范围内?JustGage期望Raphael在全局范围内


关于让JustGage工作的任何帮助?或者关于“speedo”型压力表的等效库的建议,这些压力表将与Require.js一起工作?

差不多了,您也需要将其添加到函数中,以便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(["raphael", "justgage"], function(raphael,JustGage) {
如果justgauge是一个模块,那么您应该在模块中加载依赖项,因为它将在该模块中查找raphael,但是由于您已经加载了它,它应该可以工作

跟踪依赖关系并在需要时加载它们更容易

define(['module' , "pathto/raphael"], function (module, raphael) {
这对我很有用:

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

无论是
require([“raphael”,“justgage]”),function(raphael,justgage){
还是
require([“raphael”,“justgage]”),function(raphael,justgage){
工作-仍然给出
raphael是未定义的
。我对“如果justgage是一个模块,那么您应该在模块中加载依赖项”了解不够对我来说有意义,抱歉!感谢你的回答。嗯,我可以叫拉斐尔很好,但不能用justgauge做任何事情,因为它没有任何意义。如果这是一个词,运行这个,如果它工作的话,很容易将justgauge包装成一个模块(这意味着它将发挥良好),我可以逃脱50%以上,无论如何,试试看