ugrás a tartalomhoz

események és adatbetőltés ajaxal

gtoma · 2014. Nov. 28. (P), 17.13
Sziasztok!

Egy elméleti kérdésem lenne.

Én szeretem az ajaxos, és ablakos admin felületeket, de van egy általános problémám, amivel rendszeresen szembe ütközöm.

1) ha ablakos a rendszer, akkor 1 űrlap akár több ablakban is lehet.
2) ezen ablakokban rendszeresen adatfrissítés lehet szükséges, pl.: Ügyfeleknél a beállíthatók kapcsolatotok, amit select2 vel lehet kiválasztani. De ha egy másik ablakban törlök, vagy felviszek egy új üygfelet, aki szintén lehetne kapcsolat, akkor attól még nem módosul semmi.
3) Ez megoldható esemény figyeléssel: mentés után
$(document).trigger('customer');
és ezt figyeljük:
$(document).on('customer', function() {});
4) igen ám, de ebben az esetben ha az ablakot pusztítom, az esemény figyelő marad. Szembe találkoztam olyannal, hogy 1 kattintásra sokszor futott le a szükséges kód.
5) azt a problémát pedig ne felejtsük, hogy 5 ablakba 5x kérek le ajaxal megnyitásnál egy adatsort, pl select2.

Általánosságban ez fogalmazódott meg, bennem a probléma megoldásával kapcsolatban:
1) Az adat betöltést meg kellene oldanom valami adatkiszolgáló funkcióval. Ami ha megvan az adat akkor csak visszaadja, ha nincs akkor betölti, és egyes eseményeknél újból betölti.
2) igen ám, de követnem kellene, hogy kiszolgál-e még bármilyen funkciót, mert ha nem, böngésző zárásáig bent marad a memóriában. És ugye ajaxról beszélünk. Jó lenne, hogy ha már nem szolgál ki adatot senkinek, akkor elpusztítaná magát.
3) és még mindig ott tartunk, hogy az esemény figyelők bent maradnak a rendszerben.

Van valakinek hasonló elgondolású rendszere? Van ötlet, hogy lehetne rendet rakni?
 
1

Központosítsd

Poetro · 2014. Nov. 28. (P), 17.25
Ugye a felületednek van egy központi ablaka. Jó lenne, ha csak azon keresztül lehetne adatokat lekérni, és feliratkozni, amikor a figyelt adat frissül. Így minden ablak, ami az illető adatot használja frissülne, amikor lekérsz az egyikben adatot, amire a másikban feliratkoztak. Remélem érthető voltam. A select2 nem tudom micsoda, de szerintem ki lehetne hagyni az egyenletből.
3

Igen, igen

gtoma · 2014. Nov. 28. (P), 17.44
Hát valami ilyesmire gondoltam.

Van egy központi objektum, annak része lenne a globális adatkezelő.
Be lehetne jelentkezni az adat olvasásra,
És ki lehetne jelentkezni.

Ez nem is rossz.

Kérdés:

Mondjuk 1 ablakban 4-5 különböző adatra ráugrok. .on() megoldással. Amikor bezárom az ablakot, ezeket pusztítani kellene (akár ugye azzal együtt, hogy az adatforrásnak jelzem, hogy nekem már nem fog kelleni), hogy tudom ezeket megtalálni? Akaszkodjak rá minden ilyen mezőnél az ablak bezárására is, és futtassak arra is egy kódot?

Úgy érzem nincs más mód, mint input mezőnként az ablak bezárására is figyelni. Ugye?

a select2 egyébként egy jó kis szabható selectet csinál.
2

Érdemes lehet tanulmányozni

bamegakapa · 2014. Nov. 28. (P), 17.35
Érdemes lehet tanulmányozni valamilyen (vagy több) frameworkot, Backbone, Angular, Ember, stb. Onnan lehet tanulni azt illetően, hogyan érdemes jól megszervezni az appot.
4

chrome plugin?

szabo.b.gabor · 2014. Dec. 1. (H), 09.58
itt most az ablak külön böngészőfület jelent ugye?

annyira nem vagyok otthon a nagyon új dolgokban, főleg ha több ablakban is fut valami. gyanítom, hogy websocket használatával megoldható lenne a problémád, itt a szerver tolna üzeneteket minden egyes példánynak.

amúgy meg ha van rá mód, írhatsz chrome plugint is. emlékeim szerint ott pont lehet háttérfolyamatot indítani, ami ki is lövi magát, hogyha már nincs kit kiszolgáljon.
5

Nem külön böngésző

gtoma · 2014. Dec. 2. (K), 14.00
hanem dialog jellegű ablak.

Egyébként igen. websockettel lehetne, de nem szándékoztam ebbe az irányba elmenni. És néhány probléma ott is meg maradna.

A chrome plugin fortélyait nem ismerem, de az eleve kizárja a megoldást, hogy "chrome". Mi lenne ie-ben? vagy ff-ben? :)

bamegakapa: természetesen tanulmányozhatnám, ha a téma megérné hogy néhány hetet ezeknek a visszafejtésével foglalkozzam.
DE azért kérdeztem itt, hogy elkerüljem a hetekig tartó tanulmányozásokat.

Reméltem, hogy az általam nagyra becsült weblabor társadalom próbált már megoldani hasonlót, neagyisten dolgozik ilyesmiben valaki :D
6

de agy isten :D

szabo.b.gabor · 2014. Dec. 2. (K), 14.25
ilyen esetben valószínűleg könnyebben megugorható a történet. amúgy az angularjs pont nagyon alkalmas bonyolult ui-kat összerakni, kezelni a változásokat, érdemes volna rászánnod némi időt.

ha mégis jquery akkor az eseményfigyelőket tedd olyan elemekre amik fixek, valami elem alá úgyis bekerülnek a dinamikus ablakok. lehet esemény névtereket is csinálni, ezekkel egy off is könnyen kezelhető, ha mégis ilyenre van szükség.

fedd el az ajaxos kéréseket egy külön objektummal, így ahol kell megvalósíthatod a cache-t elég egyszerűen (érdemes esetleg arra figyelni, hogy a cache-ből visszanyert adat is aszinkron jöjjön), valamint felépíthetsz listákat (ide fel-, le lehet irakozni), hogy bizonyos változásokra mely ablakoknak kell reagálni és adott változásoknál szépen lefuttatsz egy render-t az adott elemekre.

ilyesmik. szerintem.
7

Attól függ

