2008-10-20 21 views

Trả lời

4

Trước hết, YUI Compressor.

Việc sắp xếp chúng được tổ chức tùy thuộc vào bạn, nhưng hầu hết các nhóm mà tôi đã xem chỉ có đưa ra quy ước có ý nghĩa đối với ứng dụng của chúng.

Nói chung là tối ưu để đóng gói tệp của bạn theo cách sao cho bạn có một số lượng nhỏ các gói có thể được đưa vào bất kỳ trang nhất định nào để lưu vào bộ đệm tối ưu.

Bạn cũng có thể xem xét việc chia javascript của mình thành các phân đoạn dễ dàng chia sẻ trong toàn bộ nhóm.

+0

Ngoài ra còn có một phiên bản trực tuyến: http://refresh-sf.com/yui/ – ine

1

Tôi sẽ có một thư mục cho tất cả javascript và thư mục con của thư mục thứ ba/thư viện được chia sẻ và thư mục con cho từng thành phần của trang web để giữ mọi thứ được sắp xếp.

Ví dụ:

/ 
+--/javascript/ 
    +-- lib/ 
    +-- admin/ 
    +-- compnent1/ 
    +-- compnent2/ 

Sau đó chạy tất cả mọi thứ thông qua một minifier/obfuscator trong quá trình xây dựng.

6

Tổ chức

Tất cả các kịch bản của tôi được duy trì trong một cấu trúc thư mục mà tôi làm theo bất cứ khi nào tôi làm việc trên một trang web. Cấu trúc thư mục bình thường đi một cái gì đó như thế này:

+--root 
    |--javascript 
     |--lib 
     |--prototype.js 
     |--scriptaculous 
      |--scriptaculous.js 
      |--effects.js 
      |--.. 
     |--myOwnScript.js 
     |--myOwnScript2.js 

Nếu, cơ hội giảm giá, mà tôi đang làm việc trên một đội sử dụng một số tiền inordinate kịch bản, sau đó tôi sẽ thường tạo ra một tùy chỉnh thư mục trong chúng tôi sẽ tổ chức các kịch bản theo mối quan hệ. Tuy nhiên, điều này không xảy ra khủng khiếp.

nén

Mặc dù có rất nhiều máy nén và bộ obfuscate khác nhau trên mạng, tôi luôn luôn trở về với YUI Compressor.

Bao gồm

Trừ khi một trang web đang sử dụng một số hình thức của một trang chính, CMS hoặc thứ gì đó quyết định những gì có thể được đưa vào một trang ngoài tầm kiểm soát của tôi, tôi chỉ bao gồm các tập lệnh nhất thiết là cho trang đã cho chỉ vì lợi ích nhỏ. Nếu một trang không yêu cầu bất kỳ tập lệnh nào, sẽ không có vùi tập lệnh trên trang đó.

0

Trong dự án cuối cùng của tôi, chúng tôi có ba loại tệp JS, tất cả chúng trong một thư mục JS.

  1. Mã thư viện. Một loạt các chức năng được sử dụng trên hầu hết tất cả các trang, vì vậy chúng được đặt cùng nhau trong một hoặc một vài tệp.
  2. Lớp học. Các tệp này có các tệp riêng của chúng, được sắp xếp trong các thư mục nếu cần nhưng không nhất thiết phải như vậy.
  3. Ad hoc JS. Mã cụ thể cho trang đó. Chúng được lưu trong các tệp có cùng tên với các trang JSP mà chúng được cho là chạy.

Nỗ lực lớn nhất là có hầu hết mã trên hai loại đầu tiên, có mã tùy chỉnh chỉ biết những gì gọi và khi nào.

0

Đây có thể là một cách tiếp cận khác với những gì bạn đang tìm kiếm, nhưng tôi đã thử nghiệm ý tưởng về các mẫu JavaScript trong công cụ blog của chúng tôi. Tóm lại, bạn gán một mẫu Javascript cho một id trang sử dụng cơ sở dữ liệu và nó sẽ bao gồm và rút gọn tất cả các tệp JavaScript được liên kết với mẫu đó và tạo một tệp trong bộ nhớ cache phía máy chủ với id mẫu làm tên tệp. Khi một trang được tải, nó sẽ gọi tệp mẫu trước tiên sẽ kiểm tra xem tệp có tồn tại trong bộ nhớ cache hay không và tải nó nếu có. Nếu nó không tồn tại, nó tạo ra nó trên bay và bao gồm nó. Tôi cũng sử dụng tệp mẫu để gzip tệp JavaScript của tập đoàn.

Ý tưởng mẫu sẽ hoạt động tốt cho JavaScript trên toàn trang web (như thư viện JavaScript) nhưng không bao gồm JavaScript dành riêng cho từng trang. Tuy nhiên, bạn vẫn có thể sử dụng cùng một cách tiếp cận cho JavaScript cụ thể của trang bằng cách bao gồm tệp thứ hai thực hiện tương tự như trên.

4

Cal Henderson (của Flickr nổi tiếng) đã viết Serving JavaScript Fast một thời gian trở lại. Nó bao gồm việc phân phối nội dung chứ không phải tổ chức, nhưng nó có thể trả lời một số câu hỏi của bạn.

Dưới đây là những điểm đạn:

  • Có, bạn phải nối các file JavaScript trong sản xuất để giảm thiểu số lượng yêu cầu HTTP.
  • NHƯNG bạn có thể không muốn ghép vào một tệp khổng lồ; bạn có thể muốn chia nó thành các phần hợp lý và trải rộng chi phí chuyển đổi qua một vài trang.
  • nén gzip là tốt, nhưng bạn không nên phân phối nội dung được nén vào IE < = 6, vì vậy bạn cũng có thể muốn rút gọn/nén JavaScript của mình.

Tôi sẽ thêm một vài điểm nhấn của riêng tôi:

  • Bạn nên đưa ra một giải pháp mà làm việc cho cả hai phát triển và sản xuất. Trong chế độ phát triển, nó sẽ kéo thêm các tệp JavaScript theo yêu cầu; trong quá trình sản xuất, nó phải bó mọi thứ trước thời hạn. Chuyển đổi từ một hành vi này sang hành vi khác phải dễ dàng như việc đặt cờ.
  • Rails 2.0 xử lý tất cả điều này thông qua asset cache; các khung ứng dụng web khác có thể cung cấp các giải pháp tương tự.
  • Như một câu trả lời khác cho thấy, việc đặt thư viện của bên thứ ba trong thư mục lib là một khởi đầu tốt. Bạn cũng có thể chia các tệp JS của riêng bạn thành các thư mục con nếu nó có ý nghĩa. Lý tưởng nhất, bạn sẽ có thể sắp xếp chúng theo cách sao cho các tệp trong một thư mục con nhất định có thể được nối vào một tệp.
Các vấn đề liên quan