【问题标题】:How to include SignalR with gulp build process?如何将 SignalR 包含在 gulp 构建过程中?
【发布时间】:2015-03-18 23:39:37
【问题描述】:

当我使用 main.js(未缩小)运行我的 Durandal 应用程序时,它会正确加载 signalr.coresignalr.hubs,但是,在使用 gulp 构建后,它无法加载 signalr.hubs

这是我的 RequireJS 配置:

requirejs.config({
    paths: {
        'text': '../Scripts/text',
        'durandal': '../Scripts/durandal',
        'plugins': '../Scripts/durandal/plugins',
        'transitions': '../Scripts/durandal/transitions',
        'knockout': '../Scripts/knockout-3.2.0',
        'knockout.validation': '../Scripts/knockout.validation',
        'bootstrap': '../Scripts/bootstrap',
        'jquery': '../Scripts/jquery-2.1.3',
        'jquery.utilities': '../Scripts/jquery.utilities',
        'toastr': '../Scripts/toastr',
        'offline': '../Scripts/offline',
        'signalr.core': '../Scripts/jquery.signalR-2.2.0.min',
        "signalr.hubs": '../signalr/hubs?'
    },
    shim: {
        'jquery.utilities': {
            deps: ['jquery']
        },
        'bootstrap': {
            deps: ['jquery'],
            exports: 'jQuery'
        },
        'knockout.validation': {
            deps: ['knockout']
        },
        'signalr.core': {
            deps: ['jquery'],
            exports: '$.connection'
        },
        'signalr.hubs': {
            deps: ['signalr.core'],
        }
    }
});

define('jquery', function () { return jQuery; });
define('knockout', ko);
define('moment', moment);

define(['durandal/system', 'durandal/app', 'durandal/viewLocator', 'durandal/composition', 'global/session', 'knockout', 'knockout.validation', 'signalr.core', 'signalr.hubs'], function (system, app, viewLocator, composition, session) {
});

这是我的 gulpfile:

var gulp = require('gulp');
var durandal = require('gulp-durandal');

gulp.task('durandal', function () {
    durandal({
        baseDir: 'app',   //same as default, so not really required.
        main: 'main.js',  //same as default, so not really required.
        output: 'main-built.js', //same as default, so not really required.
        almond: true,
        minify: true
    })
        .pipe(gulp.dest('app'));
});

我不完全了解缩小过程,但我知道 SignalR 不符合 AMD 标准,因此这可能是问题所在。此外,中心端点会生成动态 JavaScript,因此它不能包含在构建中是有意义的。

signalr.hubsmain-built.js 很好地配合我缺少什么?我应该将 SignalR 与 RequireJS 分开加载吗?

【问题讨论】:

    标签: javascript asp.net signalr gulp durandal-2.0


    【解决方案1】:

    我想有一些方法可以使动态端点工作,但正如您已经认为的那样,这有点不同。我建议您使用proxyless approach(它消除了对动态端点的需要,但您必须稍微调整您的调用和事件处理程序),或者您在构建过程中添加一个步骤来序列化动态端点通过signar.exe 实用程序,如here 所述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-22
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 2015-09-17
      • 2014-05-17
      • 2015-08-05
      相关资源
      最近更新 更多