2010-11-09 21 views
42

C'è solo parte Ajax di jQuery? La questione è che non ho bisogno dell'intera libreria ma solo della sua parte Ajax (ho bisogno di includere questa parte su diversi iframe).C'è solo una parte Ajax di jQuery?

+0

Qualsiasi problema se si sceglie di includere l'intera lib? Non è così pesante. – Kangkan

+1

Anche se lo si utilizza in più iFrame, verrà scaricato solo una volta. Il browser è solitamente così intelligente. Utilizzare la versione minificata. È solo 26kb. Gli iframes – jwueller

+0

provengono da diversi sottodomini (come sss.exemp.net e ggg.exemp.net) – fgfgfgghjh

risposta

0

È tutto o niente. Ovviamente jquery è open source e potresti estrarre la parte che ti interessa nella tua libreria (buona fortuna con questo). Puoi prendere in considerazione l'utilizzo di un CDN che assicurerà che la maggior parte degli utenti lo abbia già memorizzato nella cache del browser, quindi non dovresti preoccuparti delle dimensioni.

+0

perché buona fortuna? che cosa c'è che non va? – fgfgfgghjh

+1

Niente di male, potrebbe essere solo un compito impegnativo e quando uscirà una nuova versione di jQuery potresti dover ricominciare da capo se vuoi usare questa nuova versione. –

+0

@fgf solo se hai davvero un po 'di tempo in più e non sai davvero come utilizzarlo (come un mese o due) strappare parti di jQuery è degno di considerazione. –

0

Non c'è nessuno pronto, ma è possibile ovviamente tagliare e incollare dal file esistente e quindi ridurlo a icona.

Se si è solo preoccupati delle dimensioni della libreria che serve da un CDN di Google, MS o jQuery richiederà probabilmente meno traffico dati poiché la maggior parte dei browser ha già i file nella cache.

12

Come già dice Darin, è tutto o niente. Le funzioni Ajax di JQuery sono strettamente intrecciate con il resto della funzionalità.

Ci sono alcune altre librerie Ajax stand-alone in giro come Matt Kruse's Ajax toolbox - forse questo aiuta.

Vorrei prendere in considerazione il caricamento della libreria jQuery completa. Se si collega a jQuery on a CDN, i tempi di caricamento saranno minuscoli.

+0

personalmente mi piace amplify.js –

+0

@johnSmith Amplify.js si affida a jQuery per eseguire la richiesta Ajax, esattamente l'opposto di ciò che l'OP vuole. –

1

