2009-12-10 10 views
5

Als ich mit jsp/jstl und jQuery Web-Apps entwickelte, schrieb ich netten HTML-Code, getrennt von Stilen und Skripten. JSP hat einige ungerade Leerzeichen und Leerzeilen eingefügt, aber sonst nichts.JSF-Komponenten-Bibliotheken erzeugen schrecklichen HTML-Code. Es ist nicht in Ordnung, aber ist es akzeptabel?

Jetzt versuche ich mit jsf zu entwickeln. JSF hat viele Bibliotheken zum Erstellen von RIA mit zahlreichen Komponenten, so dass es viel schneller sein sollte, Web-Apps mit jsf und einigen Komponenten zu entwickeln.

Aber alle libs, die ich schon probiert habe, erzeugen furchtbares HTML gemischt mit Skripten gemischt mit einigen zusätzlichen versteckten Eingaben und Styling innerhalb von HTML. Diese Bibliotheken bieten oft auch ein Tabellenlayout (mit verschiedenen Panel, GridPanel und anderen Komponenten).

Für mich sieht es schrecklich aus und ich kann nicht so ein großes Chaos in meinem HTML sehen.

Ich weiß es nicht genau, aber ich denke, dass ASP.NET etwas ähnliches erzeugt.

Also, die Frage: ist es ein neuer Standard der Web-Entwicklung - Erstellen von schnell und schmutzig HTML?

Antwort

2

JSP eingefügt einige ungerade Leerzeichen und Leerzeilen, aber sonst nichts.

Dieser Whitespace ist übrigens trimmbar. In Tomcat und Klonen müssen Sie lediglich den Initialisierungsparameter JspServlet auf trimSpaces auf true setzen.

Aber alle Bibliotheken, die ich bereits ausprobiert habe, erzeugen furchtbare HTML-Inhalte, gemischt mit Skripten, gemischt mit einigen zusätzlichen versteckten Eingaben und Styling innerhalb von HTML. Diese Bibliotheken bieten oft auch ein Tabellenlayout (mit verschiedenen Panel, GridPanel und anderen Komponenten).

Wenn dies Ihr Hauptanliegen ist, dann gehen Sie einfach weiter mit dem basic JSF implementation. Es bietet alles, was Sie benötigen, um mit zu beginnen, mit ein wenig Hilfe von Tomahawk für erweiterte Komponenten (z. B. tabellenlose Radios/Checkboxen) und die fehlenden Komponenten (z. B. Datei-Upload und Datenliste).

Auf diese Weise können Sie einfach das CSS auf die übliche Weise tun: vollständig externalisiert in einer separaten Datei und nur mit styleClass in JSF.Mischen Sie kein Inline-CSS mit dem Attribut style. Wenn Sie Kolontrennte JSF-Client-IDs stilisieren möchten (Doppelpunkt ist ein unzulässiger Bezeichner in CSS), dann müssen Sie nur Escape es im Selektor mit einem umgekehrten Schrägstrich. Z.B. #formid\:inputid { background: gray; }.

Mischen Sie auch keine Inline-Skripte mit den on* Attributen. Verwenden Sie jQuery zur Einführung unaufdringlich Javascript. Was die automatisch generierten Javascripts betrifft, die von JSF-Komponenten kommen, erhalten Sie diese in der grundlegenden Implementierung nur in , was im Grunde ein <a> Element ist, das ein verstecktes POST-Formular übermittelt. Da dies semantisch/technisch/SEO-falsch ist, würde ich es überhaupt nicht verwenden. Verwenden Sie einfach h:commandButton zum Senden von Formularen und h:outputLink zum Navigieren.

In Bezug auf Tabellen-Designs, seit JSF 1.2 können Sie einfach nur HTML in Vorlage schreiben. Sie können einfach <div> Elemente verwenden, um positionierte Inhaltselemente zu definieren. Wenn Sie ein Purist sind, können Sie sogar JSF <h:panelGroup layout="block"> verwenden, um ein HTML <div> Element zu erhalten. Es ist absolut nicht notwendig, <h:panelGrid> zu verwenden, um Inhaltselemente zu positionieren.

Ich weiß es nicht genau, aber ich denke, dass ASP.NET etwas Ähnliches erzeugt.

Es tut es.

Also, die Frage: ist es ein neuer Standard der Web-Entwicklung - Erstellen von schnell und schmutzig HTML?

Nein, Sie haben es in Ihren Händen.

+0

Danke für 'trimStaces' und '\:', ich wusste nichts davon. – Roman

+0

Vielleicht weil du es falsch geschrieben hast;) Froh, neues Wissen mitzubringen, bitte. – BalusC

2

JSF-Implementierungen sind in der Regel gültigen Markup zu produzieren. Es ist also kein "schmutziges HTML". Die Tatsache, dass ist nicht leicht Mensch-lesbar ist nicht wichtig, also um Ihre Frage zu beantworten - der generierte Code ist akzeptabel.

Gestern habe ich PageSpeed ​​und YSlow Test auf meiner MyFaces/RichFaces-Anwendung durchgeführt, und abgesehen von der Unfähigkeit, mehrere CSS- und JS-Dateien in einem zu kombinieren (die Anzahl der HTTP-Anfragen verringern), ist alles andere in Ordnung.

+0

Ja, es ist gültig. Sie sagten sehr genau - es ist nicht lesbar. Und niemand denkt an Client-Performance, klaren DOM-Baum und andere alte gute Praktiken. – Roman

+0

Im Gegenteil - siehe mein Update über Client-Geschwindigkeit. – Bozho

0

Ich stimme Ihnen zu, das generierte HTML von JSF (und allen Komponenten Bibliotheken) ist ziemlich schrecklich, aber es ist immer noch gültig.

Ich denke, das Hauptproblem ist, dass der generierte Code mit den wichtigsten Browsern auf dem Markt kompatibel sein muss, darunter Internet Explorer 6+, Firefox, Opera, Chrome ... Dies führt die Entwickler manchmal zu einem ziemlich schlechten erstellen HTML nur weil "es auf jedem Browser funktioniert" ...

Verwandte Themen