Tôi thường gắn JS của tôi ở phần dưới phần thân của tôi (theo HTML5Boilerplate), nhưng từ TurboLinks, sẽ là on by default trong Rails 4, tải lại phần thân (và tựa đề) theo mọi yêu cầu, có ý nghĩa không để đặt JS của tôi trong đầu từ bây giờ? Có hướng dẫn hay thực hành tốt nhất về điều này chưa?Rails 4 + Turbolinks: JS ở đầu hoặc ở dưới cùng của cơ thể?
Trả lời
Cũng được biên dịch trước application.js (theo đường ống nội dung) được bật và ở đầu theo mặc định. Lý do là ngay cả khi js được tải trước phần còn lại của trang, vì js luôn giống nhau, nó sẽ được tải từ bộ nhớ cache từ yêu cầu thứ hai trở đi, vì vậy không có lý do thực sự nào để phân phối nó ở dưới cùng của cơ thể nữa.
Nếu bạn đang sử dụng Turbolinks 5, bây giờ bạn có thể đặt turbolinks ở dưới cùng của cơ thể của bạn (và làm theo các thực hành tốt nhất cho web dev để hiển thị một trang). Điều này cũng giúp với SEO bao giờ nên hơi. Chỉ cần thêm kịch bản của bạn để dưới cùng của cơ thể của bạn và thêm
data-turbolinks-eval="false"
vào thẻ script của bạn. Điều này sẽ ngăn chặn turbolinks đánh giá sau tải trang ban đầu. Dưới đây là cách nó được thực hiện với sự javascript_include_tag
:
<%= javascript_include_tag 'application', 'data-turbolinks-eval' => 'false'%>
Sau đó, chỉ cần sử dụng
$(document).on('turbolinks:load', function() { // code to be executed when use changes pages });
- 1. Rails 4 turbolinks với Google Analytics
- 2. tab ở phía dưới cùng của TabControl
- 3. UIRefreshControl ở dưới cùng của UITableView iOS6?
- 4. Thanh dưới cùng ở NSWindow
- 5. Mũi tên ở dưới cùng của Hộp thoại jQuery
- 6. Dừng UITableView qua cuộn ở trên cùng và dưới cùng?
- 7. Nhận xét trên Facebook w/Rails 4 và Turbolinks
- 8. JQuery Detect Scroll ở dưới cùng
- 9. Đặt WinForm ở dưới cùng bên phải
- 10. WPF Xóa Không gian Thêm ở dưới cùng của ListBox
- 11. Tài liệu Python ở đây không có dòng mới ở trên cùng và dưới cùng
- 12. Tại sao tôi nhận được khoảng trắng ở trên cùng và ở dưới cùng của ImageView trong RelativeLayout của tôi?
- 13. Có thể làm cho Vim của completeopt xuất hiện ở dưới cùng của màn hình?
- 14. Dòng trắng ở dưới cùng của ô UITableView ở cuối phần trong TableView TableView (iOS 5)
- 15. Cắt ScrollView ở trên cùng và để khoảng trống ở dưới cùng
- 16. Làm cách nào để làm cho hình ảnh bắt đầu ở dưới cùng của vùng chứa?
- 17. Android Không thể xóa màu ở trên cùng và dưới cùng
- 18. Cách tạo thanh tải kiểu Youtube bằng Turbolinks của Rails 4?
- 19. Bóng hộp không hiển thị ở trên cùng hoặc dưới cùng
- 20. Chế độ xem Ember được hiển thị ở dưới cùng của DOM
- 21. Cách kiểm tra xem thanh cuộn có ở dưới cùng
- 22. Turbolinks: cách Rails 4 hiển thị tiến trình cho các trang chậm là gì?
- 23. Căn chỉnh các ô ở dưới cùng và trên cùng của UITableView, để khoảng cách có thể giãn ra ở giữa
- 24. Căn chỉnh nút Android ở dưới cùng trong RelativeLayout?
- 25. Căn chỉnh Div ở dưới cùng trên chính Div
- 26. Tùy chỉnh FragmentTabHost đặt TabWidget ở dưới cùng
- 27. vim chia bộ đệm và mở nó ở dưới cùng
- 28. Ca cao: Nguồn gốc NSView x ở phía dưới cùng
- 29. VBA Excel - tổng dòng để thêm đường viền ở trên cùng và dưới cùng chỉ
- 30. Hiển thị lại tệp js cụ thể với turbolinks được bật
cảm ơn, đó là đủ tốt cho tôi :) – stephenmurdoch
nó lưu trữ các tập tin, nhưng nó vẫn cần phải chờ đợi cho js để tải (nếu toàn bộ trang được tải), phải không? Sẽ không phải là một thuộc tính 'async' cung cấp những lợi ích của việc thêm vào phía dưới mà không được tải lại bởi Turbolinks? – michelpm
Với các tài sản dựa trên đường ray bình thường, bạn sẽ có một js được nén, rút gọn thường được lưu trữ trong bộ nhớ cache của trình duyệt. Thời gian tải (như trong "tải mã") vẫn là một phần của tổng số tải xuống + chờ + thời gian tải cho js. Trong mọi trường hợp, TL chỉ tải toàn bộ trang ở chế độ nền, sau đó lấy các phần tử (tiêu đề, nội dung, v.v.) và hoán đổi chúng vào trang của bạn thay vì trang hiện tại. Đó là một hành vi đơn giản, có thể hoặc không thể dẫn đến tốc độ lớn hơn. Trong ví dụ thế giới thực, tôi thấy sprockets biên dịch javascript trong đầu quá đủ. – rewritten