Hidvégi Gábor · 2014. Dec. 2. (K), 15.43
Attól függ, mit szeretnél. Ha egy olyan adminrendszert, amit más projekteknél is könnyen fel lehet használni, akkor célszerű minden alkalmazáslogikát szerveroldalon tartani, a kliens pedig legyen a lehető legegyszerűbb. Ennek két előnye van: kis kliens = bármilyen eszközön gyorsan fog működni - ha beindul az üzlet, szerveroldalon sokkal könnyebb skálázni. Másrészt ha az alkalmazáslogikát fejleszted, akkor nem kell mindig újratölteni a klienst.

Így elég minden űrlapelemre egy onchange eseményt tenni, és nem ütközöl abba, amit az első rész 3-as és 4-es pontjában írsz, továbbá az általános kérdéseid is érvényüket vesztik.
8

Én nem hiszek abban, hogy

szabo.b.gabor · 2014. Dec. 2. (K), 16.07
Én nem hiszek abban, hogy szerver oldalon meg lehet oldani mindent izomból, főleg ha berakjuk az egyenletbe az UX-et is.

Itt most nem alkalmazáslogikáról van szó különben sem, hanem felhasználói felületről.

De amúgy nem teljesen értem, minden űrlapelem változásnál töltse újra az oldalt, vagy hogyan?
9

Az általunk fejlesztett

Hidvégi Gábor · 2014. Dec. 2. (K), 16.15
Az általunk fejlesztett alkalmazás így működik, tehát lehetséges. Szerintem jobb megoldás, mint bármiféle kliensoldali logika, mert megbízhatóbb (a böngészőben nem lehet visszafejteni, hogyan működik), ráadásul a kliensprogramhoz nagyon ritkán kell hozzányúlni.

És igen, minden űrlapelemváltozásnál töltse újra a megváltozott adatokat. Bár azt hinné az ember, hogy ez lassú, de nem az.
10

Lassú

Poetro · 2014. Dec. 2. (K), 18.32
Pedig van ahol lassú. Ha nagy az adatbázis, vagy bonyolult lekérdezni az adatokat, akkor felesleges azokat az adatokat még egyszer lekérdezni.
11

Biztos

Hidvégi Gábor · 2014. Dec. 2. (K), 20.24
Azon a szinten, ahol a legtöbbünk játszik, ilyen gondokkal nem kell küzdeni. Az viszont a szoftvert teszi bonyolulttá, hogy számon tartsa, mi az, amit frissíteni kell.
13

Ezt pontosan, hogy kell elképzelni?

T.G · 2014. Dec. 2. (K), 22.47
Ezt pontosan, hogy kell elképzelni, vegyünk egy konkrét példát, van egy ingatlan kitöltésére szolgáló űrlap, számtalan input mező csak akkor jelenik meg, ha egy másik a megfelelő értéket tartalmazza. Pl. lakásnál nincs kertméret, míg háznál van. Amikor ingatlan típust váltasz, akkor az egész újratöltődik? Illetve az újratöltésnél pontosan mi történik, újratöltődik az oldal, vagy kapunk egy új html részletet, vagy minden input eredetileg ott van és csak a láthatóság jön JSON-ban, amit JS-sel beállítunk?
14

Igen

Hidvégi Gábor · 2014. Dec. 3. (Sze), 10.06
Mindegyik felsorolt opciót próbáltam már, és működnek, pont ingatlanos oldalon és olyanon is, ahol jóval több adat van (pl. számlák).
15

Egyéb szempont nincs?

T.G · 2014. Dec. 3. (Sze), 10.31
Az elvárás tényleg csak annyi, hogy működjön? Persze ez egy igen fontos szempont, nem akarom lebecsülni. :)
16

Miért, szerinted milyen

Hidvégi Gábor · 2014. Dec. 3. (Sze), 10.41
Miért, szerinted milyen szempontok fontosak még?
17

UX

T.G · 2014. Dec. 3. (Sze), 11.08
Úgy gondolom, hogy a helyes működés az csak a minimum küszöb, ha ez nincs, akkor a többi szempont lényegtelen, de hogy bármiféle összehasonlításnál ez megjelenjen azt nem gondolnám. Nem működő eszközöket ne hasonlítsunk össze működőekkel!

8.-asban elhangzott, hogy UX.
18

Azt ajánlottam a 7-esben,

Hidvégi Gábor · 2014. Dec. 3. (Sze), 11.29
Azt ajánlottam a 7-esben, hogy készítsünk vékony klienst, mert több előnye van a vastaghoz képest. Ez kizárja, hogy normális UX legyen?
19

Igen

T.G · 2014. Dec. 3. (Sze), 11.56
Az oldal újratöltésével szerintem igen.
20

AJAX-os témában vagyunk, itt

Hidvégi Gábor · 2014. Dec. 3. (Sze), 12.04
AJAX-os témában vagyunk, itt nem volt szó az oldal újratöltéséről, elég csak a megfelelő űrlapot/részt. Persze ez nem zárja ki azt, hogy kikapcsolt JS esetén is működjön az alkalmazás.
21

Oké, működik, de mi az előnye?

T.G · 2014. Dec. 3. (Sze), 12.23
Miért egyszerűbb például lekezelni azt, hogy az űrlap újratöltése után a fókusz ugyanott legyen, mint azt, hogy mindenféle Ajax hívás nélkül módosuljon az űrlap?

Ha egy űrlapon a fókusz (illetve a Tab gomb) nem megfelelően viselkedik, akkor ott UX-ről inkább ne is beszéljünk.

De egyáltalán miért gondoljuk, hogy szerver oldalon könnyebb lekezelni azt, hogy melyik mező látszódik, mint ugyanezt kliens oldalon?

Akkor a 13.-ban említett teljes oldalújratöltést, mint opciót el lehet felejteni, tehát akkor jól értem, hogy azt azért mégsem ajánlod, vagy?
22

Miért egyszerűbb például

Hidvégi Gábor · 2014. Dec. 3. (Sze), 12.32
Miért egyszerűbb például lekezelni azt, hogy az űrlap újratöltése után a fókusz ugyanott legyen, mint azt, hogy mindenféle Ajax hívás nélkül módosuljon az űrlap?
Nem egyszerűbb, pont ugyanannyi munkával jár. De, mint írtam korábban, a vékony kliens architektúra üzleti logika szempontjából (szerver oldalon) jobban skálázható, valamint a működés sem nyilvános.

Akkor a 13.-ban említett teljes oldalújratöltést, mint opciót el lehet felejteni, tehát akkor jól értem, hogy azt azért mégsem ajánlod, vagy?
Nem olvastam el rendesen a 13-at. Teljes újratöltés csak akkor szükséges, ha nincs bekapcsolva a JS, ekkor nyilván nem lehet olyan felhasználói élményt nyújtani, mint JS-sel (egy átlag weboldalnál viszont, ahol kevés adattal dolgozunk, ez nem annyira gond, alkalmazásnál inkább).
24

