2016-02-25 33 views
6

Tôi không hiểu cách hoạt động của chức năng require của webpack. Ví dụ, tôi đang đọc this article về webpack và có ví dụ sau:Yêu cầu của webpack hoạt động như thế nào?

Hãy bắt đầu bằng cách tạo ra dự án của chúng tôi và cài đặt Webpack, chúng tôi sẽ cũng kéo trong jQuery để chứng minh một số điều sau này.

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

Bây giờ hãy tạo điểm vào ứng dụng của chúng tôi, ở đồng bằng ES5 cho bây giờ:

src/index.js

var $ = require('jquery'); 

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

Và hãy tạo Webpack của chúng tôi cấu hình, trong tệp webpack.config.js. cấu hình Webpack chỉ là Javascript, và cần phải xuất khẩu một đối tượng :

webpack.config.js

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

Làm thế nào để webpack biết là những gì jquery trong require('jquery')? Tôi không thấy bất kỳ tùy chọn cấu hình nào được chỉ định liên quan đến jquery.

+0

Vâng, nó chỉ tải xuống jquery và đặt nó vào thư mục 'node_modules' và thêm nó làm phụ thuộc vào' package.json'. Làm thế nào mà liên quan đến webpack? –

Trả lời

6

Trong trường hợp này, nó sẽ hoạt động giống như CommonJS require s (ví dụ: Node require s). (Webpack của require s hỗ trợ linh hoạt hơn truyền thống require s, nhưng hành vi mặc định là như nhau.)

This Modules section in the docs giải thích cách Node con số ra những gì để trở về từ một cuộc gọi đến require(). Nếu bạn yêu cầu 'jquery', đầu tiên nó sẽ tìm một mô-đun gốc của tên đó, không tìm thấy mô-đun, và sau đó tìm trong node_modules (vì không có / hoặc ./ ở đầu đường dẫn của bạn). Vì 'jquery' là một thư mục, nó nhìn vào tệp package.json để xem nó khai báo tệp main của gói là gì và đó là những gì nó thực thi.

Điều đáng đọc là toàn bộ điều; phần bộ nhớ đệm, ví dụ, là quan trọng cần biết.

+0

cảm ơn câu trả lời của bạn, vì vậy những gì bạn nói là webpack chỉ đơn giản là đại biểu 'require' gọi để' Node' và sử dụng bất cứ điều gì nó trở lại? –

+0

@Maximus Nó làm những thứ khác để hỗ trợ linh hoạt hơn đòi hỏi độ phân giải, bổ sung, vv ... nhưng có, tôi nghĩ rằng nếu bạn viết nút kiểu 'require's, nó cuối cùng đại biểu cho nút. Chắc chắn hành vi là như nhau. –

+0

Tôi hiểu, ok, cảm ơn, thông tin cho webpack vẫn thiếu –

Các vấn đề liên quan