2012-05-05 27 views
9

Tôi tự hỏi nếu có một cách để truyền tham số cho requireJS với tham số dữ liệu chính.Tham số chính với requireJS và dữ liệu chính

<script data-main="Main" src="lib/require/require.js"></script> 

tôi có thể giới thiệu globals:

<script> 
    var mainId = "Main"; 
    var mainTarget = "body"; 
</script> 
<script data-main="Main" src="lib/require/require.js"></script> 

Nhưng tôi đã tự hỏi nếu có một cách sạch hơn để làm điều đó. Cảm ơn!

EDIT:

Simon, đây là một kế hoạch tuyệt vời mà tôi nghĩ cho giá trị mục tiêu chính.

require([ 
    'plugins/load!./'+mainId+'.htm', 
    'plugins/load!./'+mainId+'.css' 
],function(html,css){ 
    var Main = function(){ 
     this.__proto__ = mainTarget; 
    } 
    new Main(); 
} 

Làm cách nào để áp dụng điều này cho mainId?

+0

thể trùng lặp của [Làm thế nào để tải mô hình bootstrapped trong Backbone.js khi sử dụng bộ xử lý AMD (require.js)] (http://stackoverflow.com/questions/9916073/how-to-load-bootstrapped-models-in-backbone-js-while-using-amd-require-js) –

Trả lời

15

Một cách để đạt được điều này là để tạo ra một mô-đun trên toàn cầu hoặc phổ biến và chỉ sử dụng nó như là một sự phụ thuộc:

global.js

define({ 
    foo: 'test', 
    bar: 'red' 
}); 

Sử dụng toàn cầu:

require(['global'], function(global) { 
    console.log(global.foo) // 'test' 
}); 

Điều này dựa vào các thuộc tính đối tượng chung được giữ trong tệp JS. Nó cũng là một mô hình phổ biến để xuất dữ liệu từ phía máy chủ vào một đối tượng JS trong trang HTML. Để làm điều này, bạn chỉ cần đặt tên cho mô đun của mình.

<head> 
    <script> 
     define('global', { 
      mainId: 'Main', 
      mainTarget: 'body' 
     }) 
    </script> 
</head> 

main.js

require(['global'], function(global) { 
    console.log(global.mainId) // 'Main' 
}); 

Nếu bạn định nghĩa một mô-đun mà cần một tài sản toàn cầu, chỉ cần đặt các module global như một sự phụ thuộc.

Bạn cũng có thể sử dụng tùy chọn priority cấu hình để đảm bảo mô-đun trên toàn cầu của bạn được nạp trước khi bất cứ điều gì khác - http://requirejs.org/docs/api.html#config

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