fókusz

T.G · 2014. Dec. 3. (Sze), 13.09
Ha az inputmező nem tűnik el, akkor a fókusz sem tűnik el, míg ha az inputmező eltűnik, akkor a fókusz sem maradhat ott. Tehát ha csupán ezt a problémát nézzük, akkor a form újragenerálása miatt keletkezett plusz munka, amivel persze sokan nem tőrödnek, csak ebben az esetben ne beszéljünk UX-ről.
25

Szerinted az automatikus

Hidvégi Gábor · 2014. Dec. 3. (Sze), 13.15
Szerinted az automatikus fókuszkezelés problémáját nem lehet megoldani?

Látom, nagyon aggódsz a felhasználók élményéért, de azért ne feledd, hogy ez csak egy komponens a sok közül, amiből egy szoftver összeáll.
27

Más a nézőpont.

T.G · 2014. Dec. 3. (Sze), 13.25
Mindent meg lehet oldani, csupán jellemzően eddig csak ott láttam szép megoldásokat, ahol nem utasították el a kliens oldali programozást. Eddigi tapasztalataim alapján ahol következetesen mindent áthelyeztek a szerver oldalra ott az UX fontosságáról is lenéző volt a vélemény.

Persze, hogy aggódom a felhasználókért, üzleti alkalmazások esetén a felhasználókkal akár napi kapcsolatban is vagyunk. Vannak cégek ahol az a fő projekt az, hogy az adblock ellenére megjelenjenek a hirdetések, vannak cégek ahol meg az a fontos, hogy például az adatfeltöltő ne utálja annyira a munkáját és a főnökség felé ne panaszkodhasson, hogy azért halad lassan, mert a felület rossz.
29

Ok, nem csigázlak tovább,

Hidvégi Gábor · 2014. Dec. 3. (Sze), 14.01
Ok, nem csigázlak tovább, elárulom: vékony kliens esetében pontosan ugyanaz a felhasználói élmény megoldható, mint vastag kliensnél.

A fenti példáddal élve:
if (ingatlan_tipus == 'haz') {
  kertmeret.visible = true;
}


Teljesen mindegy, hogy ez a szerveren vagy a kliensen fut le. Innentől kezdve pedig a felhasználói élmény nem a kód futásának helyétől, hanem a tisztelt készítőktől függ.
38

Ez azért néhány sor

Joó Ádám · 2014. Dec. 5. (P), 11.49
Ez azért néhány sor szkripteléssel megoldható, ha egy rejtett mezőben elküldöd a fókuszált elem azonosítóját a szervernek, a válasz megérkezése után pedig újra fókuszálod.

Ami azt illeti, szkript nélkül is elképzelhető, a fókuszt az autofocus attribútummal állítva, az űrlapmezőket pedig egy sor rádiógomb címkéibe helyezve, ezzel aktiváláskor kijelölve és elküldve a megfelelőt (nem próbáltam ki). Nyilván nem javaslom, csak gondolatkísérlet :)
23

Élmény

Hidvégi Gábor · 2014. Dec. 3. (Sze), 12.44
De megfordítom: milyen felhasználói élmény az, amikor az egész alkalmazás a kliensen van megírva, emiatt száz megabájtos nagyságrendű memóriát eszik már megnyitáskor (a böngészőn felül), és egy nagyobb űrlap (szállítólevél, számla) megnyitásakor fél-egész másodpercekre lefagy a tételsorok számától függően? Mi legalábbis így jártunk, azután döntöttünk, hogy vissza a szerverre, az eredmény átlag 3-4 megabájtos memóriaigény és villámgyors működés (20-30-szoros gyorsulás) lett. Ez akkor jött jól, amikor kiderült, hogy munkalapokat a helyszínen, mobilról kell nyomtatni, amelyek hardvere óriási szórást mutatott.
26

Rossz kód

T.G · 2014. Dec. 3. (Sze), 13.16
Rosszul megírt kód, mindig rosszul fog működni, bármilyen technikát, bármilyen módszertant használsz.

Számtalan alkalmazás létezik, amely elindulás után nem fagy le, ami elindulás után nem akad. Igen, léteznek ellenpéldák, amik rosszak. De ha valami ellen érveket hozunk fel, akkor ne az legyen állandóan az érv, hogy lehet rosszul is használni. Mert az olyan érvekkel nem lehet mit kezdeni, hogy ha egy végtelen ciklust a kliensen csinálsz, akkor csak az ügyfél böngészője akad ki, de ha szerveroldalon készítesz egy végtelen ciklust, akkor az egész szerver mindenestül behal, na melyik is a jobb? Na ugye, hogy jobb a kliens oldali megoldás! Szerintem hasznosabb, ha inkább a jól megírt kódokat hasonlítjuk össze.
28

Tökéletesen igazad van abban,

Hidvégi Gábor · 2014. Dec. 3. (Sze), 13.54
Tökéletesen igazad van abban, amit leírsz (ti. "Rosszul megírt kód, mindig rosszul fog működni"), csak nem igazán értem, hogy jön ide.

Vegyünk egy egyszerű példát: készítesz egy új számlát, amit azzal kezdesz, hogy kiválasztod a vevőt az adatbázisból, valamint ez alapján bemásolod a megfelelő mezőkbe az ő alapértelmezett címét és banki adatait. Ez három atomi feladatot jelent (név, cím és banki adatok választása), amit nem lehet megspórolni, azaz akár szerver-, akár pedig kliensoldalon le kell futtatni. Ha összetettek az űrlapok, akkor sok ilyen feladat lesz, sok memóriát foglal az összefüggések eltárolása. Ha ezeket a feladatokat a kliensoldalról átteszem szerveroldalra, nem lesz a kódom jobb vagy rosszabb, csak máshol fut le.

Ezek után a fenti érvelésed nem állja meg a helyét.
30

Vegyük a témanyitó kérdését!

T.G · 2014. Dec. 3. (Sze), 14.27
Mi az, hogy sok memória? Én már elég sok (azt gondolnám, hogy) komplex űrlapot készítettem, de az, hogy az összefüggések elfogyasztják a memóriát, szerintem azt még meg sem közelítettem. Szerintem az, hogy a böngésző memóriája egyszerű láthatósági szabályok miatt elfogyjon ahhoz valami végeláthatatlan űrlapra volna szükség.

Amikor irreálisan nagy DOM épül, akkor valóban vannak gondok, ám ilyen esetekben eddig mindig megoldás volt az, hogy valamin alakítottunk, úgy hogy egyszerre mégse legyen túl nagy a HTML oldal.

