Frage

Ich habe über eine Vorlagenlösung nachgedacht, obwohl meine Entscheidungen zwischen Mako und Genshi sind. Ich finde das Vorlagen in Genshi ein bisschen hässlich, also verlagere ich mich mehr in Richtung Mako.

Ich habe mich gefragt: Was ist so gut an der Tatsache, dass Mako einen eingebetteten Python -Code erlaubt? Wie ist es für den durchschnittlichen Joe bequem?

Würde das Vorlagen nicht gerade ausreichen, ohne den Python -Code eingebettet zu haben?

War es hilfreich?

Lösung

Als Mako Startseite Hinweise darauf, dass Makos Vorteile ziemlich klar sind: Wahnsinnig schnell, jeder, der mit Python praktisch in Bezug auf Syntax und Funktionen ist, sofort vertraut ist.

Genshi wählt "Interpretation" anstelle der pythoner Codegenerierung von Python (nach ihrer FAQ, Das ist für Klarheit von Fehlermeldungen) und einen "Arm's Länge" -Ansatz für Python (zB durch Verwendung von XPath für Selektoren, Xinclude statt Vererbung usw.). Daher kann es für Menschen, die keine Python kennen, natürlicher sein .

Also, was ist dein "Publikum"? Wenn Python -Programmierer, schlage ich Mako vor (für Geschwindigkeit und Vertrautheit); Wenn XML -Experten, die mit Python unangenehm sind, ist Genshi möglicherweise besser passend (für die Annäherung an "Armlänge aus Python" und näher mit der XML -Kultur).

Sie erwähnen "den durchschnittlichen Joe", aber Joe weiß nicht, dass Python und Xpath ein tiefes dunkles Geheimnis für ihn ist. Wenn das wirklich Ihr Publikum wäre, können andere Vorlagensysteme wie Django tatsächlich besser passen (helfen Sie ihm, in Schwierigkeiten zu geraten ;-).

Andere Tipps

Würde das Vorlagen nicht gerade ausreichen, ohne den Python -Code eingebettet zu haben?

Nur wenn Ihre Vorlagensprache über genügend logische Funktionen verfügt, ist es im Wesentlichen eine Skriptsprache an sich. An diesem Punkt könnten Sie genauso gut Python verwendet haben.

Weitere beteiligte Websites benötigen häufig eine komplexe Präsentationslogik und nicht triviale Vorlagenstrukturen wie Abschnitte, die an verschiedenen Stellen/Seiten und rekursiven Bäumen wiederholt werden. Dies macht keinen Spaß, wenn Ihre Vorlagensprache Ihre Hände hinter Ihrem Rücken verbindet, da es die religiöse Position nimmt, dass "Code in der Vorlage schlecht ist".

Dann schreiben Sie am Ende nur die Helferfunktionen in Ihrer Python Business Logic. Sprachen, die Ihnen die Macht nehmen, weil sie Ihnen nicht vertrauen, um sie geschmackvoll zu verwenden, sind lahm.

Dies scheint ein bisschen religiös zu sein. Django -Vorlagen nehmen eine harte Zeile ein: kein Code in Vorlagen. Sie tun dies aufgrund ihrer Geschichte als ein System, das in Geschäften verwendet wird, in denen es eine klare Trennung zwischen denjenigen gibt, die Code schreiben, und denen, die Seiten erstellen. Andere (vielleicht Sie) machen keine so klare Unterscheidung und würden sich wohler fühlen, wenn Sie eine flexiblere Grenze zwischen Layout und Logik haben.

Es kommt wirklich auf eine Frage des Geschmacks an.

Genshi wird für die Erzeugung von XML -Dokumenten konzipiert (vorgespannt, optimiert) (auch wenn es Unterstützung für die Generierung von Textdokumenten bietet). Mako- und Django -Vorlagen werden als konzipiert als generischer Text Vorlagensystem. Evoque Auch aber mit einem grundlegenden Unterschied, dass es die Designwahl macht, nur Python zu erlauben Ausdrücke In Vorlagen dh kein Python Aussagen.

Ein wichtiges Nettoergebnis davon ist, dass Evoque die Bewertung der Vorlagenbewertung in einem Sandkasten durchführen kann-dh Sie können sicher nicht vertrauenswürdige Benutzer für den Quellcode einer Vorlage einen Schreibzugriff geben-eine Funktion, die für Vorlagenmotoren praktisch unmöglich ist von Python -Aussagen. Oh, und obwohl Evoque in einigen Fällen keinen direkten Funktionsvergleich verliert, ist er in einigen Fällen tatsächlich schneller als Mako und läuft auch auf Python 3.

Sie könnten sich disziplinieren, dass Sie keinen Python -Code in der Vorlage injizieren, es sei denn, es ist wirklich der letzte Ausweg, der die Aufgabe erledigt. Ich habe ein ähnliches Problem mit der Vorlage von Django konfrontiert, in der ich einige ernsthafte CSS -Gymnastik machen muss, um meine Inhalte anzuzeigen. Wenn ich in der Vorlage einen Python -Code hätte verwenden können, wäre es besser gewesen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top