2017-03-23 2 views
1

Ich habe die neueste Version von jQuery mit npm install jQuery --save installiert.jQuery's selektive Module für SignalR?

This operation created modules folders in the node_modules folder.

Da signalr (Client-Seite) basiert auf jQuery - ich in der Lage war, dies zu tun:

var jQuery = require('jquery'); // — All jQuery modules 
window.$ = window.jQuery=jQuery; 
require('./jquery.signalR-2.2.1.min.js'); // works since it searches window.jQuery 

Das letzte Bündel (einschließlich meinem Code, minimierte) war ~ 164 KB und die meisten Es war jQuery, wo ich nicht alle Module von jQuery brauchte!

So begann ich selektive Module laden:

var jQuery = require('jquery/src/core'); 
window.$ = window.jQuery=jQuery; 
require('./jquery.signalR-2.2.1.min.js'); 

Error: Uncaught TypeError: v.fn.init is not a constructor

Dann habe ich hinzugefügt:

var jQuery = require('jquery/src/core'); 
require('jquery/src/core/init'); 
window.$ = window.jQuery=jQuery; 
require('./jquery.signalR-2.2.1.js'); 

Different Error: Uncaught TypeError: _pageWindow.load is not a function

Jetzt weiß ich nicht, welche Zusatzmodule ich laden soll.

Frage:

Welche jQuery (3.1.1) Module sollte ich laden (und in welcher Reihenfolge) Damit signalR (v2.2.1) zu arbeiten?

Ich möchte nicht alle irrelevanten Funktionen von jQuery zu meinem Bündel laden, nur um Signalrun auszuführen.

Antwort

0

Sie wollen also eine reduzierte jQuery. Wie die README.md von jQuery Github sagt, gibt es einige Module ausgeschlossen werden können. Ich versuche, herauszufinden, ob das Modul ausgeschlossen werden kann, und in der Liste unten:

  • × ajax: $.ajax in signalR gefunden wird.
  • × ajax/xhr: Im Allgemeinen mit Ajax.
  • × Ajax/Skript: Abhängig von Ajax/Jsonp.
  • × ajax/jsonp: jsonp ist in signalR gefunden.
  • css: css kann nicht in signalR gefunden werden.
  • css/showhide: Die .show(), .hide() und .toggle() und .css() nicht in signalR finden.
  • × veraltet: Die .bind() gefunden wird, die in jq3.0 veraltet ist.
  • Abmessungen: Die .width() und .height() können nicht gefunden werden.
  • Effekte: Die .animate(), .slideUp() und .hide("slow") können nicht gefunden werden.
  • × Ereignis: .on() wird gefunden.
  • event/alias: Scheint ausgeschlossen werden, nicht sicher.
  • event/focusin: Es kann keine verwandte Methode gefunden werden.
  • × Ereignis/Auslöser: .triggerHandler() gefunden wird.
  • Offset: Es kann keine verwandte Methode gefunden werden.
  • wrap: Es kann keine verwandte Methode gefunden werden.
  • Kern/fertig: Es kann keine verwandte Methode gefunden werden.
  • × zurückgestellt: .Deferred gefunden.
  • exporte/global: Von Ihnen oder webpack behandelt.
  • × Exporte/amd: Nicht sicher, aber wahrscheinlich: Sollte durch webpack
  • brutzeln finden.

Abschließend CSS, CSS/showhide, Dimensionen, Effekte, Ereignis/alias, Ereignis/focusIn, Offset, Wrap, Kern/bereit, Exporte/global und Sizzle kann ausgeschlossen werden.

Jetzt erstellen wir eine reduzierte jQuery.

  1. Laden Sie die jquery 3.1.1 zip von download und geben Sie es
  2. npm i
  3. npm i -g grunt
  4. grunt custom:-css,-css/-showHide,-dimensions,-effects,-event/alias,-event/focusin,-offset,-wrap,-core/ready,-exports/global,-sizzle

Jetzt bekommen wir jquery.js und jquery.min. js (50 KB) im Verzeichnis dist.Kopieren Sie es zu einem Projekt und den Code ändern, wie unten:

var jQuery = require('./jquery.min.js'); 
window.$ = window.jQuery=jQuery; 
require('./jquery.signalR-2.2.1.min.js'); 

Falls Sie wollen es sich nicht bauen, ich Ausgabedateien setzen hier ein: (falls nicht vorhanden, bauen Sie sie selbst)

http://blackmiaool.com/res/share/jquery.js

http://blackmiaool.com/res/share/jquery.min.js

Wenn die signalR nicht wie erwartet funktioniert, versuchen Sie die vollständige jQuery statt, und betrachten einschließlich Ereignis/alias und Sizzle Modul.

+0

In Nummer 4 - wo rufen Sie grunt auf jQuery? –

+0

@Royi In dem Verzeichnis unkomprimiert von der Zip in Schritt 1 – blackmiaool

+0

Ok, ich werde es testen (wenn signlar funktioniert), Tnx –