Vegyük a témanyitó kérdését:

Első lépésként készítesz egy üres számla formot, benne több adatbázis lekérés, mert számtalan választható opció adatbázisból jön, a felhasználó kiválasztaná az ügyfelet, de nincs még az adatbázisban, így egy új felületen létrehozza az új ügyfelet, majd visszamegy az eredeti űrlaphoz, nulla újratöltés történt, de minden pont úgy néz ki, ahogy előzőleg hagyta, és sehol nem kellett többet várni, mint a minimál.

Ugyanaz szerver oldalon? Amikor másodszorra jelenik meg a számla űrlap, probléma, hogy az eddig kitöltött adatokat visszatedd, probléma, hogy másodszor futnak le azok a lekérések, amelyek az űrlaphoz tartoztak. Nagyon sok megoldandó probléma, ami az előbbi esetben fel sem merül.
31

Ki mondta, hogy vékony

Hidvégi Gábor · 2014. Dec. 3. (Sze), 14.37
Ki mondta, hogy vékony kliensnél egyszerre több űrlapot - az általad vázolt módon - nem lehet megjeleníteni, egymásra nyitni?

Ugyanaz szerver oldalon? Amikor másodszorra jelenik meg a számla űrlap, probléma, hogy az eddig kitöltött adatokat visszatedd, probléma, hogy másodszor futnak le azok a lekérések, amelyek az űrlaphoz tartoztak.
Az adatok újratöltését nem tudod megspórolni, ugyanis nem tudhatod, hogy azok közül mi az, ami közben megváltozott az adatbázisban (például az új ügyfél felvitele közben valaki átírta a számla devizájának árfolyamát).
32

Pedig meg akarjuk spórolni...

T.G · 2014. Dec. 3. (Sze), 14.59
Pont az a lényeg, hogy az adatok újratöltését megspóroljuk, ha ez nem lenne cél, akkor valóban az egésznek a pozitív hozományát hagyjuk el.

Ha a rendszer érzékeny a devizaárfolyam változásra, akkor nem csak akkor kell ennek életbe lépnie, ha új ügyfelet adtunk a rendszerhez számlakészítés közben, hanem akkor is, amikor az adminisztrátor számlakészítés közben megy ki kávézni...
33

Ezzel nem értek egyet. A

Hidvégi Gábor · 2014. Dec. 3. (Sze), 17.16
Ezzel nem értek egyet. A lényeg, hogy a kliensen a legfrissebb információ jelenjen meg, ami különösen fontos olyan űrlapoknál, ahol pénzügyekről van szó. Ha tudunk spórolni az adatok újratöltésével, az jó, de nem cél. Ha már nagyon takarékoskodni szeretnénk, akkor legrosszabb esetben azon lehet, hogy pusztán csak az adatokat küldjük ki a kliensre, a megjelenítésükkel pedig szerveroldalon nem foglalkozunk.
34

feladom

T.G · 2014. Dec. 3. (Sze), 18.28
Alkalmanként kialakul bennem az az érzés, hogy meg akarom érteni az érveléseidet, de mindig megállapítom, hogy ez nekem egyáltalán nem megy.

Nagyon fontos a pénzügyekkel foglalkozó űrlapoknál a legfrissebb állapot, emiatt minden mezőmódosítás után töltsük újra a teljes űrlapot? Mert, ha tényleg ezt mondod, akkor feladtam.

Vastag kliens esetén akár célirányosan tudom figyelni a megfelelő mezők értékét, a mindent mindig töltsünk újra és majd a szerver megmondja a tutit az szerintem nemhogy pazarló, de biztosan nehezebben kezelhető.

Ám kifogytam az érvekből, így részemről lezárható a téma.
35

nem kód, adat

pp · 2014. Dec. 4. (Cs), 07.30
Szerintem az első hozzászólásban nem teljesen jó fogalmazott Gábor. Ha jól értem nem arról van szó, hogy a kód hol fut, hanem arról, hogy a teljes adathalmaz le van tolva a kliensnek, és abból dolgozik a kliens kódja. (legalább is a 100Mb-ből arra következtetek)

pp
37

Nem, eredetileg a programkód

Hidvégi Gábor · 2014. Dec. 4. (Cs), 10.03
Nem, eredetileg a programkód is a kliensen volt, a szerveren futó fájlok pedig szinte csak az adatmentést és a visszaolvasást végezték. Az adatoknak csak a szükséges, megjelenített részét töltöttük le.
36

Egyszerű

Hidvégi Gábor · 2014. Dec. 4. (Cs), 10.03
A vezérelvünk az egyszerűség. Egy űrlapelemről nem könnyű megmondani, hogy az adatforrása milyen más elemekkel van kapcsolatban, a számlás példánál maradva ha az egyik tételén átírod a mennyiséget, akkor ott újra kell számolni az összegeket (nettó, bruttó), valamint a számla összegzőjében és az ÁFA összegzőben is és a végső, nagy összegző mezőben.

Mi ezeket az összefüggéseket nem tartjuk nyilván, mivel számuk tetszőleges lehet, ehelyett bármilyen adatváltozáskor újratöltünk minden szükséges adatot. A programunk így egyszerű és gyors marad. Az adatmennyiség nem nagy, amikor az adatbázismotor megtalál egy sort, ígyis-úgyis beolvassa az adatait a memóriába, innentől kezdve viszont nagyjából mindegy, hogy egy vagy száz mező adatait kell memóriából memóriába másolni. Hálózati szinten is elhanyagolható, hogy kétszáz vagy nyolcszáz bájtot küldök ki.
39

Ebben a témában én egyet

Joó Ádám · 2014. Dec. 5. (P), 12.12
Ebben a témában én egyet tudok érteni Gáborral: ha az alkalmazás jellege nem követeli meg a kliensoldali kódot, akkor ne használjunk kliensoldali kódot.

Az érvem egyszerű és önző: napi szinten okoz problémát egy öt éves – ami azért annyira nem régi – laptopon az, hogy két-három percre, de néha akár végleg elveszti a reszponzivitását a gép szkript futtatás közben. Olyan jelentéktelen oldalakról van szó, mint a Facebook, az Index, a 444 (ó, a horror!) vagy a Google gyakorlatilag bármilyen terméke.

Namost, ha ilyen erőforrásokkal rendelkező cégeknek nem sikerül kliensoldali webalkalmazást írni, akkor átlagfejlesztőknek azt javaslom, hogy inkább maradjanak a deklaratív megoldásoknál, azt viszonylag nehéz ennyire elbaszni.

