2014-09-26 14 views
15

Theo tài liệu this, thư mục public/ phải chứa nội dung tĩnh có thể được phân phối như cũ, trong khi thư mục app/assets tùy chọn phải chứa bất kỳ nội dung nào cần được xử lý. , bởi trình biên dịch minify trong giai đoạn xây dựng.Khung chơi: công khai/ứng dụng/tài sản/

Trong trường hợp SPA (Single Page Application), nội dung sẽ bao gồm tệp JavaScript, CSS và hình ảnh ... điều này có nghĩa là tệp hình ảnh phải được lưu trữ trong public/images trong khi tệp JavaScript và CSS trong app/assets/?

Sau đó, tôi cũng cần tích hợp mô-đun bên thứ ba bao gồm cả thư viện JavaScript được rút gọn và các tệp JavaScript không được rút gọn cần được tùy chỉnh ... Tôi nên quản lý điều này như thế nào? Tôi có nên giữ nội dung tiêu chuẩn, đã được rút gọn trong public/ và di chuyển các tệp JavaScript tùy chỉnh sang app/assets/javascripts/ không?

Trả lời

4

Vâng, những gì bạn mô tả là đúng.

Chơi kết hợp nội dung từ tài sản "không được quản lý" vào một thư mục duy nhất trong quá trình xây dựng "quản lý" và (như đã đề cập trong tài liệu https://www.playframework.com/documentation/2.3.x/AssetsCoffeeScript)

Nhưng aseets quản lý (ví dụ, app/assets) được biên soạn - ví dụ, javascript là chạy qua jshint và sau đó các phiên bản đã biên dịch được sao chép. Nội dung không được quản lý (tức là, public) được lấy "nguyên trạng", không xử lý.

Rõ ràng, không có hại khi đưa javascript của bạn vào thư mục public không được quản lý, nhưng sau đó bạn không tận dụng các tiện ích biên soạn mà Play cung cấp cho bạn.

Đối với thư viện chứa các tệp có thể tùy chỉnh, phụ thuộc. Tôi chắc chắn sẽ đặt các tập tin được rút gọn trong public, bởi vì nếu không bạn có thể nhận được lỗi biên dịch từ jshint. Các tệp tùy chỉnh - tùy thuộc vào mức độ tuỳ chỉnh. Nếu nó chỉ là "cài đặt" loại tùy biến nhỏ, tôi có thể xem xét việc đặt chúng cùng với các tệp thư viện khác chỉ để làm rõ. Nhưng nếu đó là bất cứ điều gì đang được phát triển tích cực và liên quan đến việc viết mã, tôi sẽ đặt nó app/assets để có được những lợi ích của việc kiểm tra cú pháp jshint.

Ngoài ra, như một lưu ý phụ, bạn có thể đặt hình ảnh của mình trong app/assets - chúng sẽ chỉ được sao chép mà không thay đổi. Nhưng tôi thấy rằng nó có xu hướng làm cho mọi việc chậm hơn bằng cách kích hoạt các bản sao không cần thiết bổ sung vào việc xây dựng lại, do đó, có những bản sao này trong thư mục không được quản lý hoạt động tốt hơn.

1

Tôi lưu trữ mọi thứ trong thư mục công cộng: css, javascript, hình ảnh và thậm chí ít tệp hơn (tài liệu này khuyên bạn nên đặt nó trong thư mục ứng dụng/nội dung). nó sẽ tự động được sao chép vào thư mục tài sản và mọi thứ hoạt động như mong đợi.

Đối với thư viện js của bên thứ ba, nếu nó chỉ là chữ j đơn giản (được rút gọn hay không), hãy đặt nó vào thư mục công cộng. Nếu có tập lệnh/tập lệnh cà phê nhỏ hơn, hãy cân nhắc theo tài liệu và đặt tất cả vào thư mục nội dung.

Nếu tập tin của bạn đang ở trong thư mục công cộng, thêm dòng này trong các mẫu của bạn:

<link href="@routes.Assets.at("stylesheets/myCss.css")" rel="stylesheet"> 
<script src="@routes.Assets.at("javascripts/myJs.js")" type="text/javascript" defer="defer" ></script>