Воведување Ренесансата на хипермедија е во полна насока. По години на доминација на СПА, програмерите повторно ја откриваат моќта на серверот-наменети архитектури кои го искористуваат HTML како мотор на состојбата на апликацијата. Рамката што го води ова оптоварување, HTMX, се фокусира исклучиво на хипермедија. Алтернатива, Lightview, не ве заклучува во хипермедија-само шеми. За разлика од HTMX фокусираниот хипермедија пристап, Lightview е мулти-парадигма рамка која поддржува и хипермедија шеми, функционално програмирање со шаблони таг функции како BauJS [ ], и JSON претставување (како JurisJS [ Оваа статија обезбедува техничка споредба на HTMX и Lightview хипермедија способности за да ви помогне да изберете вистинската алатка за вашиот проект. https://github.com/grucloud/bau https://jurisjs.com Може да кажете во овој момент, "Чекајте една секунда, HTMX треба да го поедностави развојот, зошто би сакал да ја изградам комплексноста на повеќето парадигми за кодирање?" Можеби не, поентата на Lightview е да ви даде избор, можете да ја изградите целата апликација со хипермедија, или можете да ја изградите целата апликација со функционално програмирање, или можете да ја изградите целата апликација со JSON репрезентација, или можете да ја изградите целата апликација со мешавина од сите три. Сето тоа зависи од она што ви треба. Можеби вашата апликација почнува од хипермедија, но како што растете, ќе најдете дека треба да користите функционално програмирање за да ја изградите комплексната деловна логика во офлајн првиот режим, или ќе најдете дека Што е хипермедија? Пред да се нурнеме во споредбата, да утврдиме што подразбираме со хипермедија. Хипермедија се однесува на содржина која содржи врски и контроли за навигација до сродни ресурси. Традиционалниот HTML го обезбедува ова преку врски и форми, но современите хипермедија рамки ги прошируваат овие способности на секој елемент, овозможувајќи побогати интеракции. Секој елемент може да послужи како линк и секој елемент може да го одреди изворот од кој сака да ја добие својата содржина. . ХТМЗ HTMX и Lightview: Завршување на HTML како хипертекст HTMX, создаден од Carson Gross како наследник на intercooler.js, има за цел да "целосно HTML како хипертекст." Lightview, создаден од овој автор, Симон Блеквел, беше дизајниран во соработка со LLMs, не само да го заврши HTML како хипертекст, туку и да обезбеди повеќе пренослив, декларитивен пристап за испорака на содржината на серверот, иако содржината на хипермедијата сè уште може да биде HTML како HTMX, исто така може да биде JSON виртуелни домови кои претставуваат HTML или native UI компоненти. Основна филозофија HTMX ја прифаќа архитектурата на Hypermedia-Driven Application (HDA), која се карактеризира со две ограничувања: Декларативна синтаксис: користи HTML-вградени атрибути наместо императивни скрипти Одговори на хипермедија: серверот одговара со HTML, а не со JSON Овој пристап ја задржува комплексноста на серверот, додека клиентот останува едноставен и декларативен. Клучни карактеристики HTMX им овозможува на секој елемент да издава HTTP барања со користење на стандардни глаголи: HTTP Method Support <button hx-delete="/contacts/1" hx-target="#contact-list" hx-confirm="Are you sure?"> Delete Contact </button> • на атрибутот укажува каде треба да се вметнат одговорите на серверот, користејќи CSS селектори: Flexible Targeting hx-target <input type="text" hx-get="/search" hx-trigger="keyup changed delay:500ms" hx-target="#results"> Прилагодени тригери за контрола кога бараат оган: Event Triggers <div hx-get="/news" hx-trigger="every 30s"> <!-- Auto-refreshing content --> </div> Многу опции за тоа како содржината го заменува постоечкиот DOM: Swap Strategies Внатрешноста на HTML (подрачливо) Надворешен пред почеток, после почеток, пред крај, после крај Избегнувајте, никој Истражувањата покажале дека ХТМX обезбедува вградена поддршка за глатки премини на корисничкиот интерфејс преку стабилни идентификатори на елементи, класи на фази на замена ( , на , на ) бара државни индикатори ( Промена на временските услови ( , на Ова им овозможува на апликациите управувани со хипермедија да постигнат SPA-како глаткост без прилагоден JavaScript. CSS Transitions and Animations htmx-swapping htmx-settling htmx-added htmx-request swap:1s settle:1s Од HTMX Можете да ги подобрите постоечките линкови и форми: Progressive Enhancement hx-boost <body hx-boost="true"> <!-- All links and forms now use AJAX --> </body> Поддршка за ажурирања во реално време: WebSockets & SSE <div hx-ws="connect:/chatroom"> <div hx-ws="send"> <input name="message"> </div> </div> Зависност HTMX има нула зависности, што го прави идеален за додавање на хипермедија способности на постоечките апликации без воведување на дополнителна комплексност. Lightview: Мулти-парадигма рамка со поддршка за хипермедија Lightview исто така има нула зависности, освен ако не одлучите да ги користите своите претходно изградени компоненти на корисничкиот интерфејс, и зема поинаков пристап со нудење на повеќе парадигми за програмирање во една рамка. Додека вклучува хипермедија способности слични на HTMX, не ве принудува да ги користите исклучиво. Можете да користите декларативни хипермедија шаблони, функционално програмирање или дефиниции на JSON базирани на податоци – сите во истата апликација. обезбедува сеопфатна онлајн документација и интерактивни РЕПЛ за тестирање на рамката. Вебсајт Основна филозофија: Моќта на изборот Lightview е флексибилен по дизајн. Не пропишува хипермедија како Наместо тоа, ви овозможува да ја одберете вистинската алатка за специфичниот дел од вашата апликација: само Хипермедија (HTMX-стил): Користете src и href за серверски управувани содржини и навигација на страници. Функционална (BauJS-стил): Користете JavaScript шаблон таг функции за комплексна, императивна логика. Data-Driven (JurisJS-style): Дефинирајте го интерфејсот како чист JSON (vDOM/oDOM) за конфигурирани интерфејси. AI-Safe (cDOM): Користете песочни JSON структури со извршен јазик на изрази (JPRX) за безбедни, AI-генерирани кориснички интерфејси. Хипермедија и интеракција Системот за хипермедија на Lightview е изграден на стандардни HTML атрибути ( , на ) се прошири со моќни способности. src href : Unified Attributes src: Повлекува содржина за да пополни елемент. Може да биде URL (за партиите од страна на серверот) или CSS селектор (за локалните партиции). href: Повлекува навигација или содржина што се вчита на интеракцијата на корисникот (на пример, <button href="/page.html">). Lightview нуди софистицирана контрола над тоа каде се вметнува содржината со користење на атрибути или Поставување на Targeting & Location target location Стандардни локации: innerhtml, outerhtml, beforebegin, afterbegin, beforeend, afterend. Shadow DOM: Lightview има прва класа поддршка за веб компоненти. Можете да вметнете содржина директно во сенка корен со користење на location="shadow" или :shadow суфикс на цел (на пример, target="#component:shadow"). Ова го разликува од HTMX, кој се фокусира на Light DOM. и Прилагодете HTTP акции директно во HTML: Advanced Requests ( data-method data-body <!-- DELETE request --> <button href="/api/items/123" data-method="DELETE" target="#log">Delete</button> <!-- POST with body --> <button href="/api/save" data-method="POST" data-body="#form-id">Save</button> Друг моќен Lightview диференцијатор е можноста за извор на содржина од тековниот документ. Додека HTMX е дизајниран да ги преземе хипермедија делови од сервер, Lightview овозможува атрибутот да содржи CSS селектор. Self-Sourced Partials (CSS Selectors as Source) src Ова овозможува "само-извор парцијали" каде што содржината може да се извлече од Скриена е Ова го намалува преоптоварувањето на мрежата и им овозможува на програмерите да ги спојуваат "офлајн" парцијалите директно во иницијалното оптоварување на страницата. <template> <div> Lightview го прифаќа пристапот дека хипермедија не мора да значи парцијали од страна на серверот, можете да имате целосна хипермедија СПА. <!-- Source content from a local template --> <div src="#tab-1-content"></div> <template id="#tab-1-content"> <h3>Tab 1</h3> <p>This content was sourced from a local template tag!</p> </template> Lightview поддржува автоматско прелистување до специфичен идентификатор на елемент при пренесување на содржина преку или навигација преку Ако URL-то содржи хаш фрагмент (на пример, ), Lightview автоматски ќе почека за содржината да се вчита, а потоа ќе го сврти целниот елемент во изглед. Automatic Hash Scrolling src href /docs/api.html#signals Паметни надоместоци: Позицијата за прелистување автоматски се смета за фиксна навигациска лента ако е дефинирана (преку --site-nav-height). Поддршка за сенка DOM: Превртувањето исто така работи за содржини што се вчитаат во сенка корен. Делимично вчитање: Работи и за целосна навигација (href) и за делумно ажурирање на содржината (src). ) и Triggers: Lightview обезбедува моќен "Gating" систем за пресретнување на настани пред да предизвикаат акции. Declarative Event Gating ( lv-before Модификатори: Вградена поддршка за throttle(ms) и debounce(ms). Цевоводи: Повеќе порти во синџирот (на пример, lv-before="click throttle(500) confirm('Are you sure?')" ). Прилагодени порти: Дефинирајте глобални функции за да ги потврдите акциите (на пример, validateUser()) кои враќаат false за да го откажат настанот. Реактивност и држава Lightview вклучува вграден, фино зрнат систем за реактивност (Сигнали и состојба) кој овозможува моментални ажурирања и автоматска резолуција на шаблони. Овој систем обезбедува: Автоматска резолуција на шаблони: ${...} таговите во HTML автоматски се ажурираат кога состојбата се менува. Именувана регистрација: Сигналите и состојбите може да се регистрираат по име за лесно врзување на шаблонот. JSON Schema Control: Извршување на интегритетот на податоците во реактивна состојба со користење на стандардниот JSON Schema. За детална техничка споредба на реактивната состојба на Lightview против пристапот на HTMX насочен кон серверот, видете одделот . Државно управување 3.Data-Driven & AI кориснички интерфејси Една од најпознатите карактеристики на Lightview е поддршката за (VDOM, oDOM) и (Од друга страна) Data-as-UI Safe AI-Generation Lightview може да добие и да го рендерира интерфејсот дефиниран како JSON, што често е полесно за позадина да се генерира и управува од HTML низи. Multiple JSON Formats vDOM: Стандардна виртуелна DOM структура. oDOM: „Object DOM“ за концизни конфигурирани интерфејси. /* vDOM (Explicit) */ [{ "tag": "div", "attributes": { "class": "p-4" }, "children": ["Hello"] }] /* oDOM (Concise) */ { "div": { "class": "p-4", "children": ["Hello"] } } /* cDOM / JPRX (Reactive & Safe) */ { "div": { "children": [ { "span": { "text": "Count: =/myVal" } }, { "button": { "onclick": "=/myVal++", "text": "+" } } ] } } Дозволувањето на AI да пишува сурова JavaScript е безбедносен ризик. е песочен JSON формат каде што AI може да дефинира структура и логика извршување на произволен код. Во оваа архитектура, служи како безбеден логички и експресивен јазик вграден во структурата на cDOM, обезбедувајќи ја моќта на реактивност и логика без безбедносните слабости на . Safe AI Generation with cDOM cDOM (Clean/Computed DOM) Без JPRX (JSON Path Reactive eXpressions) eval Безбедност: Нема евалуација или произволно извршување на скрипти. Логика: Поддржува логика како што се "ако", "лоп", математика и над 100 други функции преку безбеден јазик за изразување (JPRX). Користење случај: Идеален за "GenUI" апликации каде што LLM генерира интерфејс на летот. Користете cDOM кога сакате динамиката на генерираниот интерфејс без безбедносниот кошмар на генерираниот JavaScript. Глава-на-глава споредба Syntax и API површина : HTMX Прилагодени hx-* атрибути за сите функционалности Обширен речник на атрибути (hx-get, hx-post, hx-target, hx-trigger итн.) Конзистентната префикс прави HTMX карактеристики веднаш препознатливи Побрза крива за учење поради разновидноста на атрибутите : Lightview Користење на стандардни HTML атрибути (src, href) каде што е можно Помали атрибути вокабулар Повеќе запознаени со програмери кои знаат HTML JavaScript API за реактивни карактеристики или cDOM/JPRX за побезбедна реактивност Барање за акција И двете рамки поддржуваат прилагодени HTTP методи и барања тела, но со различни пристапи: uses dedicated attributes: HTMX <form hx-post="/submit" hx-swap="outerHTML"> Користете стандард Атрибути за конфигурирање: Lightview data- <button href="/api/endpoint" data-method="POST" data-body="#myForm"> Save </button> Тие се многу флексибилни: Lightview's data-body CSS Selector: Автоматски серијализира целта (на пример, #myForm како FormData или вредноста на влезот). JSON: Користете json:{"id": 1} за буквални JSON товар. JavaScript: Користете ја javascript:state.get ('user') за да ги извлечете податоците директно од реактивната состојба. Текст: Користете го текстот:Здраво за корисни оптоварувања со обичен текст. Тригери на настани Има софистицирана тригер синтаксис: HTMX <input hx-get="/search" hx-trigger="keyup changed delay:500ms"> има сличен пристап со користење на gating: Lightview lv-before <input oninput="search(this.value)" lv-before="input debounce(500)"> Цели и содржина позиционирање Двете рамки обезбедуваат флексибилна контрола над тоа каде се вметнува содржината: Користете и Атрибути на: HTMX hx-target hx-swap <button hx-get="/content" hx-target="#results" hx-swap="beforeend"> Load More </button> Користете со опционален локален суфикс или одделно Атрибути на: Lightview target location <!-- Target with suffix --> <button href="/content" target="#results:beforeend"> Load More </button> <!-- Separate location attribute --> <div src="/content" location="beforeend"></div> LightView вклучува како опција за позиционирање за вметнување на сенка DOM, додека HTMX се фокусира на стандардна DOM манипулација. Key difference shadow Содржина на серверот (Server vs. Local) : HTMX Designed for server-driven hypermedia (HDA) Извори мора да бидат URL адреси кои враќаат хипермедија (HTML) одговори Requires a network request for every partial update : Lightview Флексибилност на повеќе извори Извори може да бидат URL или CSS селектори Enables "Self-Sourced Partials" where content is pulled from local tags or other DOM elements <template> Овозможува спојување на заеднички фрагменти на корисничкиот интерфејс за да се намали почетниот водопад на мрежата Transitions and Animations Има поддршка за анимација од прва класа со класи на фази на замена, индикатори на состојба на барање, модификатори на време и интегрирање на API за премини на прегледот – овозможувајќи им на хипермедијалните апликации да постигнат SPA-како глаткост. HTMX во моментов се занимава со транзиции преку стандардни CSS транзиции / анимации и компоненти животен циклус куки без вградени swap фаза апстракции. Lightview Државно управување Ова е местото каде што рамките најмногу се разликуваат во нивниот архитектонски пристап: HTMX: Server-Side State HTMX е чисто фокусиран на хипермедија. Државата на клиентот е минимална, обично се обработува преку: Сесија на серверот: Државата се одржува во базата на податоци или сесија. Скриени полиња за формулари: пренесување на состојбата напред и назад во барањата. DOM атрибути: Зачувување на едноставна состојба во атрибути за податоци*. : For complex client-side logic, HTMX developers often reach for Alpine.js or similar lightweight libraries. Alpine.js Integration Lightview: Реактивност од страна на клиентот Lightview вклучува комплетен, фино зрно реактивност систем инспириран од SolidJS. Ова го прави мулти-парадигма рамка која може да се справи со состојбата независно од серверот. : Кога HTML е преземен преку или Lightview автоматски ги решава буквалитетите на шаблоните Ова им овозможува на партилите што се прикажани од серверот да станат моментално реактивни на клиентот без скрипти за хидратација. Automatic Template Resolution src href ${...} : Сигналите и состојбите може да се регистрираат по име, така што тие се достапни за резолуција на шаблони на глобално ниво: Named Registration // Registering a reactive signal by name const count = Lightview.signal(0, 'count'); // Registering a deeply reactive state by name const user = Lightview.state({ name: 'Alice', age: 30 }, 'user'); <!-- Loaded content automatically updates when 'user' state changes --> <h1>Welcome, ${state.get('user').name}</h1> Ставовите на Lightview опционално може да се спроведат со JSON шеми, обезбедувајќи интегритет на податоците за комплексни објекти: JSON Schema Validation const user = Lightview.state({ name: 'Alice', age: 30 }, 'user', { schema: { type: 'object', properties: { name: { type: 'string' }, age: { type: 'number' } }, required: ['name', 'age'] } }); : Reactive Primitives Сигнал (вредност): За примитивни вредности. статус (објект): За длабоко набљудување на објекти и маси. Ефект (fn): За да се извршат несакани ефекти кога зависностите се менуваат. Оваа архитектонска разлика го прави Lightview повеќе комплетна рамка за апликации, додека HTMX останува посветена алатка за подобрување на хипермедија. Ажурирање во реално време има поддршка од прва класа за WebSockets и Сервер-Сент настани: HTMX <div hx-ext="sse" sse-connect="/updates" sse-swap="message"> нема вградена поддршка за WebSocket/SSE (како на тековната верзија), иако може да се додаде преку стандарден JavaScript. Lightview Безбедност се потпира на стандардни практики за веб-безбедност: HTMX Same-origin policy Поддршка за CSRF токени преку hx-headers Содржина политика за безбедност компатибилност Вклучува безбедноста по дефолт: Lightview Политиката на истиот домен се спроведува автоматски Опасно блокирање на протоколот (JavaScript:, податоци:) Прилагодливи валидациски хаоси Постепено подобрување Принципи на прогресивно зголемување: HTMX <!-- Works without JS, enhanced with JS --> <body hx-boost="true"> <a href="/page">Link</a> <form action="/submit" method="post"> 's with the exception it currently lacks built-in support for websockets or server-side-events, Lightview's approach is just as capable of progressive enhancement. Because и се поддржани за секој елемент, нема потреба за ништо како . Lightview href src hx-boost Компонента на архитектурата нема компонентен модел – го подобрува стандардниот HTML. HTMX вклучува : Lightview Еднофамилни компоненти Храмови компоненти Увоз / извоз на променливи помеѓу компоненти Песочни далечински компоненти Исто така предвидува за заеднички UI модели, на пр. , на , , И така натаму 50 built-in components Loading Картата Хартија Драјверот Користете случаи When to Choose HTMX Додавање на интерактивност на апликациите на серверот: HTMX се одликува со постепено подобрување на традиционалните веб апликации Познавање на тимот со рендерирање од страна на серверот: Ако вашиот тим е удобно со Rails, Django, Laravel, итн. Прогресивното подобрување е критично: HTMX грациозно се деградира кога JavaScript е оневозможен Функции во реално време: Вградена поддршка за WebSocket/SSE Едноставно, предвидливо однесување: Фокусот на HTMX за една цел го прави лесно да се размислува за Кога да изберете Lightview Мулти-парадигма флексибилност: Кога сакате да го мешате функционалното програмирање, JSON-базираниот интерфејс и хипермедија во една кодова база Безбеден интерфејс генериран од АИ: Користење на cDOM за безбедни, песочни интерфејси генерирани од АИ Архитектура базирана на компоненти: Кога сакате повторно да користите компоненти без чекор на градење Реактивност од страна на клиентот: апликации за кои се потребни фини реактивни ажурирања Shadow DOM/Web Components: Вградена поддршка за инкапсулација Хибриден пристап: мешање на хипермедија модели со реактивно програмирање Само-извор парцијали: Кога сакате да користите хипермедија шаблони, но да извор некои содржини локално од DOM за да ги намалите мрежните барања или да обезбедите делови подготвени за офлајн Преглед на перформансите Двете рамки се перформанси, но оптимизираат различни работи: : HTMX Оптимизација фокусирана на мрежата (намалување на кружните патувања) Серверот го прави тешкото подигнување Минимална обработка од страна на клиентот Историја и caching вградени : Lightview Реактивност со фини зрна (само ажурирања менуваат јазли) Нема виртуелен DOM diffing overhead Може да ги намали мрежните барања со состојба на страна на клиентот Следење на зависноста оптимизира рендери Искуство на развојот Курсот на учење : HTMX Концептуално едноставно: HTML + атрибути Огромна документација и примери Голема заедница и екосистем Книгата "Хипермедијални системи" како сеопфатен водич : Lightview Многу ментални модели (хипермедија + реактивност + функционална) Сеопфатна документација со повеќе од 40 компоненти и обемни примери Помала заедница Потребно е разбирање на повеќе парадигми за програмирање Дебаггирање : HTMX Прелистувачот DevTools работи природно Одлично логирање и настани за дебугирање Request/response inspection straightforward : Lightview Следењето на зависноста може да биде потешко да се дебитира Реактивните ажурирања може да бидат помалку очигледни Вградениот начин на развој помага Екосистем и усвојување : HTMX Зрели екосистеми со приклучоци и екстензии Поддршка за библиотека од страна на серверот на сите главни јазици Голема и активна заедница Се користи во производството од страна на многу компании Дел од поширокото движење на хипермедија : Lightview Мал, но растечки екосистем Рамката за компјутерски крај (Watchlight) Помалку интеграција на трети страни Неодамна на сцената големина ХТМКС HTMX minified и gzipped е 29KB Светлината Lightview може да се вчита како три одделни датотеки: // Core: 6KB minimized and gzipped // Supports: tagged functions, signals, vDOM format <script src="lightview.js"></script> // X: 14KB minimized and gzipped // Adds: hypermedia, html template literal support, oDOM support <script src="lightview-x.js"></script> // CDOM: 25KB minimized and gzipped // Adds: cDOM, JPRX (not required for hypermedia) <script src="lightview-cdom.js"></script> Комбинираната големина потребна за да се имитира поголемиот дел од функционалноста на HTMX е 20KB, а ова ви дава и многу друга моќ. Споредување на кодот: Изградба на истата функција Да изградиме активна функција за пребарување со двете рамки: HTMX верзија <input type="search" name="q" hx-get="/search" hx-trigger="keyup changed delay:300ms" hx-target="#results" hx-indicator="#spinner"> <img id="spinner" class="htmx-indicator" src="/spinner.gif"> <div id="results"></div> Lightview верзија <input type="search" id="search-input" name="q" href="/search" oninput="LightviewX.request(this)" lv-before="input debounce(300)" target="#results"> <div id="results"></div> : How it works href="/search": Крајната точка да се добие. oninput="LightviewX.request(this)": го активира хипермедија моторот на Lightview на секое притискање на тастатурата. Потребно е само за елементи од типот на влез. Обработката на кликови е автоматска за елементи кои не се на влез. lv-before="input debounce(300)": Декларативно го дебондира внесот за 300ms, заменувајќи ја потребата за комплексна синтаксија за покренување. target="#results": Го насочува HTML или JSON одговорот во резултатите div. Интеграција со Backend Frameworks работи со било која технологија од страна на серверот која може да генерира HTML. HTMX работи со било кој JSON или HTML-генерирајќи задната страна - тоа не диктира архитектура од страна на серверот. Lightview Миграциски пат Од SPA до HTMX HTMX нуди постепена миграција патека: Започнете со hx-boost на постоечките форми и линкови Постепено додавање на повеќе софистицирани хипермедија интеракции Заменете ги SPA маршрутите со хипермедијални крајни точки Од SPA до Lightview Lightview исто така нуди постепена патека: Започнете со претворање на само неколку елементи во хипермедија Постепено додавање на повеќе софистицирани хипермедија интеракции Еволуција на функционални компоненти во означени функции Инкорпорирајте имиња на сигнали и статус Додадете динамичка генерација на АИ со cDOM/JPRX Заклучок И HTMX и Lightview претставуваат убедливи алтернативи, но им служат на различни потреби: : Choose HTMX if you want Чиста хипермедија-наменета архитектура Минимална комплексност од страна на клиентот Постепено зголемување Докажано, борбено тестирано решение Силна заедница и екосистем : Choose Lightview if you want Мулти-парадигма флексибилност (функционална, JSON, хипермедија) Безбедни AI-генерирани интерфејси со cDOM/JPRX Компонентна архитектура без градежни алатки Реактивност на фини зрна Поддршка за сенка DOM/Web компонента Слобода да го изберете вашиот стил на програмирање Самостоен извор на локални парцијали преку CSS селектори Клучната разлика: HTMX е ласерски фокусиран на хипермедија и го прави тоа исклучително добро. меѓу неколку парадигми - тоа не ве принудува да изберете хипермедија за сè. Една опција HTMX останува верен на хипермедија визија со ласерско фокусирање, додека Lightview прифаќа флексибилност, овозможувајќи ви да користите функционално програмирање (како BauJS), JSON претставување (како JurisJS), или хипермедија шеми како што бара вашиот случај на употреба. Ресурси ХТМКС Официјална страница: htmx.org Книга: „Хипермедијални системи“ на hypermedia.systems Discord: Активна заедничка дискусија Светлината Официјална веб-страница: lightview.dev Статија за безбедна генерација на AI UI: Како да се изгради AI генериран калкулатор без прилагоден JavaScript