XHPy extinde sintaxa Python, astfel încât fragmente XML deveni expresii Python valabile.
Avantaje
& Nbsp; * Simplitate: scrie logica UI într-o sintaxă simplă, expresiv fara a fi nevoie de template-uri externe sau limbi templating.
& Nbsp; * Flexibilitate: expresii utilizare Python liber în cadrul tag-uri XHPy, și vice-versa.
& Nbsp; * Securitate: beneficiu de la evadarea automată de text în tag-uri XHPy.
& Nbsp; * Reutilizarea: construi componente reutilizabile de subclasarea: x: elemente.
Un exemplu
In bar.py:
de la xhpy.init register_xhpy_module import
register_xhpy_module ("foo")
foo import
In foo.py:
de la xhpy.pylib import *
Clasa de: ui: foo (: x: Element):
& Nbsp; atribut listă bar
& Nbsp; categoria de curgere%
& Nbsp; def face (auto):
& Nbsp; o =
& Nbsp; pentru b din self.getAttribute ("bar"):
& Nbsp; a.appendChild (
& Nbsp; returna un
imprimare
Putem rula acum bar.py ca un script Python obișnuit:
$ Python bar.py
- 0
- 1
- 2
Felicitări! Trebuie doar scris prima fragment de XHPy.
Sintaxa
XHPy adaugă unele noi sintaxă la Python. Linia de timp reluarea linie!
de la xhpy.init register_xhpy_module import
Acest inițializează XHPy și vă permite să înregistrați module trebuie interpretat în sensul că XHPy.
register_xhpy_module ("foo")
Acum, modulul foo în foo.py va fi interpretat ca XHPy atunci când sunt importate. Dacă foo fost un pachet, toate submodule sale va fi de asemenea înregistrate; acest lucru este util pentru înregistrarea biblioteci UI.
foo import
Pentru a utiliza efectiv XHPy, cu toate acestea, veți dori, probabil, biblioteca de bază:
de la xhpy.pylib import *
Acum ai acces la toate standard de HTML 4.0 elemente,: x: clasa de bază elementul (aceasta este ceea ce vă construi componente personalizate pe partea de sus a!), Iar unele utilități.
Clasa de: ui: foo (: x: Element):
Efectuarea de noi componente este simplu: doar subclasa: x: elemente. Pentru clasa componente să fie înregistrate, acesta trebuie să înceapă cu: - aceasta distinge clar componentele din clasele Python obișnuite.
atribut listă bar
Aceasta este o declarație atribut, în sensul că: ui: foo permite bar atributele pe
mai târziu - cum ar fi XHP, XHPy utilizează sintaxa XML atribut.
categoria de curgere%
Aceasta este o declarație categorie -: ui: foo face parte din categoria de curgere%. Categorii sunt în primul rând utile ca o modalitate de a identifica elemente care sunt similare fara a utiliza moștenire; de exemplu,
copii (PCDATA | flux%) *
indicând faptul că copiii săi trebuie să fie conține text sau să fie din categoria debitului%. (Deci, putem pune
def face (auto):
Când imprimați o: x: Element (sau apel str pe el), render () metoda este invocată; acest lucru este în cazul în care ați pus logica UI.
o =
pentru b din self.getAttribute ("bar"):
& Nbsp; a.appendChild (
întoarce o
Aici,
- , care vă permite să construiască o lista neordonata dintr-o listă Python. Elemente standard HTML, cum ar fi
- sunt prestate în mod automat - cu excepția faptului că, în XHPy, puteți utiliza expresii Python în tag-uri, astfel încât
{B}
se înlocuiește cu valoarea b. Notă utilizarea getAttribute () și appendChild ():
self.getAttribute ("bar")
preia valoarea bara atribut (în acest caz, interval (3)), în timp ce
a.appendChild ( - {b} )
- {b} ca un copil de un =
- și
adaugă
XHPy se bazează în mare măsură pe XHP; pentru mai multe detalii despre acesta din urmă, a se vedea `XHP wiki
& Nbsp; * nume de clasa XHPy pot fi utilizate clase de Python oriunde ordinare poate;
& Nbsp; * Tag-uri XHPy ignora spațiu intern, dar trebuie să se supună regulilor exterior indentare și linia de continuare.
Mai multe despre ultimul punct:
def foo (href):
& Nbsp; revenire
def bar (href):
& Nbsp; a reveni
& Nbsp;
sunt valabile, în timp ce
def foo (href):
& Nbsp; a reveni
& Nbsp;
& Nbsp;
nu este, așa cum se introduce un dedent suplimentar după
Cum funcționează
Cand tu
xhpy.init import
XHPy instalează un cârlig de import. Acest cârlig capcane declarații de import ulterioare, care rulează-le printr-un preprocesor care analizează un superset de Python. Acest Preprocessor traduce etichetele XHPy și nume de clasă pentru valabil Python, apoi executa codul tradus în modul domeniul de aplicare.
Acest lucru este similar cu modul în care funcționează XHP, cu excepția:
& Nbsp; * cu, de exemplu, pythonenv, îl poți folosi întotdeauna XHPy chiar și fără acces la directoarele de instalare pachet Python la nivel de sistem;
. & Nbsp; * în mod implicit, Python compileaza bytecode .pyc fișiere de module tale, astfel preprocesare are nevoie doar să se facă o dată când un modul este prim importat
Cerințe :
- Python
Comentariile nu a fost găsit