Друкарня від WE.UA

BeePy - фронтенд фреймворк, написаний на Пайтоні, мого авторства 🤓
Для можливості запускати Пайтон в браузері використовується Pyodide та Emscripten (реалізацію WebAssembly)

На днях я випустив нову версію 0.3, де імплементував найпопулярнішу фічу фреймворків JS - двостороннє оновлення (так званий model/state, приклад з Vue, React та Angular), і нарешті хочу представити світу своє чадо 😊

А нашо мені це?🧐

Почнемо з написання найпростішого лічильника (Counter)

*тут ще стара назва — PyWeb

Це повністю валідний код, а виглядає набагато простіше, ніж ідентичний функціонал на існуючих фреймворках, та й паритись з деплоєм не треба, бо усе відбувається в браузері)
Є доступна для перегляду трохи просунутіша версія

Так а що там з modelьками?)

from beepy import Tag, CONTENT, state, mount
from beepy.tags import button, _input


class TextSyncExample(Tag, name='example'):
    value = state('')

    children = [
        clear_btn := button('Clear'),
        _input(value=value),
        CONTENT,
    ]

    def content(self):
        return f'Value: {self.value}'

    @clear_btn.on('click')
    def clear(self, _event):
        self.value = ''


mount(TextSyncExample(), '#root')

Цей приклад можна теж переглянути і потикати (і ще більше прикладів)

Хіба не круто?)

Це справді комусь потрібно?😮

Так, і популярність Python Notebooks та запуск PyScript — цьому безпосередній доказ. Але не тільки науковці, ігророби та якісь гіки можуть отримати користь з цього)
Кажуть, Python та JS — найпростіші мови для входу в IT, але на мою скромну думку, JS має більше недоліків, ніж переваг і на власному досвіді знаю як тяжко буває фіксити там баги

А я можу спробувати?🤩

Так, мій анонімний читате, тицяй тут, відкривай консоль (Ctrl+Shift+I),
і вводь код нижче, щоб почати)
Це уже три кнопки, для одного спільного лічильника

py(`
from beepy import Tag, mount, state, on

class IncrementButton(Tag, name='button'):
    amount = state(1)

    @on
    def click(self, event):
        self.parent.count += self.amount

    def content(self):
        return f'{self.amount:+d}'


class View(Tag, name='view'):
    count = state(0)

    children = [
        IncrementButton(),
        IncrementButton(amount=2),
        IncrementButton(amount=-10),
    ]

    def content(self):
        return f'Hello World\\nCount: {self.count}'

mount(View(), '#root', clear=True)
`)

А це мона дебажити?🪲

Мона)
Поки лише ручками, але все одно досить ефективно 🙃
Тицяй на елемент і в консолі пиши py0 — і маєш пайтон-об’єкт цього елементу
А якщо щось піде не так — можеш поставити брейкпоїнт у beepy.js на 5 стрічці (у функції _DEBUGGER, доволі очевидно, правда?😅), і матимеш більше даних про помилку і навіть локальні змінні, на всяк випадок)

А це тепер можна фулстек писати на пайтоні?🤯

Агась)
Можете спробувати мій приклад з Django на бекенді

Статті про вітчизняний бізнес та цікавих людей:

  • CRM keyCRM: зручне рішення для продажів, комунікацій і керування командою

    Успіх компанії залежить від того, наскільки швидко вона здатна опрацьовувати вхідні запити. Коли дані про клієнтів розпорошені між різними месенджерами, виникає хаос. CRM keyCRM пропонує вихід із цієї ситуації, об’єднуючи всі робочі процеси в єдиному зручному інтерфейсі.

    Теми цього довгочиту:

    Crm
  • Різниця між UX і UI, яку варто зрозуміти ще до першого заняття

    Більшість людей, які обирають професію UX чи UI, довго вважають це одним і тим самим. Насправді це два різних підходи до роботи над продуктом, і плутанина між ними гальмує розвиток ще на старті.

    Теми цього довгочиту:

    Ui-ux
  • Логіка змін: як SEO оптимізація прибирає бар’єри до зростання

    Багато компаній приходять у SEO з очікуванням швидкого ривка, але дійсний ефект починається там, де сайт перестають латати точково. Тому в центрі роботи стоїть не окрема дія, а послідовні зміни. Оптимізація сайту має прибирати системні перешкоди, а не маскувати їх новими текстами

    Теми цього довгочиту:

    Seo
  • Музичний футуризм: неймовірні інструменти XXI століття

    Еволюція музичних інструментів це один із найкрутіших проявів потужності людської уяви і потреби виразити себе через мистецтво. І хоча багато традиційних інструментів майже не змінилися за століття існування, інновації і пошук не зупиняються.

    Теми цього довгочиту:

    Музичні Інструменти
  • Стіл – всьому голова? Так, якщо його правильно підібрати

    Коли починаєш вивчати пропозицію меблевих фабрик щодо столів, дивуєшся кількості варіантів, адже вони пропонують різні розміри, різні матеріали, різноманітні форми та дизайни. Скористайтесь нашим каталогом MebelOK, щоб Ви могли підібрати найкращу модель для Вашого приміщення

    Теми цього довгочиту:

    Столи
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Вітя
Вітя@kor0p

Python SDET @ ajax.systems

6Довгочити
871Перегляди
18Підписники
Підтримати
На Друкарні з 14 квітня 2023

Більше від автора

Це також може зацікавити:

Коментарі (8)

Круто, неймовірно радий що наші українчики можуть і роблять подібні круті фреймворки 😍🔥

Це також може зацікавити: