Możliwości i ograniczenia
Obsługiwany kontrakt GS Loom i praca z AI.
GS Loom: własny silnik GrowSite
GS Loom to własny silnik szablonów GrowSite. Paczka zawiera loom.json, HTML, osobne schematy JSON, słowniki, style i opcjonalne zasoby. Kompilator akceptuje kontrakt GS Loom i odrzuca nieobsługiwaną składnię szablonów.
Dyrektywy i wyrażenia
| Zapis | Działanie |
|---|---|
gs-text="section.settings.title" |
Bezpiecznie zastępuje tekst elementu |
[[ section.settings.title ]] |
Interpoluje tekst lub wartość atrybutu |
gs-href, gs-src |
Wiąże adres z kontrolą protokołu |
gs-if, gs-else-if, gs-else |
Wybiera gałąź; alternatywy muszą być sąsiadami |
gs-repeat="item in content.items" |
Powtarza element; udostępnia loop.index i loop.index0 |
gs-component="link" |
Osadza plik HTML z snippets, components lub sections |
gs-prop-label="block.settings.label" |
Przekazuje parametr komponentu |
gs-group="header" |
Renderuje grupę sekcji |
gs-slot="blocks" |
Renderuje dozwolone dzieci według block_order |
gs-block="_signature" gs-id="signature" |
Osadza blok statyczny |
gs-slot="layout" |
Wstawia treść strony do layoutu |
gs-attr-checked="enabled" |
Ustawia atrybut; false i null pomijają go |
Dyrektywy mogą działać na <template>, który nie tworzy dodatkowego kontenera. Wyrażenia obsługują ścieżki danych, indeksy tablic, literały, porównania, and/or, not, konkatenację + oraz warunek ? tak : nie. Wartości false i null są fałszywe; pusty tekst można sprawdzić przez porównanie z blank.
Dostępne funkcje: safe_url(value), split(value, separator), first(list), slice(value, start, length), str(value), t(key), asset_url(name) i date(value, "%Y"). Nie można wywoływać dowolnych metod JavaScript. gs-set z gs-value pozwala nazwać wynik wyrażenia w lokalnym zakresie.
Pluginy i zachowanie istniejących stron
gs-form, gs-menu, gs-blog i gs-comments korzystają z integracji GrowSite. Instant zachowuje swój widok formularza. Victorie używa wspólnego renderera dokumentów i powiązania instancji formularzy. Paylio zachowuje cennik i FAQ w module interakcji paczki. Nie deklarujemy automatycznej obsługi koszyka ani rezerwacji, których platforma nie udostępnia.
GrowSite Skeleton używa stałego klucza growsite-skeleton. Dane edytowalnych sekcji są zapisywane w content.loom, a dane globalne w theme_settings.loom. Powiązania takie jak loom.settings.title wskazują pola tych dokumentów. Migracja nazewnictwa zachowuje identyfikatory katalogu, przypisania witryn i historię wersji.
Granice i bezpieczeństwo
Silnik nie ma dostępu do sieci, systemu plików ani bazy danych. Zna wyłącznie pliki paczki i jawnie przekazane dane. Tekst i atrybuty są escapowane; dostęp do prototypów jest zabroniony. Limity obejmują 500 KB pliku, 2 miliony znaków źródeł paczki, 1000 elementów listy, 24 poziomy wywołań i budżet pracy renderera. Moduły runtime/*.ts są zaufanym kodem instalowanym i kompilowanym przez osobę utrzymującą aplikację, nie kodem klienta wpisywanym do pola.
Źródłem kontraktu są scripts/loom-themes.mjs, packages/templates/src/lib/loom/runtime.ts i api/app/Rules/LoomDocument.php. Asystent w panelu nie instaluje nowych paczek motywów automatycznie. Paczki tworzone z pomocą AI podlegają tej samej walidacji i testom co kod napisany ręcznie.