2016-02-25 11 views
6

Nie rozumiem, jak działa funkcja WebPacka require. Na przykład, czytam this article o WebPack i jest następujący przykład: początekJak działa webpack?

Załóżmy, tworząc nasz projekt i instalacja WebPACK, będziemy również ciągnąć w jQuery wykazać pewne rzeczy na później.

$ npm init 
$ npm install jquery --save 
$ npm install webpack --save-dev 

Teraz stwórzmy nasz punkt wejścia aplikacji w zwykły ES5 teraz:

src/index.js

var $ = require('jquery'); 

$('body').html('Hello'); 

I stwórzmy nasz WebPACK konfiguracja w pliku webpack.config.js. konfiguracja WebPACK jest po prostu JavaScript i musi eksportować obiektu:

webpack.config.js

module.exports = { 
    entry: './src', 
    output: { 
     path:  'builds', 
     filename: 'bundle.js', 
    }, 
}; 

Jak WebPack wiedzieć, co jest w require('jquery') jquery? Nie widzę żadnych określonych opcji konfiguracji związanych z jquery.

+0

Po prostu pobiera jquery i umieszcza go w folderze 'node_modules' i dodaje go jako zależność do' pakiet.json'. Jak to się odnosi do WebPacka? –

Odpowiedz

6

W tym przypadku będzie działał podobnie jak CommonJS require s (np. Węzeł require s). (WebPACK za require s wspierać większą elastyczność niż tradycyjne require s, ale domyślne zachowanie jest taka sama).

This Modules section in the docs wyjaśnia jak Node domyśla się co do powrotu z wywołania require(). Jeśli potrzebujesz "jquery", najpierw szuka natywnego modułu o tej nazwie, nie znajduje go, a następnie szuka w node_modules (ponieważ na początku twojej ścieżki nie ma żadnego lub ./). Ponieważ "jquery" jest folderem, sprawdza plik package.json, aby zobaczyć, co deklaruje plik pakietu, który ma być, i to właśnie on wykonuje.

Warto przeczytać całość; na przykład ważna jest część pamięci podręcznej.

+0

dziękuję za odpowiedź, więc to co mówisz, to że Webpack po prostu przekazuje 'require' call do' Node' i używa tego, co zostało zwrócone? –

+0

@Maximus Robi inne rzeczy, aby obsługiwać bardziej elastyczne wymagają rozdzielczości, wtyczek itp. ... ale tak, myślę, że jeśli napiszesz węzeł 'require's, to ostatecznie przenosi się do Węzła. Z pewnością zachowanie jest takie samo. –

+0

Rozumiem, ok, dziękuję, informacje o pakiecie sieci Web wciąż brakuje –