Mojo, Python'un okunabilirliğini C++ hızıyla birleştiren bir dildir.
Donanıma yakın düşük seviyeli kodlardan, Back-End API tasarımı aracılığıyla Front-End ve Web dünyasına kadar farklı şeyler için faydalıdır. Mojo, tüm modern yığına ölçeklenebilecek kadar güçlüdür. Dil aynı zamanda Yapay Zeka ve Makine Öğrenimi göz önünde bulundurularak tasarlanmıştır; bu nedenle özellikle Yapay Zeka geliştiricileri ve Veri Bilimcileri için yararlı olacaktır.
Mojo hala genç. Ekosistemde, ağ oluşturma veya temel HTTP işlemleri gibi günlük yazılım geliştirmeye yönelik araçlar eksik.
Lightbug 🔥🐝'nin uçtuğu yer burasıdır.
Lightbug 🔥🐝, varsayılan olarak hiçbir dış bağımlılığı olmayan, saf Mojo ile yazılmış basit bir HTTP çerçevesidir. Daha karmaşık projeler için bir temel oluşturması amaçlanmıştır ve bu dilin statik yazma ve mükemmel performans gibi özelliklerinden yararlanırken API'ler gibi Web hizmetleri geliştirmenize, temel yönlendirmeyi ayarlamanıza ve hatta Mojo ile HTML sayfaları sunmanıza olanak tanır. .
Başlamak için Mojo ve Git'i yükleyin, ardından Lightbug Github deposunu klonlayın:
git clone https://github.com/saviorand/lightbug_http.git
Klonlandıktan sonra komut satırınızdaki dizine geçin:
cd lightbug_http
Ardından sunucuyu çalıştırın (evet, bu Mojo dosya uzantısıdır! 🔥):
mojo lightbug.🔥
Konsola yazdırılan aşağıdaki satırı görmelisiniz:
🔥🐝 Lightbug is listening on 0.0.0.0:8080 Ready to accept connections...
Artık sunucunuza istekte bulunmaya başlayabilir veya tarayıcıda localhost:8080
veya 0.0.0.0:8080
açmayı deneyebilirsiniz; giriş ekranını görmelisiniz. Mojo tarzı Web'e hoş geldiniz! Şimdi gerçek kodlamaya geçelim.
Lightbug hâlâ genç olsa da, insanların modern Web için geliştirmeyi beklediği temel işlevsellik zaten mevcut.
Henüz bir paket yöneticisi olmadığından, lightbug_http
kendi projenizin içine bir alt klasör olarak eklemeniz gerektiğini unutmayın. Bu bir Mojo paketi olarak çalışacak ve web temelleri, sunucular ve daha fazlası gibi araçları Lightbug'dan içe aktarmanıza olanak tanıyacak.
Örneğin, sunucuyu içe aktarmak için bunu dosyanızın en üstüne ekleyin:
from lightbug_http.sys.server import SysServer
Bu, saf Mojo'da bir sunucu uygulamasını içe aktaracaktır. Python uygulamasını kullanmak istiyorsanız bunun yerine PythonServer
içe aktarın. Aynı şekilde çalışacaktır.
Bir HTTP hizmeti oluşturmak için, HTTPService
özelliğini karşılayan bir yapı oluşturmanız yeterlidir; bu, aşağıdaki imzaya sahip bir func
yöntemine sahip olduğu anlamına gelir:
trait HTTPService: fn func(self, req: HTTPRequest) raises -> HTTPResponse: ...
Bu, bir HTTPRequest
almak, Mojo veya Python'da yazdığınız herhangi bir özel mantığı yürütmek ve bazı verileri içeren bir HTTPResponse
nesnesini API tüketicisine geri döndürmek için yerleşik temelleri kullanır.
0.0.0.0:8080
gönderilen tüm istekleri konsola yazdıran bir servis yapalım. Bunu yapmak için my_awesome_service.🔥
adında bir dosya oluşturun ve aşağıdakileri yapıştırın:
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)
mojo my_awesome_service.🔥
çalıştırın ve Insomnia veya Bruno gibi favori API istemcilerinizden isteği 0.0.0.0:8080
gönderin. Konsola yazdırılan istekle ilgili bazı ayrıntıları görmelisiniz.
Tebrikler! Artık resmi olarak bir Mojo web geliştiricisisiniz 🔥.
Örnekte, handler
adı verilen bir değişkeni let
ile başlatıyoruz (yani yeniden atanamayacağı anlamına gelir) ve netlik sağlamak için onu ikinci bir parametre olarak listen_and_serve
aktarıyoruz.
@value
dekoratörü eklemek isteğe bağlıdır: Eğer ileri düzey bir Mojici iseniz, bunun yerine __init__
yapıcı yöntemini ekleyebilirsiniz. Aynı şekilde çalışacaktır; @value
yalnızca bunu ve diğer yararlı yöntemleri otomatik olarak oluşturur.
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)
Diyebilirsiniz ama bu sadece bir yol! Modern API'ler bundan çok daha fazlasını gerektirir.
Lightbug ayrıca bazı temel yönlendirmeleri de yapabilir:
@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)
Bunu my_awesome_service.🔥
dosyanıza ekleyin ve işleyici olarak sunucuya iletin:
fn main() raises: var server = SysServer() let handler = ExampleRouter() server.listen_and_serve("0.0.0.0:8080", handler)
Artık tarayıcınızı açabilir ve değişiklikleri görmek için localhost:8080/first
, localhost:8080/second
adresine gidebilirsiniz.
Bu işlevsellik size, lightbug_http
gibi hafif bir çerçevenin/araç setinin sağlayabileceği esneklik ve özelleştirme seçeneklerinden yararlanırken, HTTP'yi kullanan kendi uygulamalarınızı, kitaplıklarınızı ve hizmetlerinizi geliştirmeniz için bir temel sağlamalıdır.
lightbug_api
ve lightbug_web
paketleri oluşturarak yönlendirmenin yanı sıra bir OpenAPI belirtiminden API'ler yazma ve oluşturma, veri modelinizi tasarlama ve web uygulamaları oluşturma gibi diğer görevleri gelecekte daha da keyifli hale getirmeyi planlıyoruz. Ayrıntılar için Yol Haritamıza göz atın.
Lightbug'a giriş bu kadar 🔥🐝 ! Umarım faydalı olmuştur.
Bu açık kaynaklı, ticari olmayan bir topluluk projesidir.
Lütfen Github depomuza ⭐ yıldız ekleyin, Discord'a katılın ve kodunuzla nasıl katkıda bulunacağınızı kontrol edin, böylece bunu Mojici dostlarımız için daha da iyi hale getirebiliriz.
Bir dahaki sefere kadar!