2012-08-24 33 views
5

Tôi đang cố gắng quấn quanh đầu phụ thuộc vào requirejs.Bối rối về sự phụ thuộc của RequireJS

  1. Nếu tôi đã khai báo phụ thuộc cho tệp bằng cách sử dụng shim, tôi có cần phải khai báo lại khi tôi xác định mô-đun trong tệp đó không?
  2. Nếu tôi sử dụng require để tải các phụ thuộc như xương sống, tôi có cần khai báo lại khi tôi xác định một mô-đun được tải như một phần của require không?

Dưới đây là mã của tôi cho đến nay:

require.config({ 
    //alias 
    paths: { 
     Backbone: 'libs/backbone-min', 
     Config: 'config', 
     Dom: 'dom', 
     App: 'app' 
    }, 

    //dependencies 
    shim: { 
     'Backbone': ['libs/underscore-min'], 
     'Dom': ['libs/sizzle'] 
    } 
}); 

//used to load and use stuff 
require(['Config','Dom','App','Backbone'], function(){ 

}); 

Vì vậy, trong dom.js có thể tôi chỉ xác định một mô-đun sử dụng define(function(){...}); và bắt đầu sử dụng sizzle? Hoặc tôi vẫn cần phải xác định nó như thế này define(['libs/sizzle'], function(){...});

Ngoài ra nếu tôi xác định một mô-đun trong app.js, tôi vẫn cần tải xương sống trong define, vì tôi đã thêm nó vào một phần của require().

Trả lời

1

1) Nếu tôi đã khai báo phụ thuộc cho một tệp bằng shim, tôi có cần để xác nhận lại khi tôi xác định mô-đun trong tệp đó không?

Đối với mọi mô-đun bạn cần xác định bộ phụ thuộc của nó.

2) Nếu tôi sử dụng cần để tải phụ thuộc như xương sống, tôi cần lại tuyên bố nó khi tôi định nghĩa một mô-đun được nạp như một phần của yêu cầu?

Nếu bạn muốn sử dụng xương sống như phụ thuộc vào modyle tùy ý bạn có thể viết

define(['backbone'], function(Backbone) { .. } 
+0

nên về cơ bản 'Shim' chỉ đơn giản là tải các tập tin theo một thứ tự cụ thể và' require() 'tải các tập tin và làm không tương tác với các mô-đun –

+5

Câu trả lời hay nhất về câu hỏi mà Shim thực sự làm là do tác giả James Burke của RequireJS đưa ra. Bạn có thể đọc thư đó trên url sau: https://groups.google.com/d/msg/requirejs/-han0L_Sv_E/iFttMxDkT1UJ – svlada

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