2009-06-09 24 views
8

Tôi đã sử dụng yuicompressor.jar trên máy chủ thử nghiệm của mình để giảm thiểu các tệp JavaScript đã thay đổi. Bây giờ tôi đã triển khai trang web cho máy chủ công cộng, tôi nhận thấy rằng các chính sách của máy chủ cấm việc sử dụng lệnh exec() hoặc các tài khoản tương đương của nó, vì vậy không cần thực hiện thêm java cho tôi.YUICompressor hoặc tương tự trong PHP?

Có một máy nén JS chạy nhanh được thực hiện trong PHP không? Điều duy nhất giống như điều này mà tôi có thể tìm thấy là Minify, nhưng nó là một giải pháp nén toàn diện hơn với bộ nhớ cache và mọi thứ. Tôi muốn giữ cho các tập tin riêng biệt và có các tập tin thu nhỏ theo quy ước đặt tên của riêng tôi, vì vậy Minify là một chút quá phức tạp cho mục đích này.

Công cụ, như yuicompressor, có thể lấy tên tệp hoặc JavaScript làm đầu vào và phải ghi vào tệp hoặc xuất ra JavaScript đã nén.

EDIT: Để làm rõ, tôi đang tìm kiếm thứ gì đó không cần phải được sử dụng như một độc lập (tức là nó có thể được gọi từ một hàm, thay vì đánh hơi các biến GET của tôi). Nếu tôi chỉ muốn một máy nén, Minify rõ ràng sẽ là một lựa chọn tốt.

EDIT2: Rất nhiều thay đổi trong năm năm kể từ khi tôi hỏi câu hỏi này. Hôm nay tôi khuyên bạn nên tách luồng công việc front-end khỏi mã máy chủ. Có rất nhiều công cụ tốt để JS phát triển xung quanh và ngoại trừ những cải tiến jQuery tầm thường nhất, bạn nên có một quy trình làm việc đầy đủ với gói, thử nghiệm và linting tự động tại chỗ và chỉ triển khai các gói được rút gọn thay vì các tệp thô.

Trả lời

6

Có, nó được gọi là minify.

Điều duy nhất phải lo lắng về cách phức tạp là thiết lập một nhóm và thực sự không có gì. Chỉnh sửa các tập tin groupsConfig.php nếu bạn muốn nhiều JS/CSS trong một <script> hoặc <link> tuyên bố:

return array(
    'js-common' => array('//js/jquery/jquery-1.3.2.min.js', '//js/common.js', '//js/visuals.js', 
'//js/jquery/facebox.js'), 
    'css-common' => array('//css/main.css', '//css/layout.css','//css/facebox.css') 
); 

Để bao gồm các nhóm 'js-chung' ở trên, làm như sau:

<script type="text/javascript" src="/min/g=js-common"></script> 
+1

Như tôi đã nói. Tôi không thể tìm cách để chạy minify từ bên trong ứng dụng. Heck, nó thậm chí còn mong đợi một số tham số GET được thiết lập thay vì lấy một tên tập tin làm đối số. Nó có thể là tốt, nhưng không phải những gì tôi đang tìm kiếm. –

+0

Giảm thiểu không phức tạp. Bạn có thể có một tệp cụ thể được rút gọn đơn giản bằng cách sử dụng một cái gì đó như karim79

+1

Nó phức tạp về "API" của nó. Trên thực tế nó không thực sự có một. Đó là một công cụ độc lập đọc superglobals cho đầu vào. Nếu bạn có thể chỉ cho tôi một trình bao bọc cho phép tôi sử dụng Minify từ bên trong một ứng dụng, nó sẽ là một tùy chọn hợp lệ. –

0

Hãy thử Lissa :

Lissa là một tiện ích tải CSS và JavaScript chung. Lissa là một phần mở rộng của trình tải PHP YUI nhằm giải quyết một trong những hạn chế của trình tải hiện tại; tải kết hợp. YUI PHP Loader gửi kèm bộ tải kết hợp có khả năng giảm yêu cầu HTTP và tăng hiệu suất bằng cách xuất tất cả các yêu cầu JavaScript và/hoặc CSS của YUI làm yêu cầu duy nhất cho mỗi loại tài nguyên. Có nghĩa là ngay cả khi bạn cần 8 thành phần YUI mà cuối cùng đun sôi xuống để nói 13 tập tin bạn vẫn sẽ chỉ thực hiện 2 yêu cầu HTTP; một cho CSS và một cho JavaScript. Điều đó thật tuyệt, nhưng điều gì về các tài nguyên không phải YUI tùy chỉnh. YUI PHP Loader sẽ tải chúng, nhưng nó tải chúng như là bao gồm riêng biệt và do đó họ bỏ lỡ lợi ích của dịch vụ kết hợp và số lượng yêu cầu HTTP cho trang tăng lên. Lissa hoạt động xung quanh giới hạn này bằng cách sử dụng bộ tải PHP YUI để xử lý việc tải và sắp xếp YUI và/hoặc các phụ thuộc và cặp tài nguyên tùy chỉnh hoạt động với Minify.

3

(tôi biết tôi đang tìm kiếm điều tương tự không biết làm thế nào để đối phó trực tiếp với các tập tin jar sử dụng php - đó là cách tôi đã kết thúc ở đây vì vậy tôi đang chia sẻ những gì tôi tìm thấy)

Rút gọn là một thư viện khổng lồ với rất nhiều chức năng.Tuy nhiên phần rút gọn là một lớp rất nhỏ: http://code.google.com/p/minify/source/browse/trunk/min/lib/Minify/YUICompressor.php

& rất rất dễ sử dụng:

//set the path to the jar file 
Minify_YUIcompressor::$jarFile=_ROOT.'libs/java/yuicompressor.jar'; 
//set the path to a writable temp folder 
Minify_YUIcompressor::$tempDir=_ROOT.'temp/'; 

//minify 
$yourcssminified=Minify_YUIcompressor::minifyCss($yourcssstringnotminified,$youroptions) 

cùng quá trình cho js, ​​nếu bạn cần thêm chức năng chỉ cần chọn từ thư viện & đọc nguồn để xem cách bạn có thể thực hiện cuộc gọi trực tiếp từ ứng dụng của mình.

Tôi không đọc những câu hỏi tốt, vì giảm bớt được dựa vào việc sử dụng các tập tin jar, các op không thể sử dụng nó anyway với cấu hình máy chủ của mình

Giảm kích thước cũng bao gồm các phương pháp Giảm bớt khác hơn yui, ví dụ :

http://code.google.com/p/minify/source/browse/trunk/min/lib/JSMinPlus.php?r=443&spec=svn468

+0

Liên kết đầu tiên của bạn không hoạt động đối với tôi. Tôi đã sử dụng https://code.google.com/p/minify/source/browse/min/lib/Minify/YUICompressor.php – Aust

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