Основи на шаблоните (в. 1
Основната структура на CppCMS шаблонния файл
Когато събираме шаблони, ние поставяме тяхното съдържание в тяхната собствена кожа. Следователно, когато компилираме всеки шаблон, ние посочваме името на неговия скин като команда от първо ниво. Всяка кожа е представена от отделни пространства от имена в C++. Че. името на кожата всъщност е името на пространство от имена на C++.
Второто ниво е изглед (C++ клас). Всеки изглед, със собствена кожа, представлява конкретна страница, която трябва да бъде изобразена. Всяка кожа трябва да имплементира виртуална функция render(), освен ако вече не е била използвана в своя родителски клас. Всеки изглед е отделен клас, който наследява от cppcms::base_view в най-горния родител.
Всички изгледи могат да бъдат организирани в йерархия на наследяване. Например, възможна е следната йерархия на типичен блог:
Всеки наследяващ изглед може да замени своите родителски шаблони, които всъщност са виртуални функции.
HTML и разделяне на контролите
Системата за шаблони CppCMS е базирана на HTML страници с вградени команди за контрол на потока между таговете. Всяка шаблонна команда започва с и трябва да завършва с %> в един ред. Всяка шаблонна команда трябва да бъде затворена с тези "скоби".
Например --- правилният код е:
Грешно е да се комбинират различни команди. Например така:
Също така не трябва да обвивате командата в следващите редове. Следното е неправилно:
Символите в командите не трябва да съдържат % или > . Те могат да бъдат оградени в двойни кавички според правилата за екраниране на C++/C. Например:
Правила за описание на синтаксиса
Синтаксисът за описание на командите на шаблона е както следва:
- всичкоключовите думи ще бъдат отразени с малки букви в единични кавички. Например "кожа"
- ИМЕ е поредица от латински букви, цифри и долни черти, започващи с буква. Той представлява идентификатори и може да се дефинира с регулярен израз: [a-zA-Z][a-zA-Z0-9_]* . Например skin_1.
- ПРОМЕНЛИВА е непразна последователност от идентификатори (ИМЕНА), разделени с точка " . " или " -> ", която по избор може да завършва с () или да започва с *, за да идентифицира резултата от извикване на функция. Не се допускат интервали. Например: data->point.x, something.else() *foo.bar.
- STRING е стандартен C++/C низ със стандартни екраниращи знаци като "Hello \"World\"" . Забележка: Не е възможно да се свържат низове като "Hello " "World" е еквивалент на "Hello World" .
- ЧИСЛО е число - поредица от цифри, които могат да започват с - и да включват . . Може да се дефинира с регулярен израз: \-?\d+(\.\d*)?
- ИДЕНТИФИКАТОР е поредица от идентификатори (ИМЕ), разделени от символа ::. Не се допускат интервали. Например: data::page
- Всички препинателни знаци, затворени в единични кавички – като „,“ .
- Незадължителните елементи са посочени в квадратни скоби [], а задължителните елементи са посочени с помощта на скоби (). Опциите са разделени със символа.
Няма ограничения за интервалите между думите.
Означава, че са разрешени следните определения:
и тези не са разрешени:
CppCMS е рамка за уеб разработка за изпълнение на приложения с интензивно използване на ресурси.