آیا میخواهید وبسایتهای تعاملی را با HTML، CSS و جاوا اسکریپت ایجاد کنید، در حالی که برنامهنویسی با چیزی جز پایتون ندارید؟ یکی از این چارچوب ها می تواند این کار را انجام دهد.
Python مدتهاست که به عنوان زبانی برای فریمورکهای سمت سرور، با پشتیبانی از اکثر اندازههای پروژه یا موارد استفاده، حضور داشته است. اما از لحاظ تاریخی به قسمت پشتی محدود میشود—هیچ فرهنگ واقعی نوشتن پایتون برای ایجاد کدهای فرانتاند، سمت کلاینت وجود ندارد. حداقل، هنوز نه.
اخیراً، برخی از پروژهها سعی کردهاند پایتون را به جاوا اسکریپت در قسمت جلویی ترجمه کنند، یا پایتون را در قسمت جلویی از طریق WebAssembly اجرا کنند. در این ایده نویدهایی وجود دارد، اما روشی که در حال حاضر اجرا میشود، نابسامان و ابتدایی است. شاید در حال حاضر گزینه بهتری برای توسعه دهندگان وجود داشته باشد؟
مطمئناً وجود دارد. یک خانواده در حال ظهور از چارچوبهای وب پایتون به شما امکان میدهد کدهای پایتون را در انتهای پشتی بنویسید که به صورت برنامهنویسی کدهای جلویی تولید میکند. میتوانید از اشیاء Python برای توصیف موجودیتهای HTML و رفتارهای مبتنی بر جاوا اسکریپت آنها استفاده کنید، سپس اجازه دهید چارچوب زمانی که به مشتری ارائه میشود، آن اشیاء را برای شما تولید کند.
در اینجا سه چارچوب وب برای پایتون وجود دارد که از این پارادایم پیروی می کنند. هر کدام به کدهای جلویی (HTML، CSS و جاوا اسکریپت) اجازه می دهد تا با کد پایتون پشتیبان توصیف شوند، به طوری که اشیاء جلویی از طریق مدل شی پایتون نمایش داده شوند.
سندان
هدف اصلی
Anvil “ساخت برنامههای وب با هیچ چیزی جز Python” است ( تاکید آنهاست). با Anvil، شخص کد پایتون را می نویسد – یا از ابزارهای کم کد کشیدن و رها کردن Anvil استفاده می کند – و یک برنامه وب کامل با یک صفحه جلویی تعاملی با جاوا اسکریپت و یک صفحه پشتی مجهز به پایتون ارائه می شود.
Anvil دو رویکرد اساسی را ارائه می دهد. یکی از آنها سرویس ابری Anvil است که در طیفی از سطوح قیمتگذاری ارائه میشود و ابزارهای ساخت بصری و طیف وسیعی از میزبانیها را ارائه میکند. گزینه ها. مورد دیگر منبع باز Anvil runtime است که شامل طراح بصری نمی شود اما همچنان به شما امکان می دهد برنامه های Anvil را با کدهای دست نویس بسازید و اجرا کنید.
برنامههای Anvil از سه جزء تشکیل شدهاند: UI – که میتواند با ابزارهای طراحی Anvil طراحی شود یا از طریق کد دستنویس بیان شود – کد سمت کلاینت که از پایتون به جاوا اسکریپت منتقل میشود و کد پایتون سمت سرور. ویرایشگر ابری Anvil به طور خودکار کدهای پشتیبان و جلویی تولید می کند، تقریباً به روش ابزارهایی مانند Qt Design Studio.
تجسم ابری سندان یک ابزار طراحی بصری قدرتمند برای رابطهای کاربری شما فراهم میکند. کد تولید شده را می توان بدون طراح دوباره استفاده کرد.
دو روش برای استفاده از سندان
ویرایشگر ابری Anvil با چند نمونه همراه همراه است، مانند یک برنامه استاتیک اولیه بدون کد پشتیبان، یک سیستم ساده بلیط فروشی، یا یک فروشگاه آنلاین کامل. هر کدام را می توان به عنوان یک الگو برای پروژه خود استفاده کرد. همچنین مجموعه ای مفید از اجزای رابط کاربری از پیش ساخته شده برای اتصال به صفحات وب دریافت می کنید. یکی از اجزای مفید، تایمر برای اجرای کد در فواصل زمانی است – به عنوان مثال، برای نظرسنجی یک منبع داده برای به روز رسانی. همچنین در صورت نیاز می توانید HTML و اجزای سفارشی خود را به صورت دستی رول کنید. منابع داده را نیز میتوان در فضای ابری اضافه کرد و به اجزای آن متصل شد، بنابراین برنامههای رایج CRUD را میتوان خیلی سریع کنار هم قرار داد.
اگر انتخاب کردید از زمان اجرا Anvil استفاده کنید، میتوانید برنامه ها را با دست بنویسید و از یکی از چند الگوی از پیش ساخته شده به عنوان نقطه شروع استفاده کنید. تغییرات در کد بلافاصله در سرور برنامه منعکس می شود و یک چرخه توسعه سریع را ایجاد می کند. عناصر رابط کاربری اساساً نمونههای کلاس پایتون هستند و کنترلکنندههای رویداد از طریق متدهای کلاس اضافه میشوند. همچنین اضافه کردن رفتارها به صورت برنامهریزی از طریق روشهای کلی سنجیده آسان است. برای مثال، اگر میخواهید رویدادی را با فرزندان یک شی مطرح کنید، برای انجام آن نیازی به حلقه زدن از میان کودکان ندارید. شما به سادگی می توانید از یک روش raise_event_on_children
در شیء کانتینر استفاده کنید.
به طور پیشفرض تمام جاوا اسکریپت برای یک سایت Anvil به طور خودکار تولید میشود، اما میتوانید جاوا اسکریپت خود را در صورت نیاز بنویسید. توجه داشته باشید که Anvil مقداری جاوا اسکریپت خود را بارگیری می کند که ممکن است با کدی که شما می نویسید مغایرت داشته باشد. علاوه بر این، برخی از وابستگی های خود Anvil تا حدودی قدیمی هستند – برای مثال Bootstrap 3. میتوانید با ایجاد یک تم سفارشی، آن را حل کنید، که مقدار کمی از کار نیست.
Pynecone
Pynecone شامل ابزار طراحی که در سندان خواهید یافت نمیشود، اما همان ایده اساسی را دارد: شما از کد پایتون هم برای نوشتن انتهای پشته وب خود و هم برای ایجاد برنامهای قسمت جلویی بدون نیاز به نوشتن جاوا اسکریپت استفاده کنید.
Pynecone خود از پایتون و حداقل نسخه پشتیبانی طولانی مدت زمان اجرا Node.js به همراه مدیر کتابخانه جاوا اسکریپت Bun استفاده می کند. برای این منظور، قبل از اجرای pip install pynecone
باید Node را در اختیار داشته باشید. همچنین، پشته Pynecone تا حدودی به نفع لینوکس نسبت به ویندوز متمایل شده است. آن را بر روی ویندوز اجرا می کند، نه به خوبی، مگر اینکه از Windows Subsystem برای لینوکس (WSL) استفاده کنید. اما پس از راهاندازی موارد، میتوانید از فرمان ارائهشده pc
برای راهاندازی یک الگوی پروژه Pynecone جدید در یک محیط مجازی و اجرای آن استفاده کنید.
نمونه ای از مدل مؤلفه برای صفحه Pynecone. برای بهبود عملکرد، میتوان کامپوننتها را برای استفاده مجدد در حافظه پنهان ذخیره کرد.
قسمت جلویی یک برنامه Pynecone به Next.js کامپایل می شود و هر یک از اجزای یک صفحه وب با استفاده از اشیاء پایتون توضیح داده می شود. بسیاری از مؤلفههای رایج داخلی هستند—نه فقط موارد رایج مانند طرحبندی متن یا مدیریت فرم، بلکه اشیاء نمایش دادهها مانند نمودارها یا نمودارها، کنترلهای بازخورد مانند هشدارها و نوارهای پیشرفت، و اشیاء همپوشانی مانند مدالها و نکات ابزار. همچنین میتوانید کامپوننتهای سفارشی React را بپیچید. برای اتصال به منابع داده، Pynecone شامل یک لایه داده است که ORM معروف SQLAlchemy را میپیچد.
اگر میخواهید یک مؤلفه رابط کاربری را سفارشی کنید، بیشتر سفارشیسازیهای متداول، مانند استایل CSS، میتواند بهجای اینکه یک مؤلفه را زیر کلاسبندی کند و آن را به این طریق تغییر دهد، بهعنوان آرگومان به سازنده شی منتقل میشود. برای هر چیز دیگری، HTML سفارشی وجود دارد، اما ترکیبی از داخلیها و گزینههای آنها باید برای اکثریت قریب به اتفاق پروژههای رایج کافی باشد. دکوراتور حافظه داخلی به شما امکان میدهد از رندر مجدد اجزای آن اجتناب کنید، اما دکوراتور به شما اجازه نمیدهد اندازه یا طول عمر حافظه پنهان آن را کنترل کنید.
در نهایت، اگر شما عمدتاً سایتهای استاتیک میسازید، Pynecone این توانایی را دارد که کل سایت را به یک ساخت استاتیک صادر کند. این باعث می شود Pynecone به عنوان یک ابزار برنامه نویسی برای تولید سایت نیز مفید باشد.
JustPy
مانند Pynecone، JustPy به شما امکان میدهد عناصر را به صورت برنامهنویسی در صفحات وب بسازید، اگرچه هیچ ابزار طراحی تعاملی ندارد. چیزی که JustPy را متمایز می کند، مدل شی کارآمد و معقول آن است.
به عنوان مثال، میتوانیم یک شی فهرست jp.Ul
l
ایجاد کنیم، سپس با تعریف اشیاء جدید با l
از طریق یک آرگومان مشخص شده است. این کار ساخت لیستها را با استفاده از حلقههای for
بدون نیاز به اضافه کردن اشیاء به ظرفی آسان میکند، بنابراین کد بهدستآمده تمیز و به راحتی قابل تجزیه است. تمام اشیاء JustPy را می توان زیر کلاس بندی و اصلاح کرد. اسناد چند مثال را ارائه میکند.
ثبت کنترلکنندههای رویداد برای عناصر، مانند اقدامات روی کلیک، چیزی بیشتر از نوشتن یک تابع پایتون را شامل میشود که self
را به عنوان اولین آرگومان (برای شی مورد نظر) میگیرد. کنترلکنندههای رویداد همچنین میتوانند رویدادهای «قبل» یا «پس از» را برای انعطافپذیری بیشتر داشته باشند. اگر میخواهید بهروزرسانیهای زنده از طریق WebSockets در قسمت جلویی بهروزرسانی شود، JustPy آن را به عنوان پیشفرض ارائه میکند، اما میتوانید از بهروزرسانیهای Ajax نیز استفاده کنید.
JustPy از Tailwind برای CSS استفاده میکند، که از کلاسهای ابزار قابل ترکیب برای استایلسازی استفاده میکند، اما میتوانید Tailwind را غیرفعال کنید. و در صورت نیاز در چارچوب CSS دیگری (منهای ادغام طبیعی JustPy) تعویض کنید. همچنین میتوانید HTML را مستقیماً به روشهای مختلفی وارد کنید – با تنظیم یک ویژگی inner_html
روی یک شی، با تزریق مستقیم HTML در سطح صفحه، یا با تجزیه HTML خام در یک جریان شی. کل صفحات یا اشیاء مجزا نیز میتوانند برای استفاده مجدد در حافظه پنهان شوند.
مدل شیء JustPy بسیار فشرده و کارآمد است، بنابراین انجام کارهایی مانند ایجاد آرایههایی از کنترلها و تخصیص رفتار به آنها آسان است.
یکی دیگر از ویژگیهای برجسته، یکپارچهسازی برای تعداد زیادی از چارچوبهای ارائه جلویی است: Matplotlib، Plotly، Altair، Bokeh، فقط به نام چند. این باعث می شود که JustPy برای بسته بندی کد پایتون برای علم داده و ارائه آن از طریق یک رابط وب مناسب باشد. هر شی، مانند یک نمودار Matplotlib، به عنوان یک شی JustPy ارائه می شود که می تواند به مجموعه اشیاء هر صفحه اضافه شود.
برخی چیزها گنجانده نشده است. JustPy یک ORM یا دیگر لایه داده را به عنوان بخشی از پشته خود شامل نمی شود. این حذف بزرگی نیست، زیرا ORM ها و لایه های داده به اندازه کافی آسان هستند که در هر چارچوب وب مدرن اضافه شوند. اما هیچ معادل مستقیمی برای یک سیستم قالب ساده مانند Jinja2 و هیچ گزینه ای برای استقرار وب سایت کاملاً ثابت وجود ندارد.
نتیجه گیری
با نگاهی کلی به سه فریم ورک، جذابیت بزرگ Anvil ابزارهای ایجاد رابط کاربری تعاملی کم و بدون کد آن است، در حالی که JustPy روشی فشرده برای بیان نحوه ایجاد و ارتباط اشیاء ارائه می دهد. در همین حال، Pynecone راحتی کار با مؤلفههای React و Next.js را فراهم میکند و به شما امکان میدهد سایتهای تولید شده را به HTML ایستا رندر کنید.
پست های مرتبط
۳ چارچوب وب پایتون برای قسمت های جلویی زیبا
۳ چارچوب وب پایتون برای قسمت های جلویی زیبا
۳ چارچوب وب پایتون برای قسمت های جلویی زیبا