2013-03-31 36 views
5

Tôi đang cố gắng để kết hợp tất cả các plugin của tôi vì vậy tôi có thể thay đổi từ này:Sắp xếp và hợp nhất các tệp JS, Google Closure?

<html> 
    <head> 
    </head> 
    <body>  
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
     <script src="js/plugin1.js"></script> 
     <script src="js/plugin2.js"></script> 
     <script src="js/plugin3.js"></script> 
     <script src="js/plugin4.js"></script> 
    </body> 
</html> 

này:

<html> 
    <head> 
    </head> 
    <body>  
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
     <script src="js/plugins.min.js"></script> 
    </body> 
</html> 

Ý tưởng chính là phải có một công cụ để "tự động nhập khẩu" vào tôi plugins.js tập tin tất cả các plugin tôi cần cho các trang web của tôi và cũng giảm thiểu chúng khi biên dịch. Tôi đã thử nghiệm với Google Closure (phiên bản Java có thể tải xuống của trình biên dịch) và tôi đã tìm cách rút gọn tệp nhưng tôi không thể nhập tệp bên ngoài. Vì vậy, tôi muốn hỏi bạn nếu bạn có thể có thể cho tôi biết nếu Google Closure là công cụ tôi đang tìm kiếm hoặc nếu tôi nên sử dụng một công cụ hoặc phương pháp khác.

Với "nhập khẩu tự động" Ý tôi là cái gì đó như:

plugins/HELLO.JS

function hello(name) { 
    alert('Hello, ' + name); 
} 

PLUGINS.JS

@import hello.js 
hello('New user'); 

Tôi hy vọng tôi làm bản thân mình rõ ràng, tôi xin lỗi nếu Tôi rối tung với tiếng Anh của tôi.

Cảm ơn !!

+0

Bạn có thể muốn xem https://code.google.com/p/closure-compiler/wiki/ManageClosureDependencies. Tất nhiên, –

Trả lời

0

Bạn có thể muốn xem qua số require.js

+6

require.js giải quyết việc quản lý phụ thuộc tự động. Nhưng điều này có thể không luôn là chiến lược tối ưu, bởi vì nó giữ một số lượng lớn các yêu cầu vì mỗi tập lệnh đều cần một yêu cầu để tải (AFAIK, tôi không chắc chắn về điều đó) Có khả năng tự động hợp nhất tất cả các javascripts, để giảm thiểu số lượng yêu cầu không? – Richard

1

Trình biên dịch đóng có thể thực hiện chính xác những gì bạn muốn, nhưng chỉ với mã thư viện đóng cửa do sử dụng lệnh gọi goog.require. Với mã jQuery, tốt nhất nó có thể làm là biên dịch TẤT CẢ các plugin của bạn với nhau thành một tệp duy nhất, nhưng nó sẽ không tính đến việc sử dụng thực tế.

Thật không may, tôi không biết bất cứ điều gì sẽ làm điều này cho mã nói chung.

Lưu ý: Đây không phải là câu trả lời được chấp nhận cho câu hỏi. Câu hỏi được hỏi cụ thể về trình biên dịch đóng cửa và tôi muốn chắc chắn rằng ít nhất một nơi nào đó nó đã được tuyên bố rằng trình biên dịch sẽ không hoạt động như mong muốn.

5

Tôi đã tự hỏi mình câu hỏi tương tự và không tìm thấy câu trả lời có thể chấp nhận được. Chỉ cách để tham gia nhiều tác phẩm là đặt nhiều "--js" params trong dòng lệnh:

java -jar compiler.jar --js 1.js --js 2.js --js 3.js --js_output_file all.js 

tôi đã cố gắng đưa dòng như thế này (trong đó được sử dụng trong giao diện người dùng dịch vụ Closure Compiler):

// ==ClosureCompiler== 
// @code_url 1.js 
// @code_url 2.js 
// @code_url 3.js 
// ==/ClosureCompiler== 

... trong "main.js" và biên dịch nó - không có hiệu lực. :(

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