Bạn có thể chạy python trong trình duyệt web không?

Tôi là nhà nghiên cứu và phát triển web tự do đến từ Malawi. Tôi thích học những điều mới và việc viết lách giúp tôi hiểu và củng cố các khái niệm. Tôi hy vọng bằng cách chia sẻ kinh nghiệm của mình, những người khác có thể học được điều gì đó từ họ

Đây là bài đăng về việc chạy Python trong trình duyệt web - nghĩa là sử dụng Python để xây dựng giao diện người dùng web động, thay vì cần sử dụng JavaScript - và các cách tiếp cận khác nhau để biến điều đó thành có thể

Tôi đã nói điều này như một bài nói chuyện tại PyCon UK 2019. Đây là một video

Một bộ não bị chia cắt

Hãy để tôi kể cho bạn nghe về tôi. Tôi từng là nhà phát triển Python back-end. tôi đã hạnh phúc. Và sau đó tôi cũng nhận được một công việc viết mã JavaScript front-end. Điều này…kém hạnh phúc. Tôi đã sử dụng hai ngôn ngữ với những cách suy nghĩ rất khác nhau. Cả bộ não và logic ứng dụng của tôi đều bị xáo trộn giữa hai thứ và tôi liên tục bỏ lỡ các tính năng cũng như khả năng sử dụng của Python

Là một lập trình viên Python, tôi muốn sử dụng các lớp - đặc biệt nếu tôi đang xây dựng giao diện người dùng, một thứ vốn dĩ hướng đối tượng. Tôi muốn phân cấp thừa kế. Tôi muốn đối số từ khóa. Và tôi muốn biết ý nghĩa của


  import * as hello from "./__target__/hello.js";



  
  Say Hello
6 [hoặc

  import * as hello from "./__target__/hello.js";



  
  Say Hello
7] tại bất kỳ thời điểm nào trong mã của tôi

Vì vậy, tôi đã suy nghĩ. “Tại sao tôi phải sử dụng JavaScript? . Nó sẽ không phải là một hệ điều hành rất phổ biến. Tuy nhiên, các trình duyệt web là một nền tảng phân phối ứng dụng chỉ hỗ trợ một ngôn ngữ

Câu hỏi này đã xuất hiện trong đầu tôi khi tôi đến PyCon Vương quốc Anh hai năm trước, vì vậy tôi ngay lập tức bị thu hút bởi gian hàng Anvil, với lời hứa viết Python trong trình duyệt web. [Tôi đã kết thúc làm việc ở đây, vì vậy nó đã diễn ra tốt đẹp. ] Nhưng Anvil là một nền tảng tích hợp hoàn chỉnh để xây dựng các ứng dụng web và thư viện mà Anvil sử dụng [Skulpt] không phải là câu trả lời cho tất cả mọi người. Vì vậy, các tùy chọn khác là gì?

Tôi sẽ đưa bạn tham quan không gian thiết kế, bằng cách so sánh sáu cách khác nhau để chạy mã Python trong trình duyệt. Sẽ có demo

Một chuyến tham quan gồm sáu lựa chọn

Sáu công nghệ này là những ví dụ tiêu biểu cho những gì đang tồn tại. Tất cả đều tương đối trưởng thành và chiếm nhiều không gian thiết kế. Tôi đã đặt chúng trên hai trục

Lựa chọn thiết kế lớn đầu tiên của chúng tôi là trên trục Y. Trình duyệt chạy Python như thế nào? . dịch mã Python sang Javascript rồi chạy mã đó hoặc triển khai trình thông dịch Python trong trình duyệt và chuyển Python của bạn qua mã đó

Lựa chọn thứ hai, trên trục X, là “Khi nào thì Python được biên dịch?”. Bạn có thể biên dịch trước hoặc sau khi trang được tải. Đây là một điều khó khăn - bạn có thể đánh đổi sự thuận tiện trong phát triển, hiệu suất trên trang và tính năng động. [REPL tương tác trong trình duyệt. ]

1. chuyển mã. biên soạn trước thời hạn

