2013-08-10 21 views
5

Tôi đã tự hỏi cách tạo mô-đun requirejs với nhiều tệp. e.x. Tôi yêu cầu một tập tin mà sau đó bằng cách nào đó được nhiều tập tin. Tôi biết tôi có thể làm điều này:Cách tạo mô-đun requirejs với nhiều tệp

define([all the other files], function() { 
    var mod = {}, 
     files = [all the other files]; 
    arguments.forEach(function (i) { 
    mod.[files[i]] = i; 
    }); 
    return mod; 

}); 

nhưng tôi đã tự hỏi liệu có phương pháp nào tốt hơn không?

+0

Hãy xem điều này - http://requirejs.org/docs/api.html#modulename – JohnP

+0

Đó không phải là những gì tôi yêu cầu, Hoàn toàn ngược lại, tôi muốn một mô-đun, nhiều tệp, tên mô-đun là cho một tệp, nhiều mô-đun. – swissnetizen

+0

AFAIK, 'đối số' không có phương thức' forEach', nhưng tôi hiểu mã giả. Những gì bạn đề nghị có vẻ là cách đơn giản nhất. –

Trả lời

0

Bạn muốn danh sách tệp động (.txt, .tpl, .htm, .json), để tránh thay đổi mã nguồn JS để thêm tệp khác.

Tôi không biết liệu có cách nào để làm điều đó không, nhưng bạn phải cẩn thận về thời gian sẽ thực hiện để tải xuống tất cả các tệp này. Tôi đề nghị bạn tạo một tệp json với tất cả các tệp mà bạn muốn tải xuống và lặp qua mảng tệp này bằng ajax để nhận chúng.

Nếu bạn cố gắng lấy tất cả mô-đun bên trong một thư mục, bạn cần phải tạo tệp js: <package-all>.js để đóng gói ví dụ require([all files],function());.

Tôi tin rằng đây là cách duy nhất để giải quyết vấn đề này.

0

đầu tiên, hãy viết các module như thế này,

define(function(){ 
    return { 
     'mod-a' : require('modules/mod-a'), 
     'mod-b' : require('modules/mod-b'), 
     'mod-c' : require('modules/mod-c') 

    } 
}) 

sau đó sử dụng để tối ưu hóa r.js js trên để thổi một (r.js sẽ kết hợp tất cả các tập tin module để một), hoặc, bạn có thể viết như thế này trực tiếp:

define('modules/mod-a', [], function(){}); 
define('modules/mod-b', [], function(){}); 
define('modules/mod-c', [], function(){}); 

define('mod-all', ['modules/mod-a','modules/mod-b','modules/mod-c'], function(){ 

    return { 
     'mod-a' : require('modules/mod-a'), 
     'mod-b' : require('modules/mod-b'), 
     'mod-c' : require('modules/mod-c') 
    } 
}) 

bây giờ, mô-đun 'mod-tất cả' là điều bạn muốn.