JQuery diétával Bevezetés a Zepto JavaScript könyvtárba

A klasszikus informatikusok számára rendkívül vicces jQuery és JavaScript vitákon kívül meg kell jegyezni, hogy a jQuery nem más, mint kicsi. A tartalomszolgáltató hálózatok idején ez nem biztos, hogy különösebb jelentőségű: Ha egy népszerű CDN-ből széles körben használt könyvtárat vesz fel, akkor egy másik webhelyre támaszkodva biztosíthatja, hogy a fájl már a felhasználó böngészőjének gyorsítótárában legyen. A gyakorlatban azonban mindig vannak olyan helyzetek, amikor a maximális teljesítmény fontos. Erre példa lehet a JavaScript-alapú folyamatszámítógépek, ahol a rendelkezésre álló kódmemória nem korlátlan, és hogy a gyenge CPU minden kilobájt kódtól (kulcsszó kezdési idejétől) függ-e. Ezenkívül mindig vannak olyan forgatókönyvek, amelyekben a tartalomszolgáltató hálózatok nem engedélyezettek, vagy amelyekben a fejlesztőnek támogatnia kell azokat a böngészőket, amelyekre a jQuery már nem terjed ki idővel.

zepto

Ebben a pillanatban a Zepto nevű könyvtár órája sztrájkol (rovat: „A kézi számítógépes programozó kedvese”). A Thomas Fuchs által 2010-ben tervezett projekt örökzöld a JavaScript-világban, és nagyjából kompatibilis a jQuery-vel. Mindenekelőtt azonban a termék 5 vagy 10 KB fordított kóddal kezel, a konfigurációtól függően.

Ez a cikk rövid bemutatást nyújt a könyvtárról. És a nagyon kompakt felépítésnek köszönhetően itt még reális lehetőségünk is van a termék egészének lefedésére.

Kézi számítógépes programozók kedvence

Thomas Fuchs eredetileg a Zepto-t egy lecsupaszított alternatívának szánta a PhoneGap-tal való együttműködéshez. Nagyon érdekes kompatibilitási lista következik ebből a tényből. A klasszikusok mellett a könyvtár nagyrészt néhány ritkább operációs rendszert is támogat. Néhány különösen érdekes jelölt a Palms WebOS, az Android régebbi verziói, a BlackBerry 10, sőt a Safari régi verziói az iOS-hez.

A Zepto magmodul miniatürizált mérete mindössze öt kilobájt. Mindig vannak olyan esetek, amikor az alábbi cikkben tárgyalt bővítő modulokra nincs szükség, és ezért öt kilobájtos fájlmérettel valóban meg tudnak jönni.

A moduláció kérdése

Amikor e sorok írójának sok évvel ezelőtt le kellett szerelnie egy analóg számítógépet, amelyet Telefunken készített egy harmadik osztályú osztrák műszaki egyetemen, csodálta a pusztítás alatt álló számtani fenevad rendkívül moduláris felépítését. Ez egy olyan rendszer volt, amelyet valóban fel lehetett bontani az egyes részekre. A javításhoz és az értékesítéshez egyaránt hasznos Telefunken képes volt kihagyni a szükségtelen alkatrészeket, hogy olcsóbban tudja ajánlani a teljes rendszert.

A Zepto-nál hasonló koncepcióra támaszkodnak. A könyvtár jó tucat modulból áll, amelyeket röviden összefoglal az 1. táblázat.

Modul neve Rövid leírás Standard forgalmazásban
zepto Core modul Igen
esemény Bővítmények az eseményvezérelt programozáshoz Igen
ajax XMLHttpRequest Igen
alak Módszerek az űrlapok sorosításához Igen
azaz Internet Explorer 10 támogatás Igen
érzékeli A böngésző és a gazdagép operációs rendszerének észlelése Nem
fx "Animálás ()" módszer Nem
fx_methods Előre definiált animációs minták az Animációhoz Nem
eszközök Jobb memóriakezelés iOS-hez; kísérleti Nem
adat "Data ()" módszer Nem
elhalasztották Az ígéretek felhasználásának lehetősége Nem
visszahívások Kiterjeszti a "$ .Callbacks" lehetőséget a halasztott módban történő munkavégzés lehetőségével Nem
választó A jQuery CSS-választóinak egy részhalmazát emulálja Nem
érintés Alapvető érintőképernyős könyvtár Nem
gesztus Gesztusfelismerés a nagyítással Nem
Kazal Módszer láncolás Nem
ios3 A segítő funkciók nem valósultak meg az iOS 3 alatt Nem

1. táblázat: A Zepto moduljai

