2015-06-04 16 views
12

Sto cercando attraverso react-0.13.3.js e una cosa che non riesco a risolvere. All'inizio della fonte ci sono un sacco di chiamate dereq().Che cosa è `_dereq _()` in React?

'use strict'; 

var EventPluginUtils = _dereq_(19); 
var ReactChildren = _dereq_(32); 
var ReactComponent = _dereq_(34); 
var ReactClass = _dereq_(33); 

Ma da nessuna parte vedo un'implementazione per quella funzione. Che cosa fa e come funziona? E, soprattutto, dove viene dichiarato?

Aggiornamento

sto ancora aspettando una risposta più completa per accettare. La mia domanda principale è cosa fa la funzione fa e come funziona.

+1

Vedi qui: https://github.com/calvinmetcalf/derequ IRE/temi/25. – glortho

+0

Questa è la risposta giusta. Se potessi scriverlo, lo accetterei :) –

+0

Ok, lo aggiungerò alla mia risposta qui sotto. – glortho

risposta

6

Questo è probabilmente derequire combinato con gli ID dei moduli browserify (o altro bundler?). È un modo per rinominare require nel pacchetto di output in modo da evitare collisioni.

Leggi qui per maggiori informazioni: https://github.com/calvinmetcalf/derequire/issues/25

L'idea di base è che diversi caricatori moduli gestiscono require in modo diverso. "Derequire" è una strategia per legare le tue esigenze al tuo contesto tramite una parola chiave diversa.

1

Ha a che fare con amd module loader. _dereq_ è il primo argomento quindi è la funzione require.

+1

Potresti approfondire cosa fa quando dico 'var EventPluginUtils = _dereq_ (19);'? Che cosa fa "19", è un modo per dare la priorità a qualcosa? –

+0

È l'indice/id del pacchetto. Vedi ad esempio l'opzione '--full-paths' di browserify: https://github.com/substack/node-browserify#usage – glortho

1

È necessario espandere line 4 nella fonte; è require.

1: [function(_dereq_, module, exports) { 
0

ho inciampato su questa questione, dopo alcune ricerche, credo che lo scopo principale di avere questa funzione è quello di costruire un NPM simile come funzione sul vostro browser e gestire il modulo dipendenza da importare funzioni diverse.

se si va dritto fino alla fine della IIFE (circa 20k ~ linee)

si vedrà una struttura simile al di sotto

(function e(t, n, r) { 
    function s(o, u) { 
     ... 
    } 

     ... 
}) ({... //blah blah blah, all the funcitons 
    }, {}, [1]) 


the variable t is all the functions modules 
the variable n is an empty array 
the variable r is 1 here 

così la richiedono modulo è chiamato nel giusto ordine, ed è costruito dall'indice 1, da lì, è abbastanza auto-esplicativo, tutte le dipendenze deve essere correttamente programmato dalla matrice in fin

1: [function (_dereq_, module, exports) {.... 
}, {"106": 106, "23": 23, "35": 35, "45": 45, "63": 63}],