Điều đầu tiên chúng ta sẽ nói đến là Chuyển mã. Đây là trình biên dịch dịch Python sang JavaScript trước thời hạn. Tôi sẽ chỉ cho bạn một ví dụ nhanh

Tôi có hai tập tin.


  import * as hello from "./__target__/hello.js";



  
  Say Hello
8 và

  import * as hello from "./__target__/hello.js";



  
  Say Hello
9

~/python-browser/transcrypt$ ls
hello.html	hello.py


  import * as hello from "./__target__/hello.js";



  
  Say Hello
8 là một tệp HTML cực kỳ đơn giản. nó có một hộp đầu vào và một nút


  import * as hello from "./__target__/hello.js";



  
  Say Hello

Khi tôi nhập tên của mình vào hộp nhập liệu, tôi sẽ nhận được thông báo. Hành vi động được triển khai bởi tập lệnh mà tôi đang nhập ở trên cùng và tập lệnh được biên dịch từ


  import * as hello from "./__target__/hello.js";



  
  Say Hello
9

________số 8

Đây gần như là ứng dụng web đơn giản nhất mà bạn từng thấy. Mã python không phải là đơn giản nhất, vì nó phải truy cập DOM. Có một hàm

def greet[]:
    alert["Hello " + document.getElementById["name-box"].value + "!"]

document.getElementById["greet-button"].addEventListener['click', greet]
2 sử dụng
def greet[]:
    alert["Hello " + document.getElementById["name-box"].value + "!"]

document.getElementById["greet-button"].addEventListener['click', greet]
3 để lấy giá trị
def greet[]:
    alert["Hello " + document.getElementById["name-box"].value + "!"]

document.getElementById["greet-button"].addEventListener['click', greet]
4. Sau đó, tôi ràng buộc nút đó với trình xử lý nút
def greet[]:
    alert["Hello " + document.getElementById["name-box"].value + "!"]

document.getElementById["greet-button"].addEventListener['click', greet]
5 bằng một lệnh gọi khác tới
def greet[]:
    alert["Hello " + document.getElementById["name-box"].value + "!"]

document.getElementById["greet-button"].addEventListener['click', greet]
6

Đây là một cách rất JavaScript-y để tương tác với giao diện người dùng của tôi. Đây là một lựa chọn thiết kế có chủ ý của Transcrypt; . Điều này sẽ quen thuộc nếu bạn đã từng sử dụng JavaScript và cho phép bạn sử dụng tài liệu JavaScript làm tài liệu tham khảo. Tất nhiên, nhược điểm là bạn vẫn có tất cả sự phức tạp của các API JS

Tôi biên dịch Python đó thành JavaScript bằng cách chạy

def greet[]:
    alert["Hello " + document.getElementById["name-box"].value + "!"]

document.getElementById["greet-button"].addEventListener['click', greet]
7


  import * as hello from "./__target__/hello.js";



  
  Say Hello
5

Điều này đã tạo ra một thư mục có tên là

def greet[]:
    alert["Hello " + document.getElementById["name-box"].value + "!"]

document.getElementById["greet-button"].addEventListener['click', greet]
8, chứa tệp JavaScript đã biên dịch của tôi,
def greet[]:
    alert["Hello " + document.getElementById["name-box"].value + "!"]

document.getElementById["greet-button"].addEventListener['click', greet]
9


  import * as hello from "./__target__/hello.js";



  
  Say Hello
8

def greet[]:
    alert["Hello " + document.getElementById["name-box"].value + "!"]

document.getElementById["greet-button"].addEventListener['click', greet]
9 thực sự khá dễ đọc - nó rất giống với Python gốc của tôi. Tôi có

  import * as hello from "./__target__/hello.js";



  
  Say Hello
51, tôi có
def greet[]:
    alert["Hello " + document.getElementById["name-box"].value + "!"]

document.getElementById["greet-button"].addEventListener['click', greet]
6…điều chính đã thay đổi là định nghĩa hàm rất JavaScript-y [và, theo ý kiến ​​của tôi, không đẹp bằng]


  import * as hello from "./__target__/hello.js";



  
  Say Hello
2

