2017-03-23 46 views
1

我已經使用npm install jQuery --save安裝了最新版本的jQuery。jQuery的signalR選擇模塊?

This operation created modules folders in the node_modules folder.

由於signalr(客戶端)依靠jQuery的 - 我能做到這一點:

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 

最終的軟件包(包括我的代碼,精縮)是〜164 KB,大部分它是jQuery,我不需要所有的jQuery模塊!

於是我開始選擇性加載模塊:

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

然後我又說:

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

現在我不知道哪個額外的模塊,我應該加載。

問:

我要加載的jQuery的(3.1.1)模塊(以及以什麼順序)爲了signalR(V2.2.1)工作?

我不想將所有jQuery的無關函數加載到我的包中,只是爲了讓signalr運行。

回答

0

所以你想要一個簡化的jQuery。正如jQuery的github所說的README.md所說,有些模塊可以被排除。我試着找出該模塊是否可以被排除,並列出它們在下面:

  • ×AJAX$.ajax在signalR找到。
  • ×ajax/xhr:一般用ajax
  • ×ajax/script:依賴ajax/jsonp
  • ×ajax/jsonpjsonp在signalR中找到。
  • csscss無法在signalR中找到。
  • CSS /顯示隱藏:本.show().hide().toggle().css()不能在signalR找到。
  • ×已棄用:找到了.bind(),這在jq3.0中不推薦使用。
  • 尺寸:找不到.width().height()
  • 效果:找不到.animate(),.slideUp().hide("slow")
  • ×事件:該.on()被發現。
  • 事件/別名:似乎可以被排除,不能肯定。
  • 事件/的focusIn:無相關的方法可以找到。
  • ×事件/觸發:該.triggerHandler()被發現。
  • 偏移量:沒有找到相關的方法。
  • wrap:沒有找到相關的方法。
  • 核心/準備好:沒有找到相關的方法。
  • ×推遲.Deferred被發現。
  • 出口/全球:由您或的WebPack處理。
  • ×出口/ AMD:不知道,但可能:應該的WebPack
  • 嘶嘶被發現。

總之,CSSCSS /顯示隱藏尺寸效果事件/別名事件/的focusIn偏移渦卷芯/準備好,出口/全球sizzle可以排除在外。

現在我們來構建一個簡化的jQuery。

  1. 下載從download了jQuery 3.1.1拉鍊並輸入
  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

現在,我們得到的jquery.jsjquery.min。 js(50KB)在dist目錄下。它複製到你的項目如下更改代碼:

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

如果你不想建立它自己,我把輸出文件的位置:(如果不提供,請自己構建這些)

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

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

如果如預期的那樣signalR不起作用,嘗試全面的jQuery代替,並考慮包括事件/別名sizzle模塊。

+0

在第4號 - 你在哪裏調用jQuery的grunt? –

+0

@Royi在步驟1中從zip壓縮的目錄 – blackmiaool

+0

好吧,我會測試它(如果信號工程),tnx –