- PyScript cho phép nhúng mã Python vào HTML bằng WebAssembly, hỗ trợ các thư viện mạnh mẽ như NumPy và Pandas.
- Brython dịch mã Python sang JavaScript, lý tưởng cho việc thao tác nhẹ nhàng với DOM và các phần tử SVG.
- WebAssembly là công nghệ then chốt cho phép các ngôn ngữ biên dịch chạy trên web với hiệu năng gần như tương đương với ngôn ngữ gốc.
- Có những giải pháp thay thế truyền thống dựa trên máy chủ như Flask và Django để xử lý logic phía máy chủ.

Đưa sức mạnh của Python vào môi trường trình duyệt từ lâu đã là ước mơ của nhiều nhà phát triển. Cho đến gần đây, nếu bạn muốn bất cứ thứ gì hoạt động trên web, JavaScript là ông vua không thể tranh cãi và là lựa chọn khả thi duy nhất để thực thi logic phía máy khách mà không cần dựa vào máy chủ bên ngoài.
Tuy nhiên, bối cảnh đã thay đổi hoàn toàn nhờ sự xuất hiện của nhiều công cụ và tiêu chuẩn giúp phá vỡ các rào cản ở phía máy chủ . Ngày nay, có nhiều cách để tích hợp Python với HTML, từ các trình biên dịch dịch mã đến việc sử dụng các công nghệ nhị phân cho phép hiệu năng tuyệt vời trực tiếp trên tab của trình duyệt hàng đầu như Chrome.
PyScript: Cuộc cách mạng Anaconda
Một trong những bước tiến quan trọng nhất đến từ việc Anaconda phát hành PyScript. Khung phần mềm này đơn giản chỉ là một lớp bao bọc bên ngoài... Pyodide, Emscripten và WebAssembly (Wasm)Điều này cho phép Python chạy gần như minh bạch trên phía máy khách. Khía cạnh hấp dẫn nhất là nó cho phép bạn viết mã Python trực tiếp trong các thẻ HTML tùy chỉnh, chẳng hạn như <py-script>Điều này giúp tạo điều kiện thuận lợi rất lớn cho việc tạo ra các ứng dụng tương tác.
Để bắt đầu, chỉ cần thêm các tệp CSS và JS của PyScript vào phần tiêu đề của tài liệu. Một trong những ưu điểm tuyệt vời của nó là... Nó hỗ trợ các thư viện lớn. chẳng hạn như NumPy, Pandas hoặc Scikit-learn, có thể được cấu hình bằng cách sử dụng thẻ. <py-env>Ngoài ra, PyScript còn cung cấp một Giao tiếp hai chiều với JavaScriptcho phép thao tác với DOM của trình duyệt bằng cách sử dụng mô-đun. js Con trăn.
Về giao diện, PyScript không hề thua kém,因为它 cung cấp các thành phần giao diện người dùng tích hợp như <py-button> o <py-inputbox>Chúng sẽ thực thi các hàm Python khi được tương tác. Tuy nhiên, cần lưu ý rằng, do được xây dựng trên WebAssembly, Thời gian tải ban đầu có thể khá lâu. và hiệu năng trên thiết bị di động có thể bị ảnh hưởng.
Brython: Python được dịch sang JavaScript
Nếu chúng ta đang tìm kiếm một giải pháp thay thế nhẹ hơn về mặt tải trọng, Brython là một lựa chọn cổ điển. Không giống như PyScript, Brython là một thư viện Python 3 được viết hoàn toàn bằng JavaScript. dịch mã Python để trình duyệt có thể hiểu được. Để nó hoạt động, điều cần thiết là phải gọi hàm. brython() trong sự kiện onload của phần thân HTML.
Brython nổi bật nhờ khả năng tương tác với các phần tử HTML và SVG. Thông qua việc sử dụng đối tượng documentlà có thể Chèn nội dung động hoặc vẽ các hình học trên khung vẽ SVG bằng cách sử dụng các toán tử tùy chỉnh như... =< Thêm các nút vào cây tài liệu. Mặc dù có tính linh hoạt, nó vẫn có những hạn chế: Nó không hỗ trợ tất cả các mô-đun. thuộc thư viện chuẩn và yêu cầu việc nhập và xuất dữ liệu phải được xử lý thông qua các phần tử HTML, vì print() o input() Chúng không hoạt động theo cách truyền thống.
Các cách triển khai và so sánh khác
Hệ sinh thái này rất rộng lớn, và còn có nhiều dự án thú vị khác. Một mặt, có Skulpt, hỗ trợ Python 2 và 3 thông qua JavaScript, và Transcrypt, hoạt động như một trình biên dịch JavaScript, mặc dù dự án sau dường như đã bị lãng quên. Ngoài ra còn có VistaPython, đề xuất một cách tiếp cận khác bằng cách sử dụng trình thông dịch mã byte được viết bằng JavaScript và trình phân tích cú pháp được tạo bằng Antlr, giúp việc nâng cấp lên các phiên bản Python mới hơn dễ dàng hơn.
So sánh các phương pháp, ta thấy Brython và Skulpt sử dụng trình phân tích cú pháp thủ công, rất khó bảo trì. Ngược lại, Pyodide (nền tảng của PyScript) là một bản chuyển đổi thực sự của CPython sang WebAssembly, đảm bảo khả năng tương thích cao hơn nhiều, mặc dù phải trả giá bằng kích thước gói tải xuống lớn hơn. VistaPython cố gắng cân bằng giữa tính linh hoạt và kích thước , tối ưu hóa cấu hình tải để đảm bảo các ứng dụng chạy nhanh trên mọi thiết bị.
Các phương pháp truyền thống và hệ thống phụ trợ
Không phải mọi thứ đều phải diễn ra trên trình duyệt. Đối với nhiều người, cách hiệu quả nhất để kết hợp Python và HTML vẫn là sử dụng... các khung máy chủ như Flask trong Python hoặc DjangoTrong phương án này, Python xử lý logic ở phía máy chủ và gửi HTML đã được hiển thị đến máy khách, hoặc nó hoạt động như một trình biên dịch. REST API Nó trao đổi dữ liệu ở định dạng JSON với giao diện người dùng được viết bằng JavaScript. fetch o axios.
Ngoài ra còn có các phương pháp cũ hơn như CGI (Common Gateway Interface), mặc dù hiện nay được coi là lỗi thời do độ phức tạp, nhưng chúng đã tạo nên nền tảng của web động. Đối với những người chỉ cần trình bày dữ liệu, chuyển đổi sổ tay Jupyter sang HTML là cách nhanh nhất để xuất bản báo cáo kỹ thuật mà không gặp phải các vấn đề kỹ thuật phức tạp.
Cốt lõi của tất cả: WebAssembly
Điều kỳ diệu thực sự giúp các ngôn ngữ như Python, C++ và Rust có thể tiếp cận web chính là WebAssembly (Wasm). Tiêu chuẩn mở này cho phép thực thi mã nhị phân với hiệu năng gần như tương đương mã gốc. Nhờ Wasm, các công ty như Adobe đã có thể chuyển Photoshop lên web , và AutoCAD cùng Figma đã tối ưu hóa đáng kể việc tải và xử lý dữ liệu.
Khả năng chạy Python trên máy khách, dù thông qua trình dịch Brython hay sức mạnh mã nhị phân của PyScript, mở ra vô số khả năng để tạo ra các công cụ và ứng dụng khoa học dữ liệu phức tạp mà người dùng không cần phải cài đặt bất cứ thứ gì trên máy tính của họ, dân chủ hóa quyền truy cập vào lập trình nâng cao.
Việc tích hợp Python trên web đã phát triển từ các kịch bản phía máy chủ đơn giản đến việc thực thi nhị phân thông qua WebAssembly, cho phép bạn lựa chọn giữa việc chuyển đổi nhẹ nhàng sang JavaScript với Brython hoặc toàn bộ sức mạnh của PyScript và Pyodide, từ đó thay đổi cách chúng ta hình dung về phát triển giao diện người dùng.