Và sau đó là câu lệnh nhập khẩu khổng lồ này ở trên cùng. Điều này đang nhập một loạt thứ mà bạn có thể quen thuộc từ các nội trang Python. Tuy nhiên, chúng không thực sự là Python. chúng là các bản triển khai JavaScript viết tay của những thứ đó, nhờ sự giúp đỡ của


  import * as hello from "./__target__/hello.js";



  
  Say Hello
53. Ví dụ: Python có hàm

  import * as hello from "./__target__/hello.js";



  
  Say Hello
54 cho bạn biết liệu một đối tượng có thể được gọi hay không. Việc triển khai JavaScript đó là một biểu thức boolean duy nhất để kiểm tra xem đó có phải là một đối tượng hay không, sau đó kiểm tra xem nó có phương thức

  import * as hello from "./__target__/hello.js";



  
  Say Hello
55 hay không. Điều này đã được viết tay để sao chép hành vi của Python


  import * as hello from "./__target__/hello.js";



  
  Say Hello
6

Tệp khác,


  import * as hello from "./__target__/hello.js";



  
  Say Hello
56, chứa một số siêu dữ liệu mà trình biên dịch muốn có

Đây là ví dụ đó, trực tiếp trên trang này. Bạn có thể nhập tên vào hộp nhập liệu và bạn sẽ nhận được cảnh báo khi nhấp vào nút

Vì vậy, tôi đã viết một số Python và chúng tôi đã có một ứng dụng web động - mặc dù là ứng dụng đơn giản nhất mà bạn có thể tưởng tượng. [Nếu bạn không tin tôi, bạn có thể kiểm tra trang này trong các công cụ trình duyệt của mình và xem JavaScript được tạo tự động của tôi. ]

Nhưng Transcrypt vẫn chưa chính xác là công cụ chuyển đổi một đối một cho JavaScript. Tôi vẫn không thể viết thẻ


  import * as hello from "./__target__/hello.js";



  
  Say Hello
57 có chứa một số Python

2. Brython. Thẻ tập lệnh Python

Nếu tôi muốn có thẻ Python


  import * as hello from "./__target__/hello.js";



  
  Say Hello
57, tôi có thể sử dụng Brython. Brython là một trình biên dịch được viết bằng JavaScript, vì vậy tôi có thể chạy nó bằng trình duyệt web của mình. Hãy xem ví dụ tương tự, nhưng lần này được viết bằng Brython


  import * as hello from "./__target__/hello.js";



  
  Say Hello
0

Bây giờ tôi chỉ có một tệp,


  import * as hello from "./__target__/hello.js";



  
  Say Hello
8. Tôi vẫn có hộp nhập và nút như trước, nhưng bây giờ tôi có một tập lệnh có loại là

  import * as hello from "./__target__/hello.js";



  
  Say Hello
80


  import * as hello from "./__target__/hello.js";



  
  Say Hello
3

Python của tôi rất giống với những gì tôi đã có trước đây, nhưng thoải mái hơn một chút. Cách tôi truy cập DOM có nhiều cú pháp hơn một chút. Tôi đang truy cập


  import * as hello from "./__target__/hello.js";



  
  Say Hello
81 giống như một cuốn từ điển, sử dụng ký hiệu dấu ngoặc vuông và phương pháp

  import * as hello from "./__target__/hello.js";



  
  Say Hello
82 của tôi cũng rất hay và ngắn gọn. Tôi đã nhập

  import * as hello from "./__target__/hello.js";



  
  Say Hello
81 và

  import * as hello from "./__target__/hello.js";



  
  Say Hello
51, thay vì sử dụng chúng dưới dạng toàn cầu Javascript-y kỳ diệu. Tất cả đều cảm thấy Pythonic hơn một chút

Để thực sự chạy mã này, tôi có thẻ


  import * as hello from "./__target__/hello.js";



  
  Say Hello
57 bao gồm trình biên dịch Brython. Nó định nghĩa một hàm

  import * as hello from "./__target__/hello.js";



  
  Say Hello
86 toàn cầu mà tôi gọi khi tải trang. Khi tải trang, Brython sẽ tìm tất cả các

  import * as hello from "./__target__/hello.js";



  
  Say Hello
57 của Python, biến chúng thành JavaScript và chạy chúng

