2015-07-08 4 views
5

Ich verwende signalr in meinem app-Datei und es sind Referenzierung wie so:minify die signalr/Naben

<script src="/signalr/hubs" type="text/javascript"></script>

Natürlich signalr erzeugt wird Javascript dynamisch on the fly. Wenn ich yslow starte, um die Leistung meiner Webanwendung zu verbessern, beschwert es sich, dass singalr/Hubs nicht minimiert wird. Sicherlich, wenn ich auf den Link klicken zeigt es die js, kleine Schnipsel Beispiel:

/*! 
* ASP.NET SignalR JavaScript Library v2.1.1 
* http://signalr.net/ 
* 
* Copyright Microsoft Open Technologies, Inc. All rights reserved. 
* Licensed under the Apache 2.0 
* https://github.com/SignalR/SignalR/blob/master/LICENSE.md 
* 
*/ 

/// <reference path="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" /> 
/// <reference path="jquery.signalR.js" /> 
(function ($, window, undefined) { 
    /// <param name="$" type="jQuery" /> 
    "use strict"; 

    if (typeof ($.signalR) !== "function") { 
     throw new Error("SignalR: SignalR is not loaded. Please ensure jquery.signalR-x.js is referenced before ~/signalr/js."); 
    } 

    var signalR = $.signalR; 

    function makeProxyCallback(hub, callback) { 
     return function() { 
      // Call the client hub method 
      callback.apply(hub, $.makeArray(arguments)); 
     }; 
    } 

    function registerHubProxies(instance, shouldSubscribe) { 
     var key, hub, memberKey, memberValue, subscriptionMethod; 

Wie kann ich diese Datei minify wenn es automatisch erzeugt wird?

bearbeiten

Lassen Sie mich Ich bin mit lcsk auch klären, welche here gefunden werden kann, was signalr verwendet. In diesem Paket ist es eine startup.cs Datei, die wie folgt aussieht:

using Microsoft.Owin; 
using Owin; 

[assembly: OwinStartup(typeof(RIMS.LCSK.Startup))] 

    namespace RIMS.LCSK 
    { 
     public class Startup 
     { 
      public void Configuration(IAppBuilder app) 
      { 
       app.MapSignalR(); 
      } 
     } 
    } 

Muß ich es irgendwie sagen, an dieser Stelle minify? Ich habe gesehen:

SignalR hub.js minify (aber dies scheint eine global.asax-Datei zu verwenden) Und ich habe auch gesehen:

https://github.com/SignalR/SignalR/issues/2403

Aber ich bin unsicher, wo ich brauche, um Mach das mit dem, was ich habe.

Antwort

1

Überprüfen Sie die extensibility guide. Es listet eine IJavaScriptMinifier Schnittstelle auf, die Sie implementieren können, um das zu tun, was Sie suchen. (Und vielleicht koppeln Sie es mit der Optimierung/Bündelung Bibliothek oder einem anderen Drittanbieter-Minifier).

+1

Ich sah das, sehe meine Bearbeitung, aber ich bin mir nicht sicher, wo diese Schnittstelle sogar zu implementieren. Kannst du mir meine Änderungen ansehen, um meine Probleme zu sehen? – JonH

1

Wie die Erweiterbarkeit Anleitung schlägt Sie sollten IJavaScriptMinifier, die nur aus einer Minify Methode besteht implementieren. Geben Sie danach Ihre IJavaScriptMinifier Implementierungsklasse an die SignalR dependency injection pipeline und SignalR kümmert sich um die Verwendung der Minifier, wenn es erforderlich ist.

Hier ist ein Beispiel für eine Klasse implementiert IJavaScriptMinifier, wobei Minifier die Microsoft Ajax Minifier ist.

public class SignalrJavascriptMinifier : IJavaScriptMinifier 
{ 
    public string Minify(string source) 
    { 
     return new Minifier().MinifyJavaScript(source); 
    } 
}