Mindezt szigorúan a saját felhasználói élményem szem előtt tartva.
65

A web frontend része

Hidvégi Gábor · 2014. Dec. 18. (Cs), 10.00
A web frontend része eszméletlenül bonyolult és bőbeszédű. Ugyanarra a feladatra rengeteg párhuzamos eszközünk van, ami miatt kezd átláthatatlan dzsungel lenni a fejlesztői eszköztár (DOM elemek keresésére van például hat vagy nyolc lehetőség, pluszban ott van a sokat használt jQuery-féle módszer).

Aki elég ideje benne van a szakmában, értheti a dolgokat, de az újonnan jövők számára egyre magasabb a belépési küszöb, ennek az eredménye, hogy az általad említett oldalak úgy működnek, ahogy.

Minden újabb eszköz az entrópiát növeli, és végeredményben visszafelé fejlődünk. Szerintem a megoldás az lenne, ha egyszerűsítenénk, és kidobnánk a ballasztot.
12

store events

T.G · 2014. Dec. 2. (K), 22.40
Szerintem középtávon hatalmas könnyebbség lenne megismerkedned valami komolyabb keretrendszerrel, amit leírsz nekem kb. úgy hangzik, mint adott egy Store, amit több helyen használsz és, ha valahol változik, akkor szeretnéd, hogy mindenhol változzon. Ez azért nem tartozik a komoly kérések közé. Anélkül, hogy ismernék sok keretrendszert azért bátran merem állítani, hogy erre mindenhol van megoldás.
Ahogy szerver oldalon is szokás az adatokat elválasztani a megjelenéstől, úgy ez már "divat" kliens oldalon is, majd miután ez megvan, a fenti problémákkal már lényegesen könnyebb boldogulhatsz. Tehát nem a komponens eseményeit figyeljük, hanem az adat eseményeit, és ehhez segítség a keretrendszer.
40

Erdekes vita

gtoma · 2014. Dec. 7. (V), 16.18
Érdekes vita alakult ki a rendszer alapjáról.
Kedves Hídvégi Gábor: Nem szeretném szerve oldalra vinni a kliens kérdéseket. :) Értem, és egy kicsit egyet is értek az érveiddel. Azonban a felhasználói élmény, a felhasználói kényelem és lehetőségek messze nagyobbak, ha valamekkora terhelést ráteszel, a kliensre.

Én meg tudom tenni az én admin felületemmel, hogy a user felvisz egy partner céget, félig kitölti az adatait, majd rájön, hogy kell egy kapcsolattartó is, és felvisz egy kapcsolattartót, majd befejezi a partner cég adatait és menti a céget.

A szerver oldali alkalmazás esetén nagy valószínűséggel kilép a cég felvitelből, veszti a munkáját, felviszi a kapcsolattartót, majd bosszankodva újraírja a cég adatait.

De számtalan példa van, amire én azt mondom, megéri a kliensre terhelni egy kis munkát. Persze NEM mindent, mert akkor meg, ahogy mondod, túl vastag lesz a kliens!

Egyébiránt a jelen kérdésemet is pont karcsúsítási okokból tettem fel.

A program visszafejtése pedig - legalábbis ha csak a szükséges dolgokat terheled a kliensre - nem lesz visszafejthetőbb. Mi történik ha belenéz valaki a kódba? Megtudja, hogy kattintásra ablak nyílik és lekéri az adatokat ajaxban?

Egyékbént a szinte teljesen kliens oldali megoldást is rossznak tartom. Pont az érveid miatt.

szabo.b.gabor: Angular JS, igen. Ezen gondolkodom. Hozzányúltam már, de nem túl mélyen ismertem meg.

Kedves t.g. bár nem tudom melyik keret rendszerre gondolsz, mondhatnál egyet, ami hasonlót csinál, de hasonlóban gondolkodom ugye én is.

A jelenlegi elképzelésem az, hogy lesz egy adatforrás kezelő objektum, ami tölti az adatot, és újratölt ha kell, pár perc után, ha senki nem kérte le az adatot, akkor elpusztítja önmagát. Lehetne maszkolva kérdezni az adatokat. így több plugin használhatná.

Jelenleg a select2 jquery combobox miatt merült ez fel. Aminek adatforrásként ez jól működne. Még végig kell néznem a többi plugin-t hogy elbírják-e ha csak ennyit tud a rendszer.

Ránézek még gyorsan most az Angular-ra, ha jól emléxem ott is volt valami adatforrásos dolog.
41

Azonban a felhasználói

Hidvégi Gábor · 2014. Dec. 7. (V), 17.43
Azonban a felhasználói élmény, a felhasználói kényelem és lehetőségek messze nagyobbak, ha valamekkora terhelést ráteszel, a kliensre.
Tudnál pár ilyet felsorolni, ami vékony kliens esetén nem működik, nem olyan jó, rontja az élményt?

Én meg tudom tenni az én admin felületemmel, hogy a user felvisz egy partner céget, félig kitölti az adatait, majd rájön, hogy kell egy kapcsolattartó is, és felvisz egy kapcsolattartót, majd befejezi a partner cég adatait és menti a céget.

A szerver oldali alkalmazás esetén nagy valószínűséggel kilép a cég felvitelből, veszti a munkáját, felviszi a kapcsolattartót, majd bosszankodva újraírja a cég adatait.
Ki tudnád fejteni, hogy miért?

De számtalan példa van, amire én azt mondom, megéri a kliensre terhelni egy kis munkát. Persze NEM mindent, mert akkor meg, ahogy mondod, túl vastag lesz a kliens!
Megelégszem a számtalanból mondjuk öttel.

Egyébiránt a jelen kérdésemet is pont karcsúsítási okokból tettem fel.
Mit szeretnél karcsúsítani?
43

Nem szeretném nagyobbítani

gtoma · 2014. Dec. 8. (H), 10.56
a súlyozásunk közötti különbséget, és vitázni sem akarok.

Ez nézőpont, súlyozás kérdése. Ki - mit tart fontosabbnak, és eszerint módosítja a fejlesztési irányt. Én nem állítom, hogy a Te, vagy az én nézőpontom a jobb. Szerintem másra helyezzük a hangsúlyt - kicsit.

Így hát csak 1 példát mondok, és csak azért mondok egyáltalán példát, hátha világosabb lesz a nézőpontom.

Egy crm rendszer kezdő elemeit csináltam meg egy könyvelő cégnek.

