Ngày nay, có ít nhất một tốt hơn công cụ, gọi là slimit
:
SlimIt là một Javascript minifier viết bằng Python. Nó biên dịch JavaScript thành mã nhỏ gọn hơn để nó tải xuống và chạy nhanh hơn .
SlimIt cũng cung cấp thư viện bao gồm trình phân tích cú pháp JavaScript, lexer, máy in đẹp và khách truy cập cây.
Demo:
Hãy tưởng tượng chúng ta có mã javascript sau:
$.ajax({
type: "POST",
url: 'http://www.example.com',
data: {
email: '[email protected]',
phone: '9999999999',
name: 'XYZ'
}
});
Và bây giờ chúng ta cần phải nhận được email
, phone
và name
giá trị từ đối tượng data
.
Ý tưởng ở đây sẽ được khởi tạo một phân tích cú pháp slimit
, hãy truy cập tất cả các nút, lọc tất cả các bài tập và đặt chúng vào từ điển:
from slimit import ast
from slimit.parser import Parser
from slimit.visitors import nodevisitor
data = """
$.ajax({
type: "POST",
url: 'http://www.example.com',
data: {
email: '[email protected]',
phone: '9999999999',
name: 'XYZ'
}
});
"""
parser = Parser()
tree = parser.parse(data)
fields = {getattr(node.left, 'value', ''): getattr(node.right, 'value', '')
for node in nodevisitor.visit(tree)
if isinstance(node, ast.Assign)}
print fields
It in:
{'name': "'XYZ'",
'url': "'http://www.example.com'",
'type': '"POST"',
'phone': "'9999999999'",
'data': '',
'email': "'[email protected]'"}
điều này có thể chính xác những gì tôi cần, vì tôi thực sự muốn mở rộng ngữ pháp javascript chuẩn. cảm ơn! – Claudiu
cả hai ngôn ngữ ecmascript/javascript cho antlr3 đều bị hỏng và không bị mờ. đó là cá trích đỏ. –