XHPy kiterjed Python szintaxist úgy, hogy XML töredékek válik érvényessé Python kifejezéseket.
Előnyök
& Nbsp; * Egyszerűség: levelet UI logika egyszerű, kifejező szintaxis nélkül nincs szükség külső sablonok, vagy sablonozó nyelven.
& Nbsp; * Rugalmasság: a Python kifejezéseket belüli szabad XHPy címkék, és fordítva.
& Nbsp; * Security: részesülnek automatikus kiszabadulása a szöveget belül XHPy címkék.
& Nbsp; * Újrafelhasználhatóság: hogy újrafelhasználható komponensek alosztályokhoz: x: elem.
Egy példa
In bar.py:
a xhpy.init import register_xhpy_module
register_xhpy_module ("foo")
import ize
In foo.py:
a xhpy.pylib import *
osztály: ui: ize (: x: element):
& Nbsp; attribútumlistáját bar
& Nbsp; a kategóriában% flow
& Nbsp; def render (self):
& Nbsp; a =
- {b} )
- 0
- 1
- 2
- {b} )
- automatikusan nyújtott - kivéve, hogy a XHPy, akkor Python kifejezések címkék, úgy, hogy
{B}
helyébe az értéke b. Figyeljük meg a getAttribute () és AppendChild ():
self.getAttribute ('bar')
lehívja a értéke attribútum bar (ebben az esetben, tartomány (3)), míg a
a.appendChild ( - {b} )
- {b} , mint egy gyerek egy =
- Python
& Nbsp; a B self.getAttribute ('bar'):
& Nbsp; a.appendChild (
& Nbsp; vissza
Mi most már fut bar.py, mint egy normál Python script:
$ Python bar.py
Gratulálunk! Csak azt írta az első részlet a XHPy.
Syntax
XHPy egészíti ki az új szintaxist Python. Soronként replay idő!
a xhpy.init import register_xhpy_module
Ez inicializálja XHPy, és lehetővé teszi, hogy regisztrálja modulok kell értelmezni, hogy XHPy.
register_xhpy_module ("foo")
Most a foo modul foo.py kell értelmezni, mint XHPy, ha az importált. Ha ize volt a csomagban, annak minden részmodulon is nyilván kell tartani; Ez hasznos, regisztráció UI könyvtárakat.
import ize
Hogy ténylegesen használni XHPy azonban akkor érdemes a központi könyvtár:
a xhpy.pylib import *
Most már van hozzáférése az összes szabványos HTML 4.0 elemekkel, a: x: element alap osztály (ez az, amit építeni egyéni összetevők tetején!), És néhány dologra.
osztály: ui: ize (: x: element):
Hogy új komponensek egyszerű: csak alosztály: x: elem. A komponens osztály regisztrálni kell, meg kell kezdeni: - Ez világosan megkülönbözteti az összetevők a szokásos Python osztályok.
attribútumlistáját bar
Ez egy attribútum nyilatkozatot, ami azt jelenti, hogy: ui: ize lehetővé teszi, bár attribútumok
Később - mint XHP, XHPy XML attribútumszintaxis.
kategóriába% flow
Ez a kategória nyilatkozatot -: ui: ize része a% flow kategóriában. Kategóriák elsődlegesen hasznosak, mert így azonosításának elemek vannak, amelyek hasonló használata nélkül öröklés; Például a tag a pylib.html van
gyermekek (PCDATA |% flow) *
jelezve, hogy a gyermekeknek kell vagy szöveget, vagy lehet a% flow kategóriában. (Így tudunk rakni
def render (self):
Nyomtatása esetén: x: elem (vagy hívja str rajta), a render () metódus meghívásakor; ez hova tesszük a UI logika.
a =
A B self.getAttribute ('bar'):
& Nbsp; a.appendChild (
vissza
Itt
- , amely lehetővé teszi, hogy építeni rendezetlen listát ki egy Python lista. Szabványos HTML elemeket, mint a
- és
hozzáteszi
- .
XHPy nagyrészt off XHP; További részletek az utóbbi, lásd a `XHP wiki
& Nbsp; * XHPy class nevek is bárhol közönséges Python osztályok;
& Nbsp; * XHPy címkék figyelmen kívül hagyja a belső szóköz, hanem külsőleg engedelmeskedni behúzás és a vonal folytatása szabályokat.
Bővebben az utolsó pont:
def ize (href):
& Nbsp; visszatérése
def bar (href):
& Nbsp; visszatérni
& Nbsp;
érvényesek, míg a
def ize (href):
& Nbsp; visszatérni
& Nbsp;
& Nbsp;
Nem, mert egy plusz dedent után .
Hogyan működik
Amikor te
import xhpy.init
XHPy telepíti behozatali horog. Ez a horog csapdák későbbi behozatali nyilatkozatokat, futás őket egy preprocessor ami értelmezi felülbírálja a Python. Ez preprocessor fordítja XHPy címkék és az osztály nevét az érvényes Python, majd végrehajtja a lefordított kódot modul hatálya.
Ez hasonló ahhoz, hogy XHP működik, kivéve:
& Nbsp; * a, pl pythonenv, akkor mindig XHPy akár anélkül, rendszer-szintű Python csomag telepítését könyvtárak;
& Nbsp; * alapból, Python lefordítja bájtkódjának .pyc fájlokat a modulok, így az előfeldolgozás csak akkor kell elvégezni, amikor egyszer egy modul első importálása.
követelmények :
Hozzászólás nem található