Visznek fel Cégeket, és magánszemélyeket, más-más űrlappal.
namost menüben ki lehet választani, hogy épp melyik listát nézik. Cégek, igazgatók, vagy részvényesek listáját.
Első verzióban egy gombra kattintva lehetett felvinni a cégeket - egy dialogban -, és a magánszemélyeket, de mindig csak 1 új felvitel ablak lehetett nyitva. Gondoltam, hogy majd "sorrendben" viszik fel. Hát már az első tesztnél elhajtottak, hogy ők bizony a céget viszik fel, és KÖZBEN akarják hirtelen felvinni a céghez tartozó igazgatókat, és részvényeseket.

Ha szerveren oldod meg, szerintem problémád lenne, hogy 3 különböző űrlapot tarts meg, és minden alkalommal újra töltsd az oldalt.

Persze tán megoldható, ha sokat filóznék rajta, lehet még én is megoldanám, pedig pici ember vagyok én, de szerintem nem olyan egyszerű az. Gondolom az a minimum, hogy mindig minden űrlapos aloldalt postolni kellene, és mindent egy postba rakni. amit vagy javascripttel pakolsz össze, vagy a body mögött már egyből indítod a form taget.

Ti hogyan oldanátok meg?
44

Konzisztencia

Hidvégi Gábor · 2014. Dec. 8. (H), 12.12
Úgy látom, van két prekoncepciód, de nem gondoltad végig a dolgokat, emiatt teszek fel a kérdéseket.

Első prekoncepció: vékony kliens esetében a szerveren az adott felhasználónak nem lehet nyitva több űrlapja.

Kérdés: Miért ne lehetne a szerveren futó alkalmazás memóriájában több nyitott űrlap adatait tárolni, mi akadályoz meg benne?


Második prekoncepció: vastag kliens esetében egymásra űrlapok bezárásánál nem kell a megmaradókon újratölteni az adatokat.

Mint fentebb jeleztem, vannak adatok, amelyeknek mindig a legfrissebbeknek kell lenniük a felhasználónál. Emiatt a fenti példádban az Új igazgató ablak bezárásakor a Cég oldalt mindenképp újra kell tölteni, mert sosem tudhatod, hogy nincs-e másik űrlap, ahol ugyancsak lehet új igazgatókat felvinni. Lehet, hogy most nincs, de mondjuk a megrendelőd kitalálja, hogy máshol is lehessen. Nem a spórolás a fontos, hanem a konzisztencia, hogy mindig az aktuális adatokat lássa a kliens a képernyőn.

Innentől kezdve sem vékony, sem pedig vastag kliens esetében nem tudod megtakarítani az újratöltést. Abba az utcába pedig nem szabad belemenni, hogy megjelölni azokat az űrlapokat vagy adatokat, amit újra kell tölteni és amit nem.

Ha kicsit belegondolsz, a konzisztenciát kliensoldalon lehetetlen megvalósítani, mert az adatbázishoz nincs közvetlen hozzáférés.
45

Bocs, de ez túl magas labda... :)

T.G · 2014. Dec. 8. (H), 12.34
Abba az utcába pedig nem szabad belemenni, hogy megjelölni azokat az űrlapokat vagy adatokat, amit újra kell tölteni és amit nem.


Ha kizárjuk a helyes megoldást, akkor nehéz megoldani a problémát! :)
46

Elbonyolítja a szoftvert és a

Hidvégi Gábor · 2014. Dec. 8. (H), 12.48
Elbonyolítja a szoftvert és a karbantartását, mindenképp hátránnyal jár.
47

Szerintem...

T.G · 2014. Dec. 8. (H), 12.52
Szerintem az ilyen mondatok mellé illene odatenni, hogy "szerintem", vagy azt, hogy "az eddigi tapasztalataim szerint". Szerintem.
48

Ha másvalaki véleményét írom

Hidvégi Gábor · 2014. Dec. 8. (H), 12.58
Ha másvalaki véleményét írom le, azt jelezni szoktam. Ha nem írok oda semmit, ebből következik, hogy az az enyém, ezért a "szerintem" tökéletesen felesleges szó. Ugyanígy olyan tapasztalatról sem írhatok, amit még nem szereztem meg : )
49

Lehet...

T.G · 2014. Dec. 8. (H), 13.09
Lehet, mindenesetre nekem tényleg az az érzésem, hogy olyan tapasztalatról írsz, amivel nem rendelkezel. Igaz, a tévedés jogát fenntartom.
50

Occam borotvája

Hidvégi Gábor · 2014. Dec. 8. (H), 13.28
Nézzük az állításomat:
Abba az utcába pedig nem szabad belemenni, hogy megjelölni azokat az űrlapokat vagy adatokat, amit újra kell tölteni és amit nem.
Tehát:
1, meg kell jelölni az űrlapot, hogy ezt mindenképp újra kell tölteni,
2, meg kell jelölni a táblákat, aminek az adatai ha szerepelnek űrlapon, azt mindenképp újra kell tölteni
3, meg kell írni a kódot, ami a fenti feltételeket kezeli.

Ez három hibázási lehetőség. Ha egy nagy rohanásban (ami bármikor előfordulhat) az első két pont valamelyikéről elfelejtkezik a fejlesztő, előbb-utóbb inkonzisztens adatok jelennek meg a felhasználónál, és ő hibás döntést fog ezek alapján hozni. A felelősség a tied, tehát célszerű a hibázási lehetőségek számát a legalacsonyabbra csökkenteni (0-ra nem lehet), amit úgy lehet elérni, ha minél egyszerűbb a kód.

Általában az egyszerűbb megoldás a helyes.
51

Egyszerűség

T.G · 2014. Dec. 8. (H), 13.50
1. a komponenshez tartozik egy forrás
2. egy forrás akár több komponenshez is tartozhat
3. ha a forrás változik, akkor automatikusa változik a komponens

A rendelkezésre álló segédeszközök segítségével minden megoldható, semmi pluszt nem kell hozzáadni. Persze, ha nem használnék keretrendszert, akkor sok munkám lenne, de azért használ az ember keretrendszert, hogy ne kelljen újra feltalálni a spanyolviaszt. A témanyitásban leírt probléma megoldása az majdhogynem Getting Started cikkekben szerepelhetne, annyira egyszerű. Feltéve, ha megfelelő segédeszközöket használunk.

Magyarán az általad írt három pontból mind az 1-es, mind 2-es pontot át kell fogalmazni, nem a komponens eseményeit, hanem az adat/adatforrás eseményeit figyeljük. 3-as pontra meg a fentebb írtak igazak, ne írjuk meg azt, amit előttünk más okos emberek már megírtak.

Nekem tényleg ez tűnik egyszerűbbnek.
52

Rendben van, amit írsz, és

