дієта нг 1.7.4

Компілятор шаблонів дієт наступного покоління.

версії DietUseLive

Щоб використовувати цей пакет, запустіть таку команду в кореневому каталозі проекту:

Ручне використання
Додайте таку залежність до розділу залежностей вашого проекту:

Дієта-НГ

Дієта - це загальна система шаблонів часу компіляції, заснована на XML-подібній структурі. Синтаксис знаходиться під сильним впливом мопса (раніше "Джейд") і Haml, і вихід динамічного HTML є основною метою. Він підтримує модулі трансформації, що підключаються, а також вихідні модулі, завдяки чому можливо багато інших застосувань.

Див. Попередню специфікацію для огляду синтаксису.

Це сховище містить призначеного наступника реалізації модуля vibe.templ.diet vibe.d. Поточний стан майже стабільний, функціональний і готовий до передвиробничого тестування.

Приклад

Вихідні дані HTML:

Цілі реалізації

  • Будь як можна швидше. Це означає переміщення якомога більшої кількості операцій із часу виконання на час компіляції.
  • Уникайте будь-якого динамічного розподілу пам'яті (якщо це не відбувається в коді користувача)
  • Нехай згенерований код буде повністю @safe (якщо вбудований код користувача не є)
  • Будьте настроюваними (фільтри, переклад, перетворення DOM, генератори виводу), не вдаючись до загального стану бібліотеки
  • Дійте на діапазонах. Вихід HTML записується у вихідний діапазон, вхідні діапазони підтримуються в межах інтерполяції рядків, а підтримка фільтрів/перекладу повинна бути реалізована за допомогою діапазонів (остання частина ще не реалізована).

Експериментальне кешування шаблонів HTML

Оскільки компіляція складних шаблонів Diet може уповільнити загальний процес компіляції, бібліотека надає можливість кешування та повторного використання результатів. Це вмикається шляхом визначення константи версії DietUseCache ("версії": ["DietUseCache"] у dub.json або версії "DietUseCache" у dub.sdl). Не рекомендується використовувати цю функцію за межами звичайного циклу розробки під час редагування-компіляції, особливо не для збірок випусків.

Після увімкнення компілятор шаблонів шукатиме файли * _cached _ #####. D у папці "views /", де * складається з повного шляху шаблону Diet, а ##### представляє унікальне хеш-значення що визначає вміст шаблону, а також включений/розширений. Якщо буде знайдено, він просто використовуватиме вміст цього файлу, замість того, щоб проходити весь процес компіляції.

Під час виконання, під час ініціалізації, програма виводить вміст усіх щойно скомпільованих шаблонів у папку "views /". З цієї причини це зараз важливо, щоб програма запускалася з поточним робочим каталогом, встановленим на каталог пакунків! Недоліком цього методу є те, що застарілі кешовані шаблони не видаляються автоматично. Час від часу необхідно вручну очищати всі файли * _cached _ *. D.

Зауважте, що ця функція незабаром застаріє [робота Стефана Коха над двигуном CTFE DMD] (https://github.com/UplinkCoder/dmd/commits/newCTFE).

Експериментальний режим HTML Live

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

Тепер бібліотека підтримує "Живий режим", де будь-які зміни у шаблонах, які суворо пов'язані з HTML, будуть відображатися при оновленні сторінки, замість того, щоб вимагати перекомпіляції. Це працює шляхом заміни виводу HTML-частин шаблону на вихід з таблиці пошуку рядків. Потім рядки перебудовуються щоразу, коли файл змінюється. Так, наприклад, додавання або видалення класу з елемента html або фіксація herf до href в прив’язуючому елементі не вимагає перекомпіляції.

Зміни частин коду шаблону (наприклад, інтерполяції рядків, таких як # або!, Або будь-який код захисту D, наприклад - foreach (x; діапазон)) призведе до винятку та змусить вас перекомпілювати проект перед продовженням. Це пов’язано з тим, що дієтичний механізм може обробляти зміни в рядкових даних, але не може перекомпілювати ваш проект замість вас. І очевидно, що зміна коду поза шаблонами не змінить відображені сторінки без перекомпіляції. Підтримується навіть додавання нових рядків або вставка рядків там, де HTML не існував.

змінено на наступне не вимагатиме перекомпіляції

Режим вмикається шляхом визначення константи версії DietUseLive ("версії": ["DietUseLive"] у dub.json або версії "DietUseLive" у dub.sdl). Не рекомендується використовувати це у виробництві з тих самих причин, перелічених для режиму кешування.

Щоб бути максимально ефективними, шаблони аналізуються лише при першому доступі та повторно аналізуються лише тоді, коли виявлена ​​модифікація в якому-небудь шаблоні або залежному шаблоні. Зауважте, що він все ще буде не таким ефективним, як звичайний режим, який не вимагає жодного введення-виведення файлів для візуалізації шаблонів.

Цей підхід має кілька обмежень. Як і DietUseCache, це ПОТРІБНО, щоб каталог подань був доступним для запущеного виконуваного файлу. Крім того, щоб спростити генерацію коду (і уникнути повного аналізатора D), деякі функції не працюють із режимом Live. Дві такі особливості - це визначення типів (тобто структури, об'єднання або класи) та статичні функції. Немає механізму втечі, який би дозволив їх, тому вам доведеться переконатися, що вони відсутні у ваших шаблонах дієт, або ви отримаєте, мабуть, дуже дивні помилки компілятора.

Будь-які інші проблеми, повідомте про них у github.

Цей режим та режим DietUseCache можна поєднувати. Просто визначте обидві версії у конфігурації дублювання вашого проекту.

Каталог прикладів

Каталог прикладів містить 2 проекти, що демонструють особливості дієти.

  • htmlgenerator - використовує дієту-ng для створення статичних html-файлів із шаблонів дієт.
  • htmlserver - простий проект vibe.d, який показує деякі особливості розбору шаблону дієти. Зверніть увагу, що існує кілька конфігурацій, які показують, як працюють кешування та режим реального часу. Будь ласка, перегляньте файл README.md, щоб отримати докладнішу інформацію в цьому каталозі.

821 завантажень сьогодні

3822 завантажень цього тижня

24160 завантажень цього місяця