~/python-browser/transcrypt$ ls
hello.html	hello.py
1

Bây giờ, ví dụ của tôi sẽ trông rất giống - thực tế là giống hệt nhau - nhưng khi tôi kiểm tra nó, tôi thực sự có Python của mình trong mã nguồn của trang

Python trong trình duyệt - theo nghĩa đen

Bạn có thể sửa đổi tập lệnh Python đó và chạy lại trình biên dịch [bằng cách chạy


  import * as hello from "./__target__/hello.js";



  
  Say Hello
86 trong bảng điều khiển trình duyệt]. Nhưng nếu bạn làm điều đó, bạn sẽ thực sự có hai trình xử lý nhấp chuột, bởi vì nó đã ràng buộc cả hai và cả hai vẫn còn trong bộ nhớ

Vì vậy, về cơ bản, bây giờ tôi có Python để thay thế trực tiếp cho JavaScript, nhưng mã chỉnh sửa động không hoạt động tốt lắm - tôi vẫn cần viết Python của mình trước khi tải trang. Nếu tôi muốn xây dựng một môi trường mã hóa Python tương tác thì sao?

3. điêu khắc. Python tương tác trong trình duyệt

Skulpt ban đầu được viết cho giáo dục, để cung cấp môi trường Python tương tác trong trình duyệt

Nếu bạn mới bắt đầu với ai đó với Python, bạn thực sự không muốn trải nghiệm đầu tiên của họ là tải xuống và cài đặt nó. Họ có thể làm hỏng hệ thống Python của họ trong quá trình này, bạn có nhiều môi trường khác nhau như bạn có sinh viên và bạn phải gỡ lỗi tất cả chúng trước khi bất kỳ ai có thể viết câu lệnh


  import * as hello from "./__target__/hello.js";



  
  Say Hello
89 đầu tiên của họ. Nhưng nếu họ có một môi trường trong trình duyệt, họ có thể tiếp tục và viết một số mã

Một ví dụ Skulpt điển hình trông như thế này

Có một hộp ở trên cùng để viết một số Python và ở đâu đó đầu ra đến. Khi bạn nhấn nút Run, nó sẽ biên dịch và chạy mã của bạn, tất cả trong trình duyệt [không có lưu lượng truy cập mạng. ]

Bạn có thể chỉnh sửa mã đó – hãy thử. Bạn sẽ nhận được một số đầu ra từ mã Python không tồn tại khi tải trang

Có một dự án thực sự thú vị tên là đồ trang sức nhỏ. io cung cấp cho sinh viên một trình thông dịch trong trình duyệt và dựa trên Skulpt

Đây là cách ví dụ đó hoạt động. Đây là HTML xác định vùng văn bản


  import * as hello from "./__target__/hello.js";



  
  Say Hello
0

Và đây là cách chúng tôi chạy những dòng mã này khi bạn nhấp vào nút


  import * as hello from "./__target__/hello.js";



  
  Say Hello
1

Bạn nhận được đối tượng


  import * as hello from "./__target__/hello.js";



  
  Say Hello
20 đó trong phạm vi toàn cầu khi nhập Skulpt


  import * as hello from "./__target__/hello.js";



  
  Say Hello
2

Bạn chỉ cần chuyển một chuỗi mã Python tới


  import * as hello from "./__target__/hello.js";



  
  Say Hello
20 và nó sẽ biên dịch và chạy dưới dạng JavaScript, bao nhiêu lần tùy thích. Tôi đang lấy mã Python của mình từ vùng văn bản

  import * as hello from "./__target__/hello.js";



  
  Say Hello
22 trong JavaScript - và sau đó tôi chuyển mã đó vào Skulpt

Đây là một sự đánh đổi thiết kế khác. Skulpt không có DOM API tích hợp nên mình phải viết Javascript để giao tiếp với trang. Nhưng đó có thể là một điều tốt. nó cho phép chúng tôi xây dựng một môi trường để chạy Python mà không cần phải xử lý DOM. Ví dụ trên của chúng tôi có thể được sử dụng trong giảng dạy. chúng tôi sẽ không cần dạy học sinh của mình DOM trước khi chúng tôi có thể làm toán và các câu lệnh


  import * as hello from "./__target__/hello.js";



  
  Say Hello