Hidvégi Gábor · 2014. Dec. 8. (H), 15.59
Rendben van, amit írsz, és keretrendszerre is szükség van egy általános alkalmazásfejlesztésnél, az már részletkérdés, hogy külsőt használunk vagy sajátot írunk.

Viszont mivel az adatok a szerveren vannak, ez felveti azt a problémát, hogy bizonyos rekordműveleteket csak ott lehet elintézni, például: adatok zárolása, írás lehetőségének ellenőrzése, jogosultságok ellenőrzése, adatformátumnak való megfelelés. Ezek miatt minden alkalommal a szerverhez kell fordulni, és jogosan merülhet fel a kérdés: az adatok kiírásán kívül miért is csináljunk bármi mást a kliensen? Persze ott is lehet ellenőrizni, de mivel megbízhatatlan, sokat nem érünk vele, a szerveren is mindenképp kell.

Innentől kezdve viszont nem értem, milyen felhasználói élményről beszéltek, hisz a hálózathoz kell fordulni. Viszont még egy mobilneten is nagyjából mindegy, hogy kétszáz vagy ezer bájtot töltesz le, ezek feldolgozása pedig végképp elhanyagolható.
54

Kliens oldalon nagyon sok ellenőrzés elvégezhető...

T.G · 2014. Dec. 8. (H), 17.46
Kliens oldalon nagyon sok ellenőrzés elvégezhető, sok esetben megoldható, hogy a szerverhez csak helyes adatokat küldünk, emiatt gondolom, hogy nem ugyanakkora a szerverterhelés egy komolyabb ellenőrzéssel, mint anélkül.

Vegyünk egy egyszerű felhasználó regisztrációt, hány olyan szabály van, ami kliens oldalon ellenőrizhető? És ne gondoljuk, hogy egy kérdőív készítő panelon több szerver oldali ellenőrzés szükséges. Sőt. Számtalan üzleti terület van, ahol nem kell minden mezőt adatbázisból ellenőrizni. Persze van, ami nem ellenőrizhető kliensen, de erre mondom én, hogy ekkor merül fel az, hogy innentől ugyanakkora a forgalom, ám előtte már sokat megspóroltam.

Az meg a mi esetünkben nem szempont, hogy a kliens oldali ellenőrzés kikerülhető, a mi ügyfeleink nem szeretnék az ellenőrzéseket kikerülni, csupán azt szeretnék, hogy nulla másodperc alatt jelezzük, ha valami mégsem jó. Kliens oldali ellenőrzéssel ez a szám hozható.

De ami számomra nem egyértelmű, hogy ha az egész űrlapot újragenerálom, akkor számtalan select választható értékét is újra kell generálnom, ilyen lekérések erős kliens esetén biztosan csak egyszer merül fel, míg az űrlap újragenerálásakor minden egyes alkalommal. Ez biztosan felesleges plusz.
59

Mivel a kliens eleve

Hidvégi Gábor · 2014. Dec. 9. (K), 10.03
Mivel a kliens eleve megbízhatatlan, semmilyen ellenőrzést nem érdemes ott végezni, hacsak nincsenek hermetikusan lezárva az internetről, és az USB portok fizikailag tönkre vannak téve. Feltételezem, azért elmondjátok az ügyfeleiteknek, hogy tegyenek vírusirtót a gépükre meg töltsék le az operációs rendszer frissítéseit, azaz 99,9% valószínűséggel laikusok biztonság terén.

Emellett a vastag kliensnél az üzleti logikával kapcsolatos dolgokat a kliensen tárolod, azaz ha változás van a modellben, újra le kell szedni a megfelelő scriptet. Lehet, hogy az ellenőrzéseknél megtakarítasz egy tizedmásodpercet, de a kliens töltögetéseinél mindezt el is veszted, tehát ugyanott vagy, ahol a part szakad.

a mi ügyfeleink nem szeretnék az ellenőrzéseket kikerülni, csupán azt szeretnék, hogy nulla másodperc alatt jelezzük, ha valami mégsem jó
Igen, ezt sulykolja belénk a fejlesztői közösség, ezerszer hallottam már ilyen mondatokat ("számunkra fontos, hogy oldalújratöltés nélkül működjön a website-unk") programozó kollegáktól, de ügyfelektől soha, ez utóbbiaknak fogalmuk sincs, hogy mit jelent ez, és nem is érdekli őket.

Abban biztos vagyok, hogy ilyet magától egy ügyfél sem kért. Legfeljebb ti kérdeztétek úgy, hogy "szeretné, ha nulla másodperc alatt végeznénk el a hibák ellenőrzését?". De ez nem jó, mert nem bontja ki az igazság minden részletét. "Ön számára az adatbiztonság vagy a gyorsaság a fontos?" - ez már sokkal jobb lenne.

De, mint feljebb jeleztem, adat írásakor ígyis-úgyis a szerverhez kell fordulni. Így viszont hiába ellenőrzöd kliensen, hogy megfelel-e az adott karakterlánc egy reguláris kifejezésnek, ha az illetőnek nincs joga a mezőt írni. Így viszont csak az idejét raboltad azzal, hogy rákényszerítetted a helyes formátumra, aztán meg a beküldéskor kiderül, hogy a rekordot közben zárolták.
60

olyan szép ahogy mindenki

szabo.b.gabor · 2014. Dec. 9. (K), 10.40
olyan szép ahogy mindenki elbeszél a másik mellett..

ahogy a 'vékonykliens' nem jelenti azt, hogy az egész formot újra kell tölteni
úgy egy 'vastagkliens' sem jelenti azt, hogy ne lenne szerver oldali ellenőrzés

beszélhetünk arról, hogy egy vékonykliens kevésbé összetett, ha ezt az összetettséget egy framework elfedi nekünk vastagkliens használata esetén.

ennyi erővel nyissunk vitát arról, hogy milyen pózban jobb szexelni.
61

úgy egy 'vastagkliens' sem

Hidvégi Gábor · 2014. Dec. 9. (K), 11.31
úgy egy 'vastagkliens' sem jelenti azt, hogy ne lenne szerver oldali ellenőrzés
Node ha mindenképp kell szerveroldali ellenőrzés, akkor pontosan milyen előnyökkel jár a vastagkliens? Hol van a felhasználói élmény, ha erre (a hálózathoz való fordulásra) mindenképp szükség van? Mikor érdemes vastagkliens architektúrát választani? Ezt szeretném megérteni.
64

nem érdekel, hogy idióta

szabo.b.gabor · 2014. Dec. 9. (K), 15.42
nem érdekel, hogy idióta hekker józska miket küldözget nekem, mert szerver oldalon úgyis szűrök, de nem mindegy hogy hányszor.