A saját Zepto verziójuk iránt érdeklődő fejlesztők kétféleképpen érik el ezt a magas célt: Először a teljes forráskód letölthető annak érdekében, hogy a csomópont alapú eszközök segítségével összeállítsák saját verziójukat. Alternatív megoldásként a zepto készítő is használható, amely bármely webböngészőben történő megnyitás után az in 1. ábra a képernyőn látható felhasználói felület.

1. ábra A zepto készítőnek köszönhetően a fejlesztőknek nem kell küzdeniük a csomópont parancssorával

Az egyszerűség kedvéért ezen a ponton továbbra is a szabványos terjesztéssel akarunk dolgozni, amelyet az építtető alapértelmezett beállításokkal szállít, vagy alternatívaként közvetlenül a projekt webhelyéről is letölthető.

A következő lépésekhez a tömörített verziót akarjuk használni. A megnyomásakor a fájl a zepto.min.js fájl, és új tulajdonosokra vár. Töltse le egy könnyen elérhető helyre a fájlrendszeren, és a következő lépésben hozzon létre egy tesztköteget az 1. listában látható kóddal.

Ez - nagyon egyszerű - példa a könyvtár néhány érdekes elemét szemlélteti. Először is, a termék mindig beállít egy Zepto nevű globális változót, amely a könyvtár kódjára mint egészre hivatkozik. Másodszor, a funkciók átvitele a Zepto-ba azt eredményezi, hogy a referenciák egy belső memóriában tárolódnak, amelyet a DomContentLoaded esemény bekövetkezése után dolgoznak fel.

