khi tôi kiểm tra nguồn trang html, các thẻ HTML và nội dung văn bản được nén mà không có trống và dòng, nhưng nội tuyến javascript.Làm thế nào để làm cho mẫu Jade nén javascript nội tuyến tự động?
Trả lời
Tôi không chắc chắn về nó và chưa thử nghiệm, nhưng bạn có thể thêm một bộ lọc và sử dụng UglifyJS. Ví dụ:
var uglyParser = require("uglify-js").parser;
var uglyUgly = require("uglify-js").uglify;
var uglify = function(str) {
var ast = uglyParser.parse(str);
ast = uglyUgly.ast_mangle(ast);
ast = uglyUgly.ast_squeeze(ast);
return uglyUgly.gen_code(ast);
}
Thành thật mà nói, tôi không chắc phải đặt nó ở đâu để nó được coi là bộ lọc. Bây giờ bạn sẽ có thể chỉ cần dán nó tại https://github.com/visionmedia/jade/blob/master/lib/filters.js.
Việc sử dụng trong ngọc sau đó sẽ là:
script(type="text/javascript")
:uglify
<Your JavaScript Code>
Một lần nữa tôi đã không kiểm tra nó. Nhưng tôi nghĩ nó sẽ hoạt động. Tôi sẽ kiểm tra nó sau ngày hôm nay.
Chỉ cần phát hiện ra một cái gì đó mà làm việc cho tôi trong Jade v0.30.0:
- Đổi tên tập tin .js bạn bằng tiện ích .uglify
Trong mẫu Jade của bạn, sử dụng:
include name-of-javascript-file.uglify
Lý do hoạt động: Tìm hiểu mã nguồn của Jade, tôi đã phát hiện ra tệp có tên filters.js
. Trong đó, bạn sẽ thấy sự phụ thuộc vào transformers
. Trong lib/transformers.js
(của mô-đun máy biến áp), bạn sẽ thấy các tiện ích biến đổi khác nhau, bao gồm uglify
. Rõ ràng, Jade sẽ gọi bất kỳ máy biến áp nào nếu bạn khớp với phần mở rộng tập tin phù hợp trong tờ khai include
của bạn.
Theo the docs, bạn có thể sử dụng bất kỳ bộ lọc JSTransformer nào làm bộ lọc ngọc bích. Vì vậy, nơi bạn thường sẽ làm điều này với nội tuyến JS:
script.
(function doSomething() { … })();
bạn nên làm điều đó như thế này:
script
:uglify-js
(function doSomething() { … })();
Hoạt động hoàn hảo, cảm ơn! –
- 1. Tự động xóa các biểu mẫu nội tuyến ở Django
- 2. Làm cách nào để bạn tự động đặt bố cục cho mẫu Jade để mở rộng trong Node.js/Express 3.0?
- 3. Điều kiện nội tuyến trong Jade
- 4. Làm cách nào để Javascript nội tuyến (trong HTML) hoạt động?
- 5. C# Làm thế nào để nén nội dung .ashx?
- 6. javascript nội tuyến trong tay lái mẫu
- 7. Làm thế nào để làm cho javascript này hoạt động?
- 8. Làm cách nào để tách javascript nội tuyến khỏi nội dung được tạo động trong Express/Node.js?
- 9. Nén JavaScript tự động bằng PowerShell
- 10. Mẫu Jade làm bộ tiền xử lý cho html
- 11. Làm cách nào để đặt biến số javascript cho hàm trả về của hàm nội tuyến?
- 12. Làm thế nào để ghi đè lên css nội tuyến thông qua javascript?
- 13. Làm thế nào để sử dụng các mẫu gạch dưới thay vì Jade trong Express?
- 14. Mẫu Ruby: Làm thế nào để chuyển các biến vào ERB nội tuyến?
- 15. Tự động tạo các kiểu css nội tuyến cho các mẫu email trong Symfony2
- 16. Làm thế nào để giải nén xlsx?
- 17. Làm cách nào để tạo biểu mẫu động bằng JavaScript?
- 18. Làm cách nào để bao gồm JavaScript nội tuyến trong Haml?
- 19. Làm thế nào để tạo một tệp JavaScript thuần túy với Jade
- 20. Làm thế nào để giải nén io.ReadCloser?
- 21. Mẫu C++ và nội tuyến
- 22. Làm thế nào để nén chuỗi?
- 23. Làm cách nào để giải nén nội dung của tệp JavaScript?
- 24. Làm cách nào để gửi biểu mẫu tự động khi tải trang trong JavaScript?
- 25. Làm cách nào để bạn lưu thứ tự của một tập hợp nội tuyến django?
- 26. Làm cách nào để xem nội dung tệp nén
- 27. Làm thế nào để zlib nén QByteArray?
- 28. Làm thế nào để thiết lập phong cách nội tuyến cho các phần tử trong HAML
- 29. Làm thế nào để tự động thay thế nội dung trong TinyMCE?
- 30. Làm thế nào để tắt tự động tạo biểu định kiểu/javascript trên Rails 3.1?
Tôi có vấn đề này quá, và không nghĩ nó đủ quan trọng để nén nó là bằng tay. Uglifying javascript sẽ hữu ích hơn IMHO. Nhưng tôi muốn thêm rằng dấu chấm phẩy không được yêu cầu trong javascript, và nén javascript nội tuyến tự động sẽ cần phải phân tích đầu tiên và hiểu những nơi cần dấu chấm phẩy. – TiansHUo