Convention over configuration MVVM för JS

Permalänk
Avstängd

Convention over configuration MVVM för JS

Jag har länge saknat ett CoC-bibliotek för JS som liknar Caliburn Micro för WPF, dvs att mycket av koden sker implicit genom konventioner.

Så jag tog saken i egna händer och skapade detta bibliotek som bygger på Knockout som template/MVVM bibliotek

Jag har haft den uppe ett tag på Github men först nu alla funktioner börjar komma på plats

https://github.com/AndersMalmgren/Knockout.BindingConventions

Vad kan man då göra med detta undrar ni? Som ett superenkelt exempel här har ni en Vy skriven utan mitt bibliotek.

<button data-bind="click: save, enable: canSave">Save</button>

Och här med

<button data-name="save">Save</button>

Skillnaden är att by convention fattar biblioteket att du vill att savemetoden på din vymodell ska trigga när man klickar på knappen, samt om det finns en medlem canSave ska denna användas för att styra om det går att klicka på knappen. Testa här http://jsfiddle.net/3Ajnj/13/

Förutom att HTML-markupen blir renare så vinner du även en performance boost, standard KO måsten evaluera "click: save, enable: canSave" via eval() medans min kod istället använder vanlig objekt indexering vilket är mycket snabbare.

Här kan ni hitta alla inbyggda konventioner som finns https://github.com/AndersMalmgren/Knockout.BindingConventions...

En grej till som jag är stolt över är att jag gjort JS mer statiskt typat. Eftersom jag är en .NET utvecklare är jag stark förespråkare av statiska språk som C#. MEN... För GUIn är dynamiska språk att föredra, titta tex på all reflection man måste göra i MVC för att det ska fungera, detta slipper man med JS. Dock när man sysslar med Convention over configuration i MVVM så är faktiskt statiska typer att föredra i många fall.

Som exempel, för att koppla ihop en vy med en vymodell i standard knockout måste man explicit koppla ihop en vymodell med sin vy, tex

<div data-bind="template: { name: 'CustomerView', data: selectedCustomer }"></div>

Med mitt bibliotek blir det istället

<div data-name="selectedCustomer"></div>

Den fattar att selectedCustomer är av typen CustomerViewModel och matchar då ihop modellen med vyn CustomerView
http://jsfiddle.net/xJL7u/5/

Hoppas ni har nytta av mitt bibliotek, säg till om ni undrar nått!

Visa signatur
Permalänk
Avstängd

Nu på nuget

Install-Package Knockout.BindingConventions

Visa signatur
Permalänk
Avstängd

Måste ge cred till KO teamet, mitt lib ovan slutade fungera med KO 3.0 då jag använde odokumenterade funktioner i KO. Då det ändå var publika delar av KO jag använde så lade jag upp en ticket på Github.

Nu när jag vaknade i morse så fick jag se denna pull request i inkorgen, snacka om service!
https://github.com/AndersMalmgren/Knockout.BindingConventions...

Visa signatur
Permalänk
Medlem
Skrivet av CyberVillain:

Måste ge cred till KO teamet, mitt lib ovan slutade fungera med KO 3.0 då jag använde odokumenterade funktioner i KO. Då det ändå var publika delar av KO jag använde så lade jag upp en ticket på Github.

Nu när jag vaknade i morse så fick jag se denna pull request i inkorgen, snacka om service!
https://github.com/AndersMalmgren/Knockout.BindingConventions...

Wow.

De får väl inte ens betalt de som utvecklar KO?

Visa signatur

Programmerare -> PHP | HTML | CSS | JS | Java.

Permalänk
Avstängd

Nope, open source. Fast Steve Sandersson grundaren av KO får rätt många tusen per kuvert när han håller ett seminarium så de tjänar pengar på andra sätt.

Håller själv mycket på med open source, skriver även bloggar och håller seminarium. hoppas köra seminarium på heltid en vacker dag

Visa signatur
Permalänk
Medlem
Skrivet av CyberVillain:

Nope, open source. Fast Steve Sandersson grundaren av KO får rätt många tusen per kuvert när han håller ett seminarium så de tjänar pengar på andra sätt.

Håller själv mycket på med open source, skriver även bloggar och håller seminarium. hoppas köra seminarium på heltid en vacker dag

Nice, drar bloggandet in några pengar?

Csswizardry är en person som har gått från bloggande på fritiden till att på heltid föreläsa.

Lycka till!

Visa signatur

Programmerare -> PHP | HTML | CSS | JS | Java.

Permalänk
Avstängd

Nja, det ger lite extra klirr i kassan, men inget man kan leva på
Håller en del externa Seminarium via företag jag jobbar på. Knockout, SignalR och CQRS är det jag kör mest.

Detta ramverk som tråden handlar om är väl ett av det som folk visat mest intresse över, strax efter mitt SignalR ramverk som jag också skrivit om här.

Nackdelen med mina ramverk/seminarium är att de riktar sig till folk som har bra kunskap om tekniken de riktar sig mot. Ska man tjäna pengar kanske man borde rikta sig mer mot grundkurser. Men det är ju inte lika roligt

Visa signatur
Permalänk
Avstängd

Knockout 3.0 support ute nu!

Visa signatur