XHPy breidt Python syntax zodat XML fragmenten geworden geldig Python uitdrukkingen.
Voordelen
& Nbsp; * Eenvoud: schrijven UI logica in een eenvoudige, expressieve syntax zonder de noodzaak van externe sjablonen of templates talen.
& Nbsp; * Flexibiliteit: gebruik Python uitdrukkingen vrij binnen XHPy-tags, en vice-versa.
& Nbsp; * Beveiliging: profiteren van automatische ontsnappen van tekst binnen XHPy-tags.
& Nbsp; * Herbruikbaarheid: herbruikbare componenten te bouwen door subklassen: x: element.
Een voorbeeld
In bar.py:
van xhpy.init import register_xhpy_module
register_xhpy_module ('foo')
import foo
In foo.py:
van xhpy.pylib import *
klasse: ui: foo (: x: element):
& Nbsp; attributenlijst bar
& Nbsp; categorie% stroom
& Nbsp; def maken (zelf):
& Nbsp; a =
& Nbsp; voor B in self.getAttribute ('bar'):
& Nbsp; a.appendChild (
& Nbsp; terug een
afdrukken
We kunnen nu gerund bar.py als een normale Python-script:
$ Python bar.py
- 0
- 1
- 2
Van Harte Gefeliciteerd! Je schreef net uw eerste fragment van XHPy.
Syntax
XHPy voegt enkele nieuwe syntax te Python. Regel voor regel replay tijd!
van xhpy.init import register_xhpy_module
Dit initialiseert XHPy en stelt u in staat om te registreren modules te worden geïnterpreteerd als XHPy.
register_xhpy_module ('foo')
Nu de foo module in foo.py zal worden geïnterpreteerd als XHPy bij invoer. Als foo waren een pakket, al zijn submodules zou ook worden geregistreerd; Dit is nuttig voor het registreren UI bibliotheken.
import foo
Om daadwerkelijk gebruik XHPy, echter, zult u waarschijnlijk willen de kern bibliotheek:
van xhpy.pylib import *
Nu heb je toegang tot alle standaard HTML 4.0 elementen, het: x: element basisklasse (dit is wat je aangepaste componenten bouwen bovenop!), En een aantal nutsbedrijven.
klasse: ui: foo (: x: element):
Het maken van nieuwe onderdelen is eenvoudig: gewoon subklasse: x: element. Voor uw component klasse worden ingeschreven, moet het beginnen met: - dit duidelijk onderscheidt uw componenten uit gewone Python klassen.
toeschrijven lijst bar
Dit is een attribuut verklaring, wat betekent dat: ui: foo laat bar attributen op
later - zoals XHP, XHPy maakt gebruik van XML-attribuut syntax.
categorie% stroom
Dit is een categorie verklaring -: ui: foo is onderdeel van de categorie% flow. Categorieën zijn vooral nuttig als de identificering elementen die lijken zonder overerving; bijvoorbeeld de tag in pylib.html heeft
kinderen (pcdata |% flow) *
wat aangeeft dat haar kinderen moet bevatten ofwel tekst of zijn van de categorie% stroom. (Dus we kunnen
def maken (zelf):
Wanneer u afdrukt een: x: element (of bel str op het), het maken () methode wordt aangeroepen; Dit is waar je je UI logica.
a =
voor B in self.getAttribute ('bar'):
& Nbsp; a.appendChild (
retourneren een
Hier
- die u toelaat om een ongeordende lijst te construeren uit een Python lijst. Standaard HTML-elementen zoals
- worden automatisch weergegeven - met dien verstande dat, in XHPy, kunt u Python uitdrukkingen gebruiken binnen-tags, zodat
{B}
wordt vervangen door de waarde van b. Let op het gebruik van getAttribute () en appendChild ():
self.getAttribute ('bar')
haalt de waarde attribuut bar (in casu bereik (3)), terwijl
a.appendChild ( - {b} )
- {b} als een kind van een =
- en
voegt
XHPy is grotendeels gebaseerd off XHP; voor meer details over de laatste, zie de `XHP wiki
& Nbsp; * XHPy klasse namen kunnen worden gebruikt overal gewone Python klassen kan;
& Nbsp; * XHPy tags te negeren interne witruimte, maar moet inspringen en lijn voortzetting regels extern gehoorzamen.
Meer over het laatste punt:
def foo (href):
& Nbsp; return
def bar (href):
& Nbsp; terug
& Nbsp;
geldig zijn, terwijl
def foo (href):
& Nbsp; terug
& Nbsp;
& Nbsp;
is niet, als ze tot een extra dedent na
Hoe werkt het?
Wanneer u
import xhpy.init
XHPy installeert een import haak. Deze haak vallen latere import statements, loopt ze door een preprocessor die een superset van Python ontleedt. Dit preprocessor vertaalt XHPy labels en klasse namen geldige Python, dan voert de vertaalde code in module scope.
Dit is vergelijkbaar met hoe XHP werkt, behalve:
& Nbsp; * met, bijvoorbeeld, pythonenv, dan kunt u altijd XHPy gebruiken, zelfs zonder toegang tot het hele systeem Python pakket installatie directories;
. & Nbsp; * standaard, Python compileert bytecode .pyc bestanden van uw modules, zodat de voorbewerking hoeft alleen te worden gedaan zodra wanneer een module voor het eerst wordt geïmporteerd
Eisen :
- Python
Reacties niet gevonden