2012-06-13 29 views
6

Tôi gặp sự cố với requirejs. Có lẽ tôi không thực sự có được làm thế nào nó nên được làm việc, nhưng đối với tôi nó có vẻ khá counterproductive rằng requirejs không cho phép tôi chia mã của tôi thành các kịch bản độc lập khác nhau. Vì tôi đang sử dụng Play và ngôn ngữ mẫu của nó để xây dựng cấu trúc của trang, tôi đã cố gắng chèn logic javascript khác nhau vào các phần khác nhau của trang thành phần-khôn ngoan. Ví dụ: tôi có một main.scala.html chứa các thành phần mà mọi trang cần, hoàn toàn với logic js của chúng. Khi một trang khác cần một thanh điều hướng, tôi chèn nó cùng với logic tương ứng. Vì vậy, tôi có một main.js và một navigation.js. Vì chúng chỉ phụ thuộc vào Jquery di động và không phải trên nhau, tôi muốn tải chúng với các thẻ khác nhau. Kịch bản thứ hai không bao giờ được tải để trực giác của tôi là requirejs dường như không cho phép nhiều thuộc tính dữ liệu chính trên một trang.Nhiều tập lệnh với requirejs

Vì vậy, câu hỏi của tôi là: có thể có nhiều tập lệnh độc lập trong một trang bằng cách sử dụng requirej không? Và nếu không, tại sao?

Cảm ơn trước

+0

và câu hỏi của tôi là: đâu là mã của bạn? – Joseph

Trả lời

3

Ý tưởng là bạn chỉ có một data-main thuộc tính mà tải main.js, sau đó bên main.js bạn có điều kiện có thể tải tập lệnh khác

if (something) { 
    require(["this"], function(this) { ... }); 
} else { 
    require(["that"], function(that) { ... }); 
} 

Xem: http://requirejs.org/docs/start.html

Hoặc tôi đã hiểu sai câu hỏi chưa?

+0

Vâng, đó là câu hỏi của tôi. Nó dường như không thực tế đối với tôi. Nhưng nếu đó là cách duy nhất để làm điều đó, tôi sẽ đi cho nó. Cảm ơn nhiều. – Calardan

+1

Tôi đồng ý với @Calardan ... cách bạn đã mô tả giải pháp này, nhu cầu chính cần biết về mọi tập lệnh mà tôi có thể cần trong toàn bộ trang web ... điều đó dường như không phải là mối quan tâm tốt. – Mir

0

dữ liệu chính là khi bạn chỉ yêu cầu một ứng dụng yêu cầu một trang của bạn. Nếu bạn có nhiều, không sử dụng dữ liệu chính. Nó khá đơn giản, đây là một ví dụ sử dụng main.js của bạn và navigation.js

<script src='require.js'></script> 
<script> 
    require(['main']); 
    require(['navigation']); 
</script> 

Mặc dù tôi cho rằng trang của bạn không cần navigation.js. Xử lý từng trang dưới dạng ứng dụng. Vì vậy, dữ liệu chính như bình thường trong main.js.

Và sau đó bên main.js:

// start independent load of navigation.js 
require(['navigation']); 
// load modules required for main 
require(['moduleA', 'moduleB'], function(moduleA, moduleB){ 
    // inside main.js 
}); 
Các vấn đề liên quan