Từ require.js source code (dòng 1902):
/**
* The function that handles definitions of modules. Differs from
* require() in that a string for the module should be the first argument,
* and the function to execute after dependencies are loaded should
* return a value to define the module corresponding to the first argument's
* name.
*/
Chức năng define()
chấp nhận hai thông số tùy chọn (một chuỗi đại diện cho một ID mô-đun và một loạt các module bắt buộc) và một tham số bắt buộc (phương thức factory).
Trả lại phương thức nhà máy PHẢI trả về việc triển khai cho mô-đun của bạn (theo cùng cách mà Module Pattern thực hiện).
Chức năng require()
không phải trả lại việc triển khai mô-đun mới.
Sử dụng define()
bạn đang yêu cầu cái gì đó như "chạy chức năng mà tôi đang đi qua như một tham số và gán bất cứ điều gì trở lại ID mà tôi đang đi qua nhưng, trước đó, kiểm tra xem những phụ thuộc được nạp".
Sử dụng require()
bạn đang nói cái gì đó như "chức năng mà tôi vượt qua có sự phụ thuộc sau, kiểm tra xem những phụ thuộc được nạp trước khi chạy nó".
Chức năng require()
là nơi bạn sử dụng các mô-đun xác định, để đảm bảo rằng các mô-đun được xác định, nhưng bạn không xác định mô-đun mới tại đó.
Có sự khác biệt nào về việc liệu yêu cầu có được sử dụng trong mô-đun xác định hoặc bên ngoài mô-đun không? Nếu nó được sử dụng bên trong một mô-đun, tại sao không chỉ thiết lập các yêu cầu trong định nghĩa mô-đun hơn là sử dụng yêu cầu? – Petri
Tại sao câu trả lời này lại khác với những gì tôi đọc ở đây http://requirejs.org/docs/api.html#deffunc ?? –
@Petri, có vẻ như bạn đang thấy hành vi tải phiên bản 2 của RequireJS không đồng bộ. "RequireJS 2.0 sẽ không thực thi chức năng nhà máy của mô-đun (hàm được chuyển đến' define() '), cho đến khi có một cuộc gọi' require ([]) 'đã yêu cầu nó, hoặc cái gì đó phụ thuộc vào nó." https://github.com/jrburke/requirejs/wiki/Upgrading-to-RequireJS-2.0#delayed – alxndr