89

Ở cấp độ nâng cao hơn, Skulpt là thứ chúng tôi sử dụng cho Anvil, nền tảng để xây dựng các ứng dụng web toàn ngăn xếp không có gì ngoài Python. Chúng tôi không muốn người dùng của mình phải sử dụng DOM, HTML và CSS – vì vậy, thay vào đó, chúng tôi đã xây dựng một thư viện giao diện người dùng dựa trên thành phần. Trong Anvil, bạn không truy vấn tài liệu để tìm hộp văn bản; . Chúng tôi không muốn để người dùng của mình tiếp xúc với DOM

Vậy là chúng ta đã đi được nửa chặng đường. Chúng tôi đã xem xét tất cả các công nghệ mà Python đang được biên dịch thẳng sang JavaScript. Bây giờ tôi sẽ nói về một cách tiếp cận khác. triển khai toàn bộ trình thông dịch Python trong trình duyệt web

Nửa đường. Ba phần tiếp theo là trình thông dịch Python đầy đủ chạy trong trình duyệt web

4. PyPy. js. một trình thông dịch Python đầy đủ trong trình duyệt web của bạn

Viết trình thông dịch Python và trình biên dịch bằng JavaScript nghe có vẻ nhiều việc, nhưng PyPy. js đã tìm ra cách giải quyết vấn đề đó. Thay vì viết lại Python bằng JavaScript, việc này sẽ mất nhiều năm, họ đã biên dịch lại PyPy thành JavaScript bằng cách sử dụng emscripten. Điều đó cung cấp cho bạn phiên bản JavaScript của PyPy. Không dừng lại ở đó - họ còn xây dựng trình biên dịch Python-to-JavaScript tức thời để biên dịch mã thường dùng

Vì vậy, đây là một công cụ khá phức tạp, nặng nề… và kích thước tải xuống phản ánh điều đó. Chỉ riêng trình thông dịch là 12 MB JavaScript mà trình duyệt của bạn phải tải xuống và phân tích cú pháp. [Ngay cả khi tải xuống được lưu trong bộ nhớ cache, trình duyệt của bạn phải phân tích cú pháp và biên dịch tất cả JavaScript đó mỗi khi tải trang. ] Vì vậy, sự đánh đổi để có trình thông dịch Python đầy đủ tính năng này trong trình duyệt là bạn phải đợi nó khởi động

Hãy để tôi chỉ cho bạn một ví dụ và bạn sẽ thấy những gì tôi muốn nói. Bạn nhập trình thông dịch bằng các thẻ tập lệnh, như trước đây. Khi chúng được nhập, trình thông dịch được tải xuống và tải vào bộ nhớ của trình duyệt


  import * as hello from "./__target__/hello.js";



  
  Say Hello
3

Nó bắt đầu chạy và bạn nhận được đối tượng


  import * as hello from "./__target__/hello.js";



  
  Say Hello
25 này cho phép bạn giao tiếp với trình thông dịch đó. Tôi chỉ đang tính 10 số vuông đầu tiên bằng phương pháp

  import * as hello from "./__target__/hello.js";



  
  Say Hello
26. Nó có các phương thức

  import * as hello from "./__target__/hello.js";



  
  Say Hello
27 và

  import * as hello from "./__target__/hello.js";



  
  Say Hello
28 để bạn có thể truyền các biến qua lại giữa JavaScript và Python. Tôi nhận được giá trị

  import * as hello from "./__target__/hello.js";



  
  Say Hello
29, là một Mảng trong JavaScript và tôi đang in giá trị đó trong một

  import * as hello from "./__target__/hello.js";



  
  Say Hello
51. Nó có cách làm việc không đồng bộ dựa trên lời hứa tốt đẹp này


  import * as hello from "./__target__/hello.js";



  
  Say Hello
4

Đây là một GIF của nó đang tải, trong thời gian thực

PyPy. js mất một lúc để kích hoạt, nhưng bạn sẽ có một trình thông dịch PyPy đầy đủ khi nó hoạt động

