2009-08-27 25 views
6

Tôi đã đọc cuốn sách của O'Reilly "Dojo - The Definitive Guid" nhưng đôi khi vẫn không dứt khoát với tôi.Dojo vs Dijit - tệp cần bao gồm hoặc tham chiếu?

Họ nói về "bootstrapping" và nhận được dojo.css từ AOL CDN".

Khi tôi đang thử nghiệm trên máy tính của tôi, tôi nên sử dụng CDN? Hoặc tôi nên chờ đợi và sử dụng rằng chỉ khi tôi triển khai

Thứ hai, các cuộc đàm phán cuốn sách về CDN cho võ đường, nhưng không phải cho dijit

tôi đang phát triển trên Google App Engine (GAE) -?. nên có 2000+ file Dojo/dijit trong Javascript của tôi thư mục hơi khó chịu vì nó làm chậm quá trình tải lên GAE của tôi mỗi lần.

Firebug là đem lại cho tôi lỗi này: GET http://localhost:8080/dijit/nls/dijit-all_en-us.js 404 không tìm thấy GET http://localhost:8080/dijit/_editor/plugins/FontChoice.js 404 không tìm thấy

tôi tải mẫu từ đây: http://archive.dojotoolkit.org/nightly/dojotoolkit/dijit/themes/themeTester.html?theme=soria và tôi muốn "đơn giản là" làm cho nó chạy trên của tôi máy dưới công cụ ứng dụng google cục bộ (đó là localhost: 8080 mà bạn thấy trong các URL ở trên).

Tôi thấy tuyên bố này có thể gây ra 404 thứ hai ở trên: dojo.require ("dijit._editor.plugins.FontChoice");

Một lỗi khác: không thể truy cập được tối ưu hóa việc đóng cửa tải trước ("en-us") dijit-all.js (dòng 479) nặc danh ("dijit.nls.dijit-tất cả", [ "ROOT", " ar "," ca ", 40 chi tiết ... 0 = ROOT 1 = ar 2 = ca 3 = cs 4 = da 5 = de 6 = de-de 7 = el 8 = vi 9 = vi-gb]) dijit- all.js (dòng 489) dijit-all.js() dojo.i18n._searchLocalePath (vị trí, đúng, hàm (loc) {\ n

Để tiếp tục bây giờ, tôi sẽ cố gắng sao chép toàn bộ thư viện dijit, nhưng có một giải pháp ngắn về điều đó không?

Tập lệnh hiện tại của tôi có dạng như sau:

<script type="text/javascript" src="/javascript/dijit.js"></script> 

<script type="text/javascript" src="/javascript/dijit-all.js" charset="utf-8"></script> 

Tôi có tập tin dijit.js bằng cách sao chép và đổi tên dijit.js.uncompressed.js để dijit.js.

Trả lời

8

Bạn có một vài lựa chọn thực sự:

  1. Bạn có thể sử dụng CDN cho tất cả mọi thứ (mặc dù sử dụng nguồn đầy đủ tại địa phương không cung cấp cho bạn các thông báo lỗi tốt hơn). Google has them as well. Dijit có tại đây: http://ajax.googleapis.com/ajax/libs/dojo/1.3.2/dijit/dijit.js FYI. Điều này có nhiều thuận lợi trong quan điểm của tôi. Bộ nhớ đệm người dùng của JS là bộ nhớ chính.

  2. Tạo tệp lớp. Tôi nghĩ rằng cuốn sách O'Reilly có một phần về nó nhưng các PragProg book là tốt hơn trong lĩnh vực này IMO. Ngoài ra còn có doc on dojocampus.org về tòa nhà này. Điều này sẽ cắt giảm các tệp bạn cần tải lên GAE và tăng tốc độ tải ứng dụng của bạn. Đây thực sự là những gì tôi làm để cắt giảm các yêu cầu HTTP.

  3. Tiếp tục làm những gì bạn đang làm. :)

Về lỗi bạn đang thấy về 404 đối với tệp en-us về cơ bản là vô hại. Here's a better description.

Bạn cũng có thể tải lại các tệp dijit bằng cách sử dụng dijit.uncompressed.js và dijit-all.js và gây ra sự cố trong quá trình ... nhưng tôi không chắc về vấn đề này.

0

Để giải quyết câu hỏi đầu tiên của bạn, hãy sử dụng phiên bản nguồn đầy đủ cục bộ để phát triển để bạn có thể nhận được thông tin gỡ lỗi rõ ràng hơn trỏ đến dòng dễ đọc trong nguồn chứ không phải là dòng đơn. Sử dụng CDN để sản xuất.

2

Tôi chỉ muốn làm rõ rằng khi sử dụng CDN, tất cả những gì bạn cần đưa vào là kịch bản Dojo chính. Phần còn lại sẽ được kéo tự động khi bạn dojo.require() chúng.

Nếu vì một số lý do (kỹ thuật) bạn không muốn sử dụng trình tải X-Domain (CDN sử dụng loại trình tải này), bạn có thể tạo bản dựng tùy chỉnh (được mô tả ở nhiều nơi). Sau khi xây dựng, bạn chỉ sao chép các tệp có liên quan vào máy chủ của bạn. Không cần sao chép tất cả 2000 bài kiểm tra, trình diễn, các dự án DojoX không sử dụng, Dijits, v.v.

Trong khi xây dựng, bạn sẽ tạo một tệp được rút gọn đơn (hoặc một vài lớp), sẽ bao gồm tất cả mã JavaScript Dojo bạn sử dụng. Nếu bạn sử dụng các tiện ích Dojo, các mẫu của chúng sẽ được inlined, do đó bạn không phải chịu số lần truy cập cho chúng. Là một phần của tệp CSS xây dựng được kết hợp với nhau và được rút gọn. Vì vậy, theo nghĩa đen trong hầu hết các trường hợp, bạn sẽ chỉ có hai tệp: một lớp Dojo, bao gồm mọi thứ + mã tùy chỉnh của bạn và tệp CSS. Trong các trường hợp phức tạp hơn, bạn có thể có nhiều tệp hơn, nhưng thông thường chúng ta đang nói về số ít.

Làm cách nào để đảm bảo mọi thứ có trong bản dựng? Khởi động máy phân tích mạng yêu thích của bạn (Tiêu đề HTTP Trực tiếp, Firebug, Fiddler2 hoặc Charles Proxy sẽ hoạt động tốt) và xem bạn có nhấn bất kỳ tệp nào bên ngoài công trình của bạn hay không. Nếu bạn làm — bao gồm chúng trong bản dựng hoặc cố gắng tìm ra lý do chúng được yêu cầu và loại bỏ các yêu cầu này (một số cuộc gọi liên quan đến bản địa hóa là tốt).

Cá nhân tôi sẽ bắt đầu với tùy chọn CDN — hoạt động tốt, không có rắc rối, được lưu trữ bởi người khác có đường ống chất béo.

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