nem fogok egy regex ellenőrzést elküldeni a szervernek, mert nem szeretnék minden szar kis hülyeséget külön külön ellenőriztetni a szerverrel, ha a kliens oldalon átmegy az ellenőrzésen (ami ott elvégezhető), akkor terhelem a szervert. kliensnek is jobb, meg a szervernek is. (vitatkozhatsz vele, de a kliens oldali ellenőrzés akkor is gyorsabb egy regex esetén)

de itt ezek még mindig egyszerű dolgok, nem feltétlen 'vastag kliens' ez..

mondjuk azt, hogy vastagkliens egy vanpédzsapp.

kliens oldalon van a routing, controllerek, a szerverről pedig azt kéri le ami kell. újra felhasználható template-eket, adatokat, a kliens meg legenerálja a megjelenítendő oldalakat.

úgyis kell renderelnie, a html előállítása nem akkora overhead (időben _szerintem_ gyorsabb). nem változó listákat nem kérek le többször, csomót spórolsz szintúgy..
63

Ez fájt.

T.G · 2014. Dec. 9. (K), 15.02
Sok sületlenséget olvastam már itt a Weblaboron, de ez a hozzászólás biztosan benne van a top 10-ben. Fizikailag fájt.
42

ExtJS + AngularJS

T.G · 2014. Dec. 7. (V), 18.38
Már lassan hat éve ExtJS-t használok. Mi kizárólag üzleti alkalmazásokat építünk, ugye ebben az esetben sok mindent másként kell kezelni. Számomra összehasonlíthatatlanul gyorsabb felületeket eredményez, mintha ugyanazokat szerver oldalon hoznám létre. Illetve meggyőződésem, hogy sok felületet nem is lehetne elkészíteni, ha nem lenne ennyire erős a kliens oldal. Igaz itt - a WL-en - valamiért az ExtJS-t nem szeretik, ezt én azóta sem értem, hogy miért. :)

Hobby projektekben AngularJS is próbálgatom, a fenti probléma itt is könnyen megoldható, egy változó változása egyszerűen tud a HTML oldalon több helyen is változást előidézni, mindenféle eseménykezelés nélkül. ExtJS-ben is sok varázslat van, de számomra úgy tűnik, hogy az AngularJS-ben sokkal több, mindenesetre a lényeg, hogy neked semmivel sem kell foglalkoznod, egyszerűen csak működik.
53

Az Angulart azért nem biztos,

Joó Ádám · 2014. Dec. 8. (H), 17.08
Az Angulart azért nem biztos, hogy ajánlanám kezdésnek :)
55

Kettős érzés

T.G · 2014. Dec. 8. (H), 18.02
Amikor elindult az Angular hype, amikor én még nem néztem bele, mert akkor úgy gondoltam, hogy legfeljebb munkahely váltás keretében fogom az ExtJS-t lecserélni, de aztán láttam néhány hihetetlenül szép AngularJS kódot, annyira tiszta, annyira egyszerű, annyira egyértelmű volt, hogy leesett az állam. Wtf érzés, elsőre nem tudtam, hogy hogyan működik, mert mi az, hogy egy sima tömbbe új értéket beszúrok és hatására a HTML oldalon egy új node keletkezik, de rögtön éreztem, hogy ez kell nekem. (ma már persze tudom, hogy nem varázslat, de elsőre annak tűnt:)

Viszont pont emiatt nem vagyok biztos benne, hogy egy kezdőnek ez annyira rossz. Ha valaki elfogadja, hogy van varázslat és nem kell mindent érteni, akkor lehet, hogy ez kiváló választás. Ha megnézünk egy ExtJS példakódot, meg egy AngularJS példakódot, akkor biztosan az AngularJS ajánlanám egy kezdőnek, egészen addig, míg nem nézel be a gépház mögé.
56

Picit belenyultam már

gtoma · 2014. Dec. 8. (H), 20.46
de nem tartanám magamat szakértőnek. Csak "pacsiztunk", majd vége. Maradt bennem jó pár kérdés. :)

Egy mobil verzió megjelenítéshez használtam, pont hogy megismerhessem. Tetszik az angular nagyon, de nem találtam akkor ui elemeket hozzá, most viszont még azt is találtam.

Hát nagyon kacsintgatok most megint.

Egyébként T.G érdekességként: Az Extjs a másik amivel sokáig szemeztem, mert tetszik,
és a monogrammom pedig G.T :)

jqueryt azért használok, mert rákeresek egy ui elemre, és valaki már biztos kitalálta. Igazából általában többen. :)

Tudsz esetleg az angular-hoz valami magyar leírást, összefoglalót, stb? Az angolom nem annyira jó, szeretek magyarul is utána nézni dolgoknak.
57

Én idén két éles projektet

Joó Ádám · 2014. Dec. 9. (K), 00.02
Én idén két éles projektet végigcsináltam Angularban. Nem mondom, hogy rossz, de vannak hiányosságai (például a sablonnyelve miatt nagyon sok a duplikált markup), és általában jellemző rá, ami a varázslatra mindig: amíg a kitaposott, jól dokumentált ösvényen haladsz, addig minden szép és jó, de hamar eljön az a pont, ahol valami mást szeretnél, és ilyenkor egyrészt meg kell értened, mi zajlik a háttérben, másrészt sokszor kell körüljárnod a varázslatot, amikor útban van.
58

Más tapasztalat

szabo.b.gabor · 2014. Dec. 9. (K), 09.46
Én is élesben ismerkedem vele egy ideje, szerintem nem vészes a betanulási görbéje, de persze van.

A duplikált markup gyanítom direktívákkal kiváltható lenne, a varázslat körüljárására pedig vannak tök jól definiált event-ek általában. Szerintem a doksija is jó.
62

szerintem nem vészes a

Joó Ádám · 2014. Dec. 9. (K), 14.03
szerintem nem vészes a betanulási görbéje, de persze van


Egy tapasztalt fejlesztő gyorsan belerázódik, de én vallom, hogy nem érdemes kihagyni lépcsőfokokat, és amíg nem tudnád magad is megírni a keretrendszert, amit használsz, addig folytasd a tanulást.

A duplikált markup gyanítom direktívákkal kiváltható lenne


Itt például olyan tervezési hibákra gondolok, hogy a sablonokban a feltételvizsgálat a feltételesen megjelenített elem attribútuma, ezért ha több elemet akarsz feltételesen megjeleníteni, akkor vagy mindegyiken megismétled a feltételt, vagy körülveszed őket egy semmilyen más célt nem szolgáló divvel, illetve mivel ennek következtében else ág sincs, így azt újabb – negált – feltételekkel tudod csak megvalósítani.