Se si desidera veramente solo le parti Ajax di jQuery è possibile ottenere il codice dal proprio repository (https://github.com/jquery/jquery), osservandolo si vorrà vedere "ajax.js" e "core.js" nel " directory "src". Dovresti quindi compilarli insieme al compilatore di chiusura o qualcosa del genere.

Ma come altri hanno affermato, sarebbe molto più semplice caricarlo da uno dei CDN (jQuery, Google, Microsoft) che la maggior parte degli utenti avrà comunque memorizzato nella cache.

3

ho creato un generazione personalizzata di jQuery 1.7.1 qui:

https://github.com/dtjm/jquery/tree/ajaxonly

+2

[L'ho creato] (https://github.com/thorsummoner/jquery-ajax) per le persone che non possono farlo, da jQ-1.7.1, un intero [minino 41 KB] (https://raw.githubusercontent.com/thorsummoner/jquery-ajax/jquery-ajax/jquery.min.js) Nessuna garanzia! – ThorSummoner

8

Come di jQuery 1.8 si può fare: LINK

1

SÌ, ho appena fatto il mio, http://noypi-linux.blogspot.com/2013/05/build-jquery-with-ajax-only.html

solamente bisogno di questi file (risultante minified fa circa 30Kb):

/d/dev/javascript/jquery/jquery/src/intro.js 
/d/dev/javascript/jquery/jquery/src/core.js 
/d/dev/javascript/jquery/jquery/src/callbacks.js 
/d/dev/javascript/jquery/jquery/src/deferred.js 
/d/dev/javascript/jquery/jquery/src/support.js 
/d/dev/javascript/jquery/jquery/src/data.js 
/d/dev/javascript/jquery/jquery/src/event.js 
/d/dev/javascript/jquery/jquery/src/serialize.js 
/d/dev/javascript/jquery/jquery/src/ajax.js 
/d/dev/javascript/jquery/jquery/src/ajax/xhr.js 
/d/dev/javascript/jquery/jquery/src/exports.js 
/d/dev/javascript/jquery/jquery/src/outro.js 
+0

Grazie per aver fatto riferimento a questo post. Ho messo un progetto su Github basato su questo. Fa qualche rinominazione globale per evitare conflitti https://github.com/dbennett455/jqAjax –

+0

30kb è MOLTO per just ajax() – developerbmw

+0

questo è jquery ajax. –

22

Aggiornamento 2016

È possibile utilizzare questo strumento per costruire la propria versione personalizzata jQuery.

jQuery Builder

Come di jQuery 2.1.1

file di dimensioni complete unminified è: 241,55 Kb

Ajax Solo minified è: 49.60 Kb

Questo è un 5x riduzione delle dimensioni.

enter image description here

+0

Cosa sta succedendo con quel modulo? Se seleziono 'none', viene visualizzato' Filesize: 187.84 Kb/Gzip: 55.69 Kb' che dovrebbe essere 0, se seleziono solo ajax allora ottengo ancora di più 'Filesize: 222.03 Kb/Gzip: 66,51 Kb' c'è ** NO ** opzione che genera '49.60 Kb' – samayo

+0

@samayo Ho modificato il mio post in modo da poter controllare la risposta. – Neoaptt

4

È possibile visualizzare le alternative JavaScript standard a jQuery a youmightnotneedjquery.com

Per esempio l'alternativa al $.ajaxpost è:

var request = new XMLHttpRequest(); 
request.open('POST', '/my/url', true); 
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
request.send(data); 

E l'alternativa a $.ajaxget è:

var request = new XMLHttpRequest(); 
request.open('GET', '/my/url', true); 

request.onload = function() { 
    if (request.status >= 200 && request.status < 400) { 
    // Success! 
    var resp = request.responseText; 
    } else { 
    // We reached our target server, but it returned an error 

    } 
}; 

request.onerror = function() { 
    // There was a connection error of some sort 
}; 

request.send(); 
4

Un'altra opzione sarebbe quella di utilizzare l'API fetch integrata fornita dal browser.

Ecco un frammento di esempio:

fetch('http://localhost:3000/users.json', { 
    method: 'POST', 
    mode: 'cors', 
    redirect: 'follow', 
    body: JSON.stringify({ 
    user: { 
     firstName: 'john', 
     lastName: 'doe' 
    } 
    }), 
    headers: new Headers({ 'Content-Type': 'application/json' }) 
}).then(function() { 
    /* handle response */ 
}); 

This blog post è una grande introduzione alla API e mostra più casi d'uso.

fetch non ha ancora il supporto completo per i browser (credo che manchino principalmente IE e Safari), ma c'è del polyfill che è possibile utilizzare fino a quel giorno.

fetch polyfill: https://github.com/github/fetch

più vecchio dei browser anche bisogno di un Promise polyfill (one option, another option).

+0

Non consiglierei di utilizzare il recupero in produzione. Ho appena affrontato alcuni strani problemi in Safari (su macOS Sierra e iOS 10). Forse sono solo io che sono stupido, ma non penso che valga la pena il tempo di debug. – yuji

+0

L'ho menzionato nel post e suggerisco di utilizzare un polyfill per ora. Grazie per aver evidenziato il problema però. –

2

L'utente AMD legge this, la mia risposta è per la creazione di un singolo file.
O semplicemente usare questa libreria: ded/reqwest (4 KB, min & gzip)


  1. Scarica source code ed eseguire npn i

  2. Aprire /src/jquery.js e rimuovere eventuali Moudle non si vuole, ma keep "./exports/amd", "./exports/global"

    define([ 
        "./ajax", 
        "./ajax/xhr", 
        "./ajax/script", 
        "./ajax/jsonp", 
        "./exports/amd", 
        "./exports/global" 
    ], function (jQuery) { 
        "use strict"; 
        return jQuery; 
    }); 
    
  3. Run grunt custom:-sizzle

  4. Goto /dist e prendere il vostro costruire

moduli in costruzione ora:

  • nucleo
  • differita
  • ajax

Dimensione:

  • appena costruita: 85 KB
  • compilazione con min: 26 KB
  • compilazione con min & gzip: 10 KB
+0

build: https://gist.github.com/zcyzcy88/393ca7dc76d22f3e5a4592f59f675ad1 – zcyzcy88