PyPy là một trong những triển khai Python được thử nghiệm tốt nhất hiện có và PyPy. js khá nhanh sau khi được tải. Nếu bạn đang xây dựng thứ gì đó mà người dùng của bạn vui vẻ chờ đợi mọi thứ tải lên - có thể là REPL tương tác hoặc trực quan hóa dữ liệu - và bạn muốn có một trình thông dịch Python không thỏa hiệp, hãy dùng thử. Nó thậm chí còn có một hệ thống tệp trong bộ nhớ, vì vậy bạn thực sự có thể ghi vào các tệp được lưu trữ trong bộ nhớ của trình duyệt và bạn có thể đọc từ chúng. Bạn cũng có thể chạy nhiều trình thông dịch. Vì vậy, nó có vô số tính năng, nhưng nó rất nặng

Vì vậy, điều gì sẽ xảy ra nếu chúng tôi sẵn sàng hy sinh một số tính năng này để giảm kích thước tải xuống?

5. Batavia. Trình thông dịch mã byte nhẹ

Nó được gọi là Batavia và nó đến từ Beeware. Họ là một dự án mã nguồn mở, họ tạo ra rất nhiều công cụ thực sự thú vị giúp Python trở nên dễ di chuyển hơn so với hiện tại

Batavia là giải pháp Python-in-the-browser của họ và họ đã viết tay một trình thông dịch Python bằng JavaScript theo đúng nghĩa đen. Họ chưa viết trình biên dịch - nó chỉ diễn giải mã byte Python được biên dịch sẵn. Kết quả là một trình thông dịch tiết kiệm bộ nhớ chỉ có 400 kB để tải xuống. Điểm bất lợi là bạn phải biên dịch tập lệnh trước và đặt mã byte vào HTML của mình. Ở đây chúng tôi có một thẻ tập lệnh có loại là


  import * as hello from "./__target__/hello.js";



  
  Say Hello
61


  import * as hello from "./__target__/hello.js";



  
  Say Hello
5

Hướng dẫn Bắt đầu của họ thực sự gợi ý rằng bạn nên thiết lập một máy chủ để thực hiện việc biên dịch cho bạn. Vì vậy, bạn có thể có một REPL tương tác – nhưng mỗi khi bạn nhấn 'chạy', nó sẽ tạo một yêu cầu HTTP để biên dịch mã mới, sau đó gửi lại mã byte để chạy trong trình duyệt của bạn

Hạn chế khác là, trong số các công nghệ mà tôi đã nói đến, đây có lẽ là công nghệ non nớt nhất. Trên trang GitHub của họ, họ nói "đây là bản alpha đầu tiên và nếu nó bị hỏng, bạn có thể giữ lại tất cả các mảnh sáng bóng". Vì vậy, nếu đây là thứ lấp đầy một phân khúc thị trường ngách mà bạn muốn lấp đầy, thì bạn nên tham gia và giúp họ đưa nó đến trạng thái hoàn chỉnh hơn

6. pyodua. Giống như Notebook Jupyter trong trình duyệt web của bạn

Cuối cùng nhưng không kém phần quan trọng, tôi muốn nói về Pyodide. Đó là một môi trường đầy đủ, hơi giống Jupyter Notebook, nhưng nó chạy hoàn toàn trong trình duyệt của bạn. Bạn có thể có đầy đủ các quy trình khoa học dữ liệu trong ứng dụng khách, vì vậy không cần phải đi vòng và mọi thứ sẽ nhanh hơn rất nhiều

Nó được điều hành bởi Mozilla và nó hoạt động bằng cách biên dịch trình thông dịch CPython tiêu chuẩn thành WebAssugging. WebAssembly là một bytecode tải và chạy trong trình duyệt của bạn [thường được biên dịch thành mã gốc]. Mozilla đã tìm thấy một dự án CPython-in-WebASM hiện có, chịu trách nhiệm về nó và biên dịch lại những thứ như Numpy, SciPy và Pandas – tất cả các thư viện khoa học dữ liệu – thành WebAssembly. Kết quả về cơ bản là chén thánh của khoa học dữ liệu

