C++ HTML template framework, biblioteka szablonów, biblioteka generatora HTML
Szukam bibliotek szablonów / generatorów do C++, które są podobne do np. Ruby 's Erb, Haml, PHP' S Smarty, itp.
Byłoby świetnie, gdybym miał kilka podstawowych funkcji, takich jak pętle, if / else, konwersja int na ciągi itp.
Przekazywanie parametru do silnika renderowania szablonów jest również ważne, jeśli mogę przekazać je wszystkie w mapie hashowej zamiast wywoływać jakąś funkcję dla każdego z parametrów.
Masz jakieś zalecenia?
Widzę też możliwość osadzania języków takich jak Lua, jednak nie znalazłem biblioteki szablonów do tego.
12 answers
Szybki przegląd wspomnianego projektu.
Http://rgrz.tumblr.com/post/13808947359/review-of-html-template-engines-in-c-language
ClearSilver
- Strona: http://www.clearsilver.net
- projekt: https://code.google.com/p/clearsilver /
- Grupa: http://tech.groups.yahoo.com/group/ClearSilver
- Licencja: Nowa licencja BSD
- Język: C
- Ostatnia Aktualizacja: Nov 28, 2011
- ostatnia wersja: 0.10.5 12 lipca 2007
- Dokument: Rich
- społeczność: Medium (
Teng
- strona: http://teng.sourceforge.net
- kod: http://teng.svn.sourceforge.net/teng /
- Grupa: http://sourceforge.net/projects/teng /
- Licencja: Nowa licencja BSD
- Język: C++
- Binding: php, python
- Last Update: Mar 8, 2011
- ostatnia wersja: 2.1.1 on Mar 8, 2011
- Dokument: Rich
- społeczność: niska (rzadka dyskusja od 2010)
Templatizer
- strona: http://www.lazarusid.com/libtemplate.shtml
- projekt: tylko do pobrania
- Grupa: brak
- Licencja: free to use
- Język: C (low level)/C++ (interface) mixed
- Ostatnia aktualizacja: nieznany
- ostatnie wydanie: nieznane
- dokument: brak
- Wspólnota: none
Szablon HTML C++
- strona: http://nulidex.com/code/docs/html_template /
- projekt: http://sourceforge.net/projects/htmltemplatec
- Grupa: http://sourceforge.net/projects/htmltemplatec
- Licencja: GPL
- Język: C++
- Ostatnia Aktualizacja: Mar 27, 2011
- Ostatnia Wersja: Beta 0.7.4, Mar 27, 2011
- Dokument: Medium
- Wspólnota: none
Ctpp
- strona: http://ctpp.havoc.ru/en /
- projekt: tylko do pobrania
- Grupa: brak
- Licencja: licencja BSD
- Język: C++ Z C API
- Last Update: Oct 5, 2011
- ostatnia wersja: Wersja 2.7.2 5 października 2011
- Dokument: Rich
- społeczność: brak
Wt
- strona: http://www.webtoolkit.eu/wt /
- projekt: http://www.webtoolkit.eu/wt /
- Grupa: http://www.webtoolkit.eu/wt/community
- Licencja: GPL i komercyjna
- Język: C++
- Last Update: Nov 29, 2011
- Ostatnia Wersja: 3.2.0 29 listopada 2011
- Dokument: Rich
- społeczność: niska (rzadka aktywność)
Flate
- strona: http://flate.dead-inside.org /
- projekt: Brak
- Grupa: brak Licencja: LGPL v2. 1
- Język: C
- Last Update: Sep 4, 2010
- ostatnie wydanie: 2.0 on Sep 4, 2010
- Dokument: Poor
- społeczność: brak
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-02 04:52:50
NLTemplate jest małą biblioteką szablonów C++ O składni podobnej do Django.
- zmienna zastępcza
- bloki powtarzalne lub opcjonalne
- plik zawiera
- licencja MIT
- Brak zewnętrznych zależności
- pojedynczy plik źródłowy, łatwy do dodania do dowolnego projektu
Zastrzeżenie: jestem autorem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-22 19:45:49
Grantlee jest silnikiem szablonów łańcuchowych opartym na systemie szablonów Django. Jest on przeportowany do C++ / Qt.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-06 09:13:33
Wt (wymawiane 'dowcipny') jest biblioteką C++ i serwerem aplikacji do tworzenia i wdrażania aplikacji internetowych. Nie jest to "framework", który wymusza sposób programowania, ale biblioteka.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-11 17:26:43
CTPP jest bardzo szybką i wydajną biblioteką napisaną w C++. Posiada powiązania dla Perla, PHP i Pythona.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-13 16:32:06
ClearSilver {[2] } jest dostępny dla c. tutaj {[2] } jest lista istniejących stron internetowych, które używają clearsilver. Ale nie używam go sam.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-10 11:17:55
Facebook ' S format:
std::cout << format("The answers are {} and {}", 23, 42);
// => "The answers are 23 and 42"
std::map<std::string, std::string> m { {"what", "answer"}, {"value", "42"} };
std::cout << vformat("The only {what} is {value}", m);
// => "The only answer is 42"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-23 21:28:06
Próbowałem użyć silnika szablonów i dynamicznych stron C++ dostarczanych przez ffead-cpp framework, przykładowa implementacja jest pokazana na wiki
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-01 04:28:24
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-21 13:03:21
Jakoś przegapiłem NLTemplate kiedy szukałem oryginalnie i napisałem własny silnik szablonów C++, z widocznym podobnym przypadkiem użycia jak NLTemplate: -)
Https://github.com/hughperkins/Jinja2CppLight
- Jinja2-jak składnia
- lekki, bez zależności od boost, qt, itp ...
- substytucja zmiennej
- dla pętli
- w tym zagnieżdżone dla pętli: -)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-20 09:21:01
Opracowałem tutaj coś wzorowanego na jade dla c++. Wymaga prostego, ale potężnego języka wejściowego i tworzy pojedynczą funkcję szablonu c++, która zapisuje HTML do strumienia.
< html
< h1 The title is ${{ params["title"] }}& >
< ul >
& for(int i = 0; i < boost::get<int>(params["items"]); ++i) {
< li Item ${{ i }}$ >
& }
>
- zmienna zastępcza
- bloki kodu zdefiniowane przez Użytkownika
- pobiera pełną moc c++ (pętle, deklaracje zmiennych, nazwę)
- Super łatwy do integracji z kompilacjami źródłowymi
- wszystko co możliwe w czasie kompilacji
- Brak formatu pośredniego (straight c++)
- Łatwy do debugowania (ponieważ wyjście c++)
- brak zewnętrznych zależności
- Super tiny mniej niż 600 linii c++
- licencja GPL
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-16 23:23:32
Templtext jest małą biblioteką przetwarzania szablonów tekstowych w języku C++. Obsługuje zmienne podobne do bash (%VAR lub % {VAR}). Ale główną cechą jest obsługa funkcji zdefiniowanych przez użytkownika . Biblioteka została stworzona przeze mnie.
- parsowanie szablonów
- zmienna zastępcza
- funkcje zdefiniowane przez Użytkownika w szablonie
- C++11
- licencja GPL
Potrzebujesz biblioteki regex BOOST, ale zostanie ona zastąpiona przez STD:: regex w następnym wersja
Przykład 1:
using namespace templtext;
Templ * t = new Templ( "Dear %SALUTATION %NAME. I would like to invite you for %TEXT. Sincerely yours, %MYNAME." );
std::map<std::string, std::string> tokens01 =
{
{ "SALUTATION", "Mr." },
{ "NAME", "John Doe" },
{ "TEXT", "an interview" },
{ "MYNAME", "Ty Coon" }
};
std::map<std::string, std::string> tokens02 =
{
{ "SALUTATION", "Sweetheart" },
{ "NAME", "Mary" },
{ "TEXT", "a cup of coffee" },
{ "MYNAME", "Bob" }
};
std::cout << t->format( tokens01 ) << std::endl;
std::cout << t->format( tokens02 ) << std::endl;
Wyjście:
Dear Mr. John Doe. I would like to invite you for an interview. Sincerely yours, Ty Coon.
Dear Sweetheart Mary. I would like to invite you for a cup of coffee. Sincerely yours, Bob.
Przykład 2:
using namespace templtext;
std::unique_ptr<Templ> tf1( new Templ( "You have got an $decode( 1 )." ) );
std::unique_ptr<Templ> tf2( new Templ( "You have got an $decode( 2 )." ) );
std::unique_ptr<Templ> tf3( new Templ( "English version - $decode_loc( 1, EN )." ) );
std::unique_ptr<Templ> tf4( new Templ( "German version - $decode_loc( 1, DE )." ) );
std::unique_ptr<Templ> tf5( new Templ( "Flexible version - $decode_loc( 1, %LANG )." ) );
tf1->set_func_proc( func );
tf2->set_func_proc( func );
tf3->set_func_proc( func );
tf4->set_func_proc( func );
tf5->set_func_proc( func );
Templ::MapKeyValue map1 =
{
{ "LANG", "EN" }
};
Templ::MapKeyValue map2 =
{
{ "LANG", "DE" }
};
std::cout << tf1->format() << std::endl;
std::cout << tf2->format() << std::endl;
std::cout << tf3->format() << std::endl;
std::cout << tf4->format() << std::endl;
std::cout << tf5->format( map1 ) << std::endl;
std::cout << tf5->format( map2 ) << std::endl;
Wyjście:
You have got an apple.
You have got an orange.
English version - apple.
German version - Apfel.
Flexible version - apple.
Flexible version - Apfel.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-09 22:33:34