Представяме ви Presto
Представяме ви Presto - част втора
Продължавайки да усвоявате лекотата на използване на прясно пуснатата уеб рамка RUBY.
Това е втората част и е посветена на целомъдрието на HTML изобразяването.
- избор и разширения на двигателя
- задаване на път към шаблони
- как, къде и от кого се използват оформления
- изобразяване на ток/произволен аксион
- рендиране на произволен файл/светлина
- компилиране на шаблони за увеличаване на производителността
- използване на изолирана среда за повишаване на сигурността
- и т.н.
Шаблони - Опции
По-долу е даден списък с опции за фино насищане View Api.
Важно е да се отбележи, че всички опции могат да бъдат зададени както на ниво контролер, така и на ниво слайс.
Избор на двигател
Благодарение на страхотен проект като Tilt, Presto поддържа повечето от популярните шаблониращи машини като Haml, Sass, CoffeeScript, Erubis, Liquid и др.
Ето пълен списък.
По подразбиране Presto използва ERB.
За да използвате друг механизъм, трябва да извикате view.engine на ниво контролер или отрязък.
Пример: Yuzai: Ерубис на ниво контролер
Пример: Юзай: Хамл на ниво филийки
В този пример News ще използва: Haml, докато статиите ще използват: Erubis.
Ако избраният двигател се нуждае от аргументи по време на инициализацията, ние ги предаваме през същия view.engine .
Разширяване
Presto ще използва разширението, свързано с двигателя по подразбиране: Erubis => .erb, Haml => .haml и т.н.
Ако вашите шаблони използват нестандартно разширение, моля, уведомете ни чрез view.ext
Път към шаблоните
По подразбиране Presto ще търси шаблони в изгледа/папката във вашето приложение.
Ако вашите шаблони са в друга папка, моля, уведомете ни чрез view.path
В този пример класът Index ще търси шаблони в папката base/views/articles, докато статиите в папката base/views/articles.
Тоест, Presto формира пътя към шаблоните, като добави http.map към view.path.
Името на самия шаблон се формира от името на аксиона и разширението.
Разширението се инсталира автоматично или можете да инсталирате своето чрез view.ext
/ users/index ще изобрази view/users/index.haml
/ users/register ще направи преглед view/users/register.haml
Трябва да се отбележи, че в нестандартни ситуации, когато шаблоните са на Луната или на Марс,
трябва да използвате view.root, за да зададете абсолютния път към шаблоните.
В този случай view.path се игнорира.
Път към оформленията
Очаква се оформленията да бъдат в същата папка като шаблоните.
Ако те са в различна папка, трябва да използвате view.layouts_path
за да зададете правилния път. Правилният път трябва да бъде зададен спрямо папката с шаблони.
Няма начин да посочите абсолютния път към оформленията, те трябва да са вътре в папката за шаблони.
Пример: оформленията се намират в оформлението/папката в папката за шаблони
Оформление
По подразбиране Presto няма да изобразява никакви оформления.
Presto може, разбира се, да провери папката за шаблони за светлина и да я изобрази, ако бъде намерена.
Но това е много жестоко за изпълнението.
Файловите операции забавят приложението.
Програмистът знае по-добре как и кога приложението му използва оформления,
и той трябва да сподели това знание с приятелска рамка.
Така че, ако вашият контролер или отрязък използва оформления, уведомете ни чрез view.layout
Ако извикате view.layout само с един аргумент, той ще зададе оформлението за всички действия.
Пример: всички аксиони използват: главно оформление
Ако извикате view.layout с два или повече аргумента, той ще зададе оформлението на действията, предадени като аргументи.
Пример:: signin и: signup use: layout_regout layout, други оформления не
Можете също да игнорирате оформлението за определен списък от действия, като предадете false [Boolean] като първи аргумент.
Пример: всички аксиони използват: по подразбиране, докато печатът игнорира оформлението
view.layout може да бъде извикан много пъти, той е толкова отзивчив.
Редът на обажданията не влияе на инсталацията, така че той разбира.
Пример:: ябълка и: портокал употреба: плодове Оформление, други използват: по подразбиране
Контекст
По подразбиране шаблоните се изобразяват в контекста на задействания в момента контролер.
Тоест шаблонът ще има достъп до всички променливи и методи, достъпни за контролера.
Удобен, но не винаги безопасен.
За по-голяма сигурност си струва да изобразявате шаблони в изолирана среда.