Một sự khác biệt cốt lõi mà bực mình tôi sử dụng đầu đã tìm ra rằng một define
có thể không bao giờ được gọi là.
Miễn là chỉ có một define
cho mỗi tệp, nó sẽ đăng ký mô-đun đó dưới dạng tên tệp đó. Tuy nhiên, các mô-đun define
chỉ được tải khi chức năng require
yêu cầu mỗi mô-đun.
Xác định: Nếu bạn cần XXX, sau đó tải những thứ khác lên trước, sau đó trả lại kết quả của hàm này.
Yêu cầu: Tải những thứ khác, sau đó chạy chức năng này. (Không có "nếu")
Ví dụ: Hãy nói rằng bạn bao gồm này JS tập tin trong trang của bạn:
// this is in company/welcomepage.js
define(['company/ui_library'],
function(uiLib) {
console.log('Welcome to {company}!');
}
);
Nếu đó là tập tin javascript chỉ, bạn có thể mở trang của bạn, và sẽ không có gì trong nhật ký bảng điều khiển, bất chấp tập lệnh yêu cầu nó chào mừng người dùng. Tuy nhiên, điều đó sẽ thay đổi nếu ở đâu đó trong trang hoặc trong một tập lệnh khác, bạn chèn thông tin sau:
require(['company/welcomepage'], function() {
// optionally insert some other page-initialization logic here
});
Bây giờ, trang sẽ đưa thông điệp chào mừng vào bảng điều khiển khi nó tải.
Thực tế, với địa chỉ thứ hai tại chỗ, sẽ không cần phải thủ công bao gồm welcomepage.js làm thẻ <script>
; nó sẽ tải nó từ vị trí của nó ngay sau khi nó thấy yêu cầu, và nhận ra nó cần nó.
Xem http://stackoverflow.com/questions/9507606/when-to-use-require-and-when-to-use-define –
Nó _is_ một bản sao nhưng ở đây giải thích nên được đưa ra dưới dạng ví dụ . –