Đây là sổ ghi chép ví dụ của họ. Pyodide là một phần của Iodide, một dự án lớn hơn có JavaScript và nhiều tính năng khác. Như với PyPy, lần đầu tiên bạn chạy mã Python, bạn phải đợi trình thông dịch tải xuống và khởi tạo. Nhưng một khi bạn đã làm điều đó, bạn có một môi trường Python đầy đủ sức mạnh

iốt. như Jupyter Notebooks trong trình duyệt

Sau khi được tải, các bước Python tiếp theo sẽ thực thi gần như ngay lập tức. Bạn cũng có thể viết HTML hoặc MarkDown, chạy JavaScript và làm mọi thứ. Điều quan trọng là tất cả đều nằm trong trình duyệt - không có chuyến đi khứ hồi đến máy chủ và bạn đang sử dụng máy tính của người dùng để nó có thể thay đổi quy mô một cách xuất sắc

Nhưng có sự chậm trễ này khi khởi động, vì vậy đây không phải là thứ bạn có thể sử dụng cho trang web thương mại điện tử. Và nó được gắn với dự án Iodide, vì vậy bạn cần thực hiện khá nhiều thao tác hack để sử dụng nó với bất kỳ thứ gì khác

Bảng tóm tắt

Vì vậy, điều này kết thúc chuyến tham quan của chúng tôi. Đây là bảng tóm tắt tất cả các công nghệ mà tôi đã nói đến [cũng có sẵn trong bài đăng trên blog Mẹo về Python kèm theo]

Làm mọi thứ bằng Python

Tôi muốn làm cho một điểm rộng hơn. Như tôi đã nói lúc đầu

- tôi, trước đó

Tôi nghĩ chúng ta cần đặt câu hỏi đó về toàn bộ ngăn xếp web

Ngăn xếp web bắt đầu ở phần bên trái của sơ đồ này, nơi bạn đang sử dụng SQL để truy cập dữ liệu của mình, bạn phải chuyển đổi mọi thứ thành JSON, bạn phải viết các mẫu HTML, bạn phải sử dụng Mô hình Đối tượng Tài liệu để

Chúng tôi đang bắt đầu chuyển sang thứ mà chúng tôi có thể sử dụng Python ở mọi nơi. Chúng tôi có các ORM như SQLAlchemy để viết Python để truy cập cơ sở dữ liệu của chúng tôi. Rõ ràng là chúng tôi có Python trên máy chủ. Bây giờ chúng tôi có Python trong trình duyệt. Và trên hết, với Anvil, giờ đây chúng ta có quyền truy cập vào một cách Pythonic hơn để thao tác giao diện người dùng

Chúng tôi có thể truy cập dữ liệu của mình theo một cách trên máy chủ và có cùng một biểu diễn, cùng một cú pháp trong trình duyệt. Ví dụ, ứng dụng web trung bình có 1000 dòng mã để dịch dữ liệu và 40 dòng mã thực sự chỉ định logic nghiệp vụ. Nếu không cần dịch thuật, việc phát triển web có thể đơn giản hơn nhiều

Đây là lý do tại sao chúng tôi xây dựng Anvil. Với Anvil, bạn có thể làm mọi thứ bằng Python – từ thiết kế giao diện người dùng đến cơ sở dữ liệu – mà không cần dịch sang năm biểu diễn khác. Nó miễn phí sử dụng và nó đơn giản hóa đáng kể ngăn xếp web

Tôi có thể chạy Python trong Chrome không?

Chạy chương trình Python bằng Tiện ích mở rộng của Chrome . Click vào add to chrome để cài đặt và add extension vào trình duyệt. Sau khi tiện ích mở rộng được cài đặt, hãy nhấp vào nó để khởi chạy nó. Go to the chrome web store to download the Python Shell Chrome Extension. Click on add to chrome to install and add the extension to the browser. After the extension is installed, click on it to launch it.

Tôi có thể đặt mã Python vào trang web không?

Ngôn ngữ lập trình Python là một tùy chọn có mục đích chung, nghĩa là ngôn ngữ này có thể được sử dụng để tạo hầu hết mọi loại chương trình máy tính, bao gồm cả trang web .

Chủ Đề