Mojo là ngôn ngữ kết hợp khả năng đọc của Python với tốc độ của C++. Nó hữu ích cho nhiều thứ khác nhau, từ mã cấp thấp gần với phần cứng, thông qua thiết kế API Back-End, cho đến thế giới Front-End và Web. Mojo đủ mạnh để mở rộng quy mô trên toàn bộ hệ thống hiện đại. Ngôn ngữ này cũng được thiết kế dành cho AI và Machine Learning - vì vậy nó sẽ đặc biệt hữu ích cho các nhà phát triển AI và Nhà khoa học dữ liệu. Mojo vẫn còn trẻ. Hệ sinh thái đang thiếu các công cụ để phát triển phần mềm hàng ngày, như kết nối mạng hoặc các hoạt động HTTP cơ bản. Đây là nơi bay vào. Lightbug 🔥🐝 là một khung HTTP đơn giản được viết bằng Mojo thuần túy, không có phần phụ thuộc bên ngoài theo mặc định. Nó nhằm mục đích làm nền tảng cho các dự án phức tạp hơn và cho phép bạn phát triển các dịch vụ Web như API, thiết lập định tuyến cơ bản hoặc thậm chí phục vụ các trang HTML bằng Mojo, đồng thời tận dụng các tính năng của ngôn ngữ này, như gõ tĩnh và hiệu suất tuyệt vời . Lightbug 🔥🐝 Để bắt đầu, chỉ cần và , sau đó sao chép repo Lightbug Github: cài đặt Mojo Git git clone https://github.com/saviorand/lightbug_http.git Sau khi được sao chép, hãy chuyển sang thư mục trong dòng lệnh của bạn: cd lightbug_http Sau đó chạy máy chủ (vâng, đó là phần mở rộng của tệp Mojo! 🔥): mojo lightbug.🔥 Bạn sẽ thấy dòng sau được in ra bàn điều khiển: 🔥🐝 Lightbug is listening on 0.0.0.0:8080 Ready to accept connections... Bây giờ, bạn có thể bắt đầu thực hiện yêu cầu tới máy chủ của mình hoặc thử mở hoặc trong trình duyệt - bạn sẽ thấy màn hình giới thiệu. Chào mừng đến với Web, theo phong cách Mojo! Bây giờ, chúng ta hãy chuyển sang một số mã hóa thực sự. localhost:8080 0.0.0.0:8080 Mặc dù Lightbug vẫn còn non trẻ nhưng chức năng cốt lõi mà mọi người mong đợi có thể phát triển cho Web hiện đại đã có sẵn. Lưu ý rằng vì chưa có trình quản lý gói nên bạn chỉ cần đưa làm thư mục con bên trong dự án của riêng mình. Điều này sẽ hoạt động như một và sẽ cho phép bạn nhập các công cụ như nguyên gốc web, máy chủ, v.v. từ Lightbug. lightbug_http gói Mojo Ví dụ: thêm phần này vào đầu tệp của bạn để nhập máy chủ: from lightbug_http.sys.server import SysServer Điều này sẽ nhập triển khai máy chủ trong Mojo thuần túy. Nếu bạn muốn sử dụng triển khai Python, thay vào đó hãy nhập . Nó sẽ hoạt động theo cách tương tự. PythonServer Để tạo một dịch vụ HTTP, chỉ cần tạo một cấu trúc thỏa mãn , nghĩa là nó có phương thức với chữ ký sau: đặc điểm HTTPService func trait HTTPService: fn func(self, req: HTTPRequest) raises -> HTTPResponse: ... Điều này sử dụng các nguyên hàm tích hợp sẵn để nhận , thực thi bất kỳ logic tùy chỉnh nào bạn viết bằng Mojo hoặc Python và trả về một đối tượng cùng với một số dữ liệu cho người dùng API. HTTPRequest HTTPResponse Hãy tạo một dịch vụ in tất cả các yêu cầu được gửi tới tới bảng điều khiển. Để thực hiện việc này, hãy tạo một tệp có tên và dán đoạn sau: 0.0.0.0:8080 my_awesome_service.🔥 from lightbug_http import * @value struct Printer(HTTPService): fn func(self, req: HTTPRequest) raises -> HTTPResponse: let body = req.body_raw print(String(body)) return OK(body) fn main() raises: var server = SysServer() let handler = Printer() server.listen_and_serve("0.0.0.0:8080", handler) Chạy và gửi yêu cầu tới từ các ứng dụng khách API yêu thích của bạn, như hoặc . Bạn sẽ thấy một số chi tiết về yêu cầu được in ra bảng điều khiển. mojo my_awesome_service.🔥 0.0.0.0:8080 Insomnia Bruno Chúc mừng! Bây giờ bạn đã chính thức là nhà phát triển web Mojo 🔥. Trong ví dụ này, chúng ta khởi tạo một biến có tên là bằng (có nghĩa là nó không thể được gán lại) và chuyển nó tới làm tham số thứ hai cho rõ ràng. handler let listen_and_serve Việc thêm trình trang trí là tùy chọn: nếu bạn là một Mojician nâng cao, thay vào đó, bạn có thể thêm . Nó sẽ hoạt động như nhau; chỉ tự động tạo ra phương thức này và các phương thức hữu ích khác. @value phương thức hàm tạo __init__ @value struct Printer(HTTPService): fn __init__(inout self): print("Printer initialized!") fn func(self, req: HTTPRequest) raises -> HTTPResponse: let body = req.body_raw print(String(body)) return OK(body) Bạn có thể nói, nhưng đó chỉ là một con đường! API hiện đại đòi hỏi nhiều hơn thế. Lightbug cũng có thể thực hiện một số định tuyến cơ bản: @value struct ExampleRouter(HTTPService): fn func(self, req: HTTPRequest) raises -> HTTPResponse: let body = req.body_raw let uri = req.uri() if uri.path() == "/": print("I'm on the index path!") if uri.path() == "/first": print("I'm on /first!") elif uri.path() == "/second": print("I'm on /second!") return OK(body) Thêm phần này vào của bạn và chuyển nó dưới dạng trình xử lý đến máy chủ: my_awesome_service.🔥 fn main() raises: var server = SysServer() let handler = ExampleRouter() server.listen_and_serve("0.0.0.0:8080", handler) Bây giờ bạn có thể mở trình duyệt của mình và truy cập , để xem các thay đổi. localhost:8080/first localhost:8080/second Chức năng này sẽ cung cấp cho bạn cơ sở để phát triển các ứng dụng, thư viện và dịch vụ sử dụng HTTP của riêng bạn, đồng thời tận dụng các tùy chọn linh hoạt và tùy chỉnh mà khung/bộ công cụ nhẹ mà có thể cung cấp. lightbug_http Chúng tôi dự định thực hiện việc định tuyến cũng như các tác vụ khác như soạn thảo và tạo API từ đặc tả OpenAPI, thiết kế mô hình dữ liệu của bạn và xây dựng các ứng dụng web thậm chí còn thú vị hơn trong tương lai bằng cách xây dựng các gói và . Hãy xem của chúng tôi để biết chi tiết. lightbug_api lightbug_web Lộ trình Thế là xong phần giới thiệu về ! Hy vọng nó hữu ích. Lightbug 🔥🐝 Đây là một dự án cộng đồng mã nguồn mở, phi thương mại. Vui lòng gắn dấu sao ⭐ của chúng tôi, tham gia và xem cách đóng góp bằng mã của bạn để chúng tôi có thể làm cho mã của bạn trở nên tốt hơn nữa. kho lưu trữ Github Discord Hẹn lần sau nhé!