-
Notifications
You must be signed in to change notification settings - Fork 29
Migrace JAK z verze 1 (czech lang.)
Aktuální verze knihovny jak ve jmenném prostoru JAK je zpětně nekompatibilní se starou knihovnou, která byla ve jmenném prostoru SZN. Nekompatibilita je již vidět na jiném názvu jmenného prostoru.
Větší část převodu starého kódu na nový lze provést pomocí náhrady textu. Nicméně některé metody mají jinou signaturu (jiné pořadí či počet parametrů) a proto je nutné jejich záměnu provést ručně, nebo složitým regulárním výrazem.
- JAK.query – metoda pro výběr elementů pomocí CSS1 selektorů.
- JAK.mel – Make ELement, nová metoda s jednodušším rozhranním, než SZN.cEl. Metoda přebírá tři parametry. Prvním je typ vytvářeného uzlu, druhým je literálový objekt s vlastnostmi budoucího uzlu a třetím je literálový objekt s CSS vlastnostmi.
Níže popsané změny lze provést hledáním a jednoduhou záměnou ve zdrojových souborech:
- Jádro JAKu již není v souboru common.js, ale v jak.js (týká se rozbalené verze knihoven)
- Jmenný prostor SZN se změnil na JAK
- Jmenný prostor Dom se změnil na DOM
- Metoda getFullBoxPosition je přejmenována na getPortBoxPosition
- Historická statická vlastnost Browser.klient zrušena, nyní již funguje pouze Browser.client
- Přejmenováno rozhranní Compoments na IComponents
- Přejmenováno rozhranní SigInterface na ISignals
- Přejmenována metoda cTxt na ctext
- Přejmenována metoda gEl na gel
- Signals.prototype.makeEvent má nyní jen tři parametry; iSignals.prototype.makeEvent jen dva. Byl zrušen parametr timestamp a accesstype.
- Namísto SZN.HTTPRequest je nyní JAK.Request, jeho API a způsob použití jsou jiná.
- JAK.Events.removeListener odebírá navěšené události pouze pomocí předaného ID, které vrací metoda addListener
- Namísto metody SZN.bind nyní využíváme funkci Function.prototype.bind, která je implementována stejně, jak ji předepisuje Ecmascript 5.
- Metoda SZN.cEl přejmenována na JAK.cel. Metoda má navíc jinou signaturu, přebírá pouze tři parametry (name, className, id)
K tomuto bodu jsou dvě varování. První se týká JAK.Request. Dřívější třída HTTPRequest umožňovala vytvořit jednu instanci a tu používat neomezením voláním metody send. Nový request toto již neumožňuje a je nutné pro každý dotaz (volání metody send) vytvořit i novou instanci. Nový request umí navíc JSONP a také číst binární data.
Druhá poznámka je k JAK.cel. Původní metoda měla čtyři parametry (typ, id, classname, CSS_obj). Udělali jsme analýzu využití a zjistili jsme, že drtivá menšina kódu využívá všech čtyřech parametrů. Pokud používá první tři, většina z nich použije buď pouze první nebo první a třetí. Proto jsme se rozhodli funkcionalitu metody SZN.cEl rozdělit na dvě metody a to JAK.cel a JAK.mel. Metoda JAK.mel plně pokrývá funkcionalitu původní metody, nicméně je více ukecaná. Proto jsme ponechali také metodu JAK.cel, ale prohodili jsme význam druhého a třetího parametru. Při změně kódu se tedy vždy musíte rozhodnout jakou metodu použít:
SZN.cEl('div', 'mojeID', 'cervenaTrida'); --> JAK.cel('div', 'cervenaTrida', 'mojeID');
SZN.cEl(‘div’, ‘mojeID’, false, {color: ’red’}); —> JAK.mel(‘div’, {id: ’mojeID’}, {color: ’red’});
Byly odstraněna následující funkčnost. Ve většině případů se vás bude týkat pouze bod první a druhý. JAK nyní striktně vyžaduje název konstruktoru ve tvaru $constructor, v minulé verzi byl tento tvar jeden ze dvou možných. Dále jsme opustili metodu callSuper ve prospěch metody $super.
- Konstruktor se stejným názvem, jako je NAME třídy
- metoda callSuper
- Vlastnost CLASS při volání ClassMakeru. ClassMaker na ni nebere zřetel, pro vytváření statických tříd je nutné využít metodu makeStatic a pro rozhranní makeInterface.
- ObjCopy
- Events.addTimeFunction
- Events.getEvent
- Odstranění rozhranní IComponents z knihovny JAK, jelikož je vyžadována pouze widgetem Lightbox. Soubor se nachází v adresáři util.