Az esemény bekövetkezése után beírt funkciókat eközben a keretrendszer azonnal végrehajtja. Ha a Zepto (function ($), amely szintén egy Zepto (function ($) hevederben) egy másik üzenetdobozt helyez el, két üzenet jelenik meg a képernyőn:

Ez az első pillantásra furcsa viselkedés annak a ténynek köszönhető, hogy a keretrendszer az F1 feldolgozása után már teljesen inicializálódik, és ezért azonnal végrehajtja a megadott hasznos terhet. Szerencsésen a "belső" üzenetdoboz még itt is megjelenik a kint lévő kollégád előtt.

A Zepto abban különbözik a jQuery-től, hogy csak akkor tölti be a dollárjelet a saját kódjával, ha a változó szabad a könyvtár betöltésekor. Ez gondokhoz vezet, különösen a könyvtárakkal való interakcióban, mert ezek is bekerülnek a heves vitatott dollár névtérbe. Ha további információt szeretne erről, legyen z. Lásd például Peter Kinmond GitHub oldalát.

A Zepto fő és állami feladata biztosan a DOM-objektumok kezelése. Ennek a szolgáltatásnak a kipróbálásához hozzá kell adnunk néhány tesztelemet az elem törzséhez. Első példaként nézzük meg a csoportot

A jQueryhez szokott fejlesztők észrevesznek néhány dolgot, amelyeket ismerniük kell: A dollárjel elfogadja azokat a karakterlánc-paramétereket is, amelyek szelektorokként ismertek, és lehetővé teszik a DOM-fával való kompakt interakciót.

Itt adjuk át a div karakterláncot, hogy utasítsuk a keretrendszert, hogy nyújtson mindegyik tömböt

A sokszínűség számít - online marketing 2020

Astrid Kramerrel (Astrid Kramer Consulting)

A magánélethez való jog - lehetőség az UX számára

Lutz Schmitt-szel (Lutz Schmitt Design & Consulting)

A strukturált adatok bosszúja

Stephan Cifkával (Performics Germany GmbH)

Itt érdekes, hogy a keretrendszer három paramétert ad meg. A tényleges aktuális elem és egy folyamatos indexváltozó mellett a Zepto kényelmi okokból hivatkozást is ad a fő mezőre a logika megvalósításának megkönnyítése érdekében.

A tényleges hasznos teher megtalálható a korpuszban. A Zepto azonban itt egy kis csapdát helyez el, amely meghiúsítja a tapasztalatlan fejlesztőket. A keretrendszer normál JavaScript elemeket ad vissza az iterátorokban, amelyek természetesen nem teszik közzé a Zepto által deklarált különféle funkciókat és módszereket. Ezért az első lépésben a $ (item) szintaxist kell használnunk, hogy Zepto objektumot hozzunk létre a beküldött DOM elemből. Ezután a html () kompatibilis a Zepto saját funkciójával. Egyébként: Töltse be a kész programot egy általa választott böngészőbe, hogy élvezhesse a különböző számok sorozatát.

Különböző kis segítők

Ebben az összefüggésben vegye figyelembe, hogy a Zepto által szállított DOM-elemző csak a jQuery-ben megvalósított funkciók és paraméterek egy részhalmazát tartalmazza. A CSS-függő fejlesztők számára különösen idegesítő korlátozás a jQuery-ből ismert stíluslapokon alapuló választó kiterjesztések hiánya. Ha feltétlenül a programban részletesen leírt funkciókat kell használnia, akkor visszatérhet a választónak nevezett modulhoz. Kérjük, vegye figyelembe, hogy a termék ezen részét kísérleti jelleggel emlegetik, és a mobil szektorban hagyományosan meglehetősen gyengén és jobban működik.

A DOM elemző mellett a Zepto központi modulja számos egyéb kiegészítő funkciót is kínál. Például az isX módszerek mindig népszerűek, amelyekkel ellenőrizheti, hogy egy bizonyos elem bizonyos típusú-e:

Ezen funkciók egyszerűsége miatt nem kívánunk itt példát megvalósítani. Sokkal érdekesebb tovább elemezni a magmodulban található DOM manipulációs funkciókat. A scrollLeft és a scrollTop használatával olyan módszerek csoportja létezik, amelyek lehetővé teszik a görgetés pozíciójának meghatározását és programozott befolyásolását a képernyőn.

Egy másik vicces segítő neve Grep: $ .grep (items, function (item)< … >) ⇒ tömb. A Unix-ban tapasztalt fejlesztők kitalálhatják, mi következik itt: A mező mellett a metódus visszahívási függvényt kap, amelyet a tömb minden eleméhez meghívnak. A kapott tömb ekkor azoknak az elemeknek a mezője, amelyekre a visszahívás igaz lett - ez egy jó eszköz a mezők bonyolításához bonyolult kritériumok alapján.

Ted üdvözletét küldi

Ted Faison eseményközpontú programozással kapcsolatos észrevételeinek mára már klasszikusnak kell lenniük. A megfelelő könyv még jó tíz évvel az első megjelenése után is eladó. A Zepto szabványos disztribúciót egy eseménykezelő rendszerrel is szállítják, amely megmenti a fejlesztőket más keretrendszerek, például a Radio.js és Co.

Itt egy kis eseményorientált programot is szeretnénk megvalósítani. Ehhez hozzon létre egy új verziót a fent kinyomtatott tesztkötegből, amelyet most el kell látni egy gombbal. Mivel a gombok deklarálása nem tartozik a rendszer technológia nagy rejtelmeibe, itt nem nyomtatjuk ki a szükséges kódot.

Ehelyett vessünk egy pillantást az eseményforrásokra. A Zepto támogatja a DOM-ban található eseményeket, valamint a fejlesztő által létrehozott eseményeket. Itt egy házi készítésű rendezvénnyel szeretnénk kezdeni. A keretrendszer a $ .Event metódussal van regisztrálva:

Az első paraméter, amelyet a metódusnak átadunk, egy karakterlánc, amely meghatározza az esemény nevét. Az eseményforrások és az eseménysüllyedések összehasonlítása kizárólag karakterlánc-összehasonlítással történik. A második mező meghatározza az esemény elosztási módját. Ezen a ponton deaktiváljuk a pezsgő funkciót, amely nyilvánvalóan csak részben működött a sajtónyomás idején.

A következő pontban van egy kis különlegesség. Elvileg az eseményeket csak a dokumentumobjektum-modell segítségével lehet feltérképezni. Ez azt jelenti, hogy az eseményforrásoknak és az eseményelnyelőknek elvileg kapcsolódniuk kell egy DOM elemhez.

A probléma kiküszöbölése érdekében célszerű a házon belüli eseményeket "gyűjtési objektumban" tárolni. A dokumentum törzs erre alkalmas, ezért használjuk az eseménykezelő bejelentkezéséhez az erre a célra biztosított on módszer segítségével:

A következő lépésben regisztráljuk a gomb kattintási eseményét, amely a DOM-hoz tartozik, és összekapcsoljuk egy másik eseménykezelővel:

Az egyetlen érdekes dolog ebben az összefüggésben az, hogy az eseményt egy DOM objektum segítségével is be kell váltani. Ezután nyissa meg a fájlt a kívánt böngészőben, és kattintson a gombra. Az üzenetmező ablak a várakozásoknak megfelelően jelenik meg a képernyőn.

Az eseményvezérelt rendszerek egyik legérdekesebb tulajdonsága az események továbbításának képessége bizonyos "csatornákon". Ehhez egy másik eseménykezelővel szeretnénk kibővíteni a kis tesztkötegünket:

Technikai szempontból itt csak néhány különbség van. Most írunk egy eseménykezelőt az eseményhez, mind a gomb, mind a dokumentum törzsszintjén. Mindkettő egy-egy üzenetmezőt mutat, ezért a megjelenített ablakok számlálása információt nyújt a program végrehajtásáról. Amikor a fent kinyomtatott eseménykezelővel aktiválódik, két üzenetmező jelenik meg a képernyőn. Mulatságosan ez a viselkedés független a buborék változó értékétől. Érdekes viselkedés mutatkozik a kattintáskezelő testreszabásakor:

Ha az eseményt közvetlenül a Document.Body-ban indítja el, akkor észreveszi, hogy csak egy üzenet jelenik meg a képernyőn. A Zepto ugyanis alapvetően csak felfelé továbbítja az eseményeket, ha egyáltalán. A probléma vonzó megoldása a triggerHandler módszer használata:

A triggerHandler által kiváltott eseményt a Zepto korlátozza arra a DOM elemre, amelyben a módszert meghívták. Esetünkben ez azt jelenti, hogy csak azokat az eseménykezelőket használják, amelyeket a gombok szintjén hoztak létre.

És most mobil!

Következő feladatként át szeretnénk térni az érintőképernyős események kezelésére. Még akkor is, ha a Zepto-t eredetileg mobil keretrendszerként szánták, ezt a modult nem a teljes keretrendszerrel együtt szállították, és az első használat előtt integrálni kell.

Ha meg akarja menteni a fent tárgyalt testreszabási munkát, letöltheti a mellékelt touch.js fájlt is, és integrálhatja a teszt rutinba a következő séma szerint a normál keretrendszeren kívül:

A különféle elemek teszteléséhez létre kell hoznunk egy struktúrát, amely a test néhány eleméből áll: kényelmi okokból két LI tagre korlátozódunk:

Még akkor is, ha ez a cikk nem foglalkozik az érintőképernyős használhatóság egészével, kifejezetten ki kell emelni, hogy a kézi számítógépes alkalmazásokban a lehető legnagyobb méretű vezérlőelemeket kell létrehozni. Ennek legegyszerűbb módja néhány CSS használata:

Helyi HTTP szerver hozható létre az okostelefon tartalmának biztosítására. A Unix alatt dolgozó fejlesztők egy kis Python programot használhatnak a 2. listában szereplő séma szerint - a Python 3 alatt egy másik példát kell betölteniük a SimpleHTTPServer helyett.

Ezután töltse be a programot egy választott okostelefonra, és hosszan koppintson rá. Az elemek háttérszíne az alábbiak szerint változik 2. ábra Látható.

2. ábra: Világostól sötétkékig, itt a Chrome for Android alatt

A longTap esemény mellett a fejlesztők letölthetik az egyes csapokat is. Három esemény van erre: a csap minden csap eseményt elfogad, míg a singleTap és a doubleTap bizonyos típusú csapokat céloz meg. A swipeket a swipe, swipeLeft, swipeRight, swipeUp és swipeDown módszerekkel lehet kezelni. Itt azonban tesztelni kell, mert nem minden böngészőben működnek egyformán.

Formában gyorsan

A Zepto teljes Ajax implementációval érkezik. Mivel az AccessControl and Co. kezelése folyamatban van, csak itt szeretnénk bemutatni a sorosítást. Erre a célra a Form modult használják, amelyet az 1. táblázat szerinti standard elosztás tartalmaz. A következő DOM struktúrának kell tesztkötegként szolgálnia:

Az űrlap eredményei összegyűjthetők tömb formájában, valamint közvetlenül átvihető stringben. A Zepto saját módszert kínál, amely lehetővé teszi az eseménykezelők beírását a beküldött eseménybe. Helyi okokból itt nem hozunk létre teljes kimenetet. 3. ábra megmutatja, hogy néz ki a két elem a hibakeresőben.

3. ábra: A Zepto automatikusan sorosítja az űrlapadatokat

Következtetés

Minden szempontból nem szabad figyelmen kívül hagyni, hogy a Zepto fejlődése jelentősen lelassult az elmúlt hónapokban. Míg a jQuery továbbra is naponta frissít néhányat, a Zepto-ban most már szinte teljes a csend.

Ez nem feltétlenül jelent hátrányt a fejlesztők számára, mivel a könyvtár nagyjából azt teszi, amit kell. Figyelemre méltó hátrány, hogy hiba esetén kezet kell nyújtania. Ezenkívül a külső könyvtárakkal való kompatibilitás mindig "talán". Ha egy frissítés megsemmisíti az alkalmazást, a jQuery-alapú könyvtár szolgáltatóját általában csak kissé érdekli a hibajelentése.

PHP magazin

Ez a cikk a PHP magazinban jelent meg. A PHP Magazin témák széles skáláját fedi le, amelyek elengedhetetlenek a sikeres webfejlesztéshez.