Backbone anyone?
2013/4/2 Massimo Di Pierro <massimo.dipie...@gmail.com> > Thanks for the good writing. We should make an example of integrating the > two. > > > On Tuesday, 2 April 2013 05:01:10 UTC-5, Arnon Marcus wrote: >> >> EmberJS is one of the most comprehensive MVC frameworks of the day - it's >> "batteries included" (like web2py). >> >> It is inspired by Ruby-on-Rails, in terms of preferring "convention-over- >> **configuration" (like web2py). >> >> It has "sane defaults" for the high-level architecture, so it could >> require minimal code for standard stuff (like web2py). >> >> The MVC naming-structure is somewhat different, but essentially the same >> components exist as in web2py. >> >> >> >> *The Router:* >> >> >> >> Like in web2py, there is a convention for mapping controllers to views, >> but unlike web2py, routing (the mapping of URLs to code) is done explicitly. >> >> It is analogous to web2py's "routs.py" file. >> >> The router is doing client-side routing, translating code to URL and >> vice-versa. >> >> >> >> *The Model:* >> >> * * >> >> Firstly, there is an extension called EmberData that works holistically >> with EmberJS (but can be used without it) that does all the >> front-end/back-end synchronization. >> >> It is analogues to web2py's database-abstraction-layer (DAL) >> architecture, for supporting multiple optional back-ends, and converting >> data to an ORM (object-relation-model). >> >> As in RoR (ruby-on-rails), the conversion is done via "Adapters" which >> are like web2py's DAL-drivers. >> >> In RoR it outputs what's known as "Active-Records" - essentially, objects >> that map to the back-end, and "know" how to save/update data back. >> >> In EmberData you would write: >> >> model = DS.Store.create() >> >> Where in web2py you would write: >> >> db = DAL(<connection-string>) >> >> The data received from the backend, after being converted to ORM objects, >> is known as "Records". >> >> What is called "Record" in EmberData is essentially like a "Row" object >> in web2py, and similarly a "RecordArray" in EmberData is analogous to a >> "Rows" object in web2py. >> >> >> >> *The View:* >> >> >> >> In EmberJS, a "view" is somewhat different from what a "view" in web2py, >> as it deals with user-interaction event-handeling. >> >> However, EmberJS uses "Templates" which are essentially what web2py's >> "views" are. It even uses very similar templating language with a >> squirrely-brackets ("{{<somthing>}}"). >> >> It has similar uses, so where in web2py, a controller "passes" data to >> the view, in EmberJS a controller "binds" data to a template. >> >> The difference here is that because it is all client-side, EmberJS can do >> data-binding - whenever a controller's bound-data changes, the template >> automatically updates itself in the UI. >> >> Additionally, in EmberJS there are special names that do special things >> inside a template. >> >> For example: >> >> Where in web2py, the "layout" may have something like: >> >> ... >> >> <header>...</header> >> >> ... >> >> {{include}} >> >> ... >> >> <footer>...</footer> >> >> ... >> >> In ember it would be: >> >> ... >> >> <header>...</header> >> >> ... >> >> {{outlet}} >> >> ... >> >> <footer>...</footer> >> >> ... >> >> Essentially meaning "everything else inside this template, put here"... >> >> >> >> Similarly, where in web2py you would write: >> >> ... >> >> {{if someBoolean}} >> >> <div>{{someBoolean}}</div> >> >> {{pass}} >> >> ... >> >> <ol> >> >> {{for a in someArray}} >> >> <li>{{a}}</li> >> >> ** {{pass}} >> >> </ol> >> >> ... >> >> In EmberJS it would look something like this: >> >> ... >> >> {{#if someBoolean}} >> >> <div>{{someBoolean}}</div> >> >> {{/if}} >> >> ... >> >> <ol> >> >> {{#each a in someArray}} >> >> <li>{{a}}</li> >> >> ** {{/each}} >> >> </ol> >> >> ... >> >> Also, where in web2py the mapping of views to controllers is done via >> folder-structure + file-naming, >> >> in EmberJS it is done via name-mapping of controller-object-name and >> template-object-name. >> >> >> >> *The Controller:* >> >> * * >> >> In web2py a controller automatically maps to a sub-set of the URL, and >> may have many functions called "Actions", which each is mapped to a view. >> >> In EmberJS this is further generalized in the "Router", which can contain >> many nested "Routs", each mapped to a single "controller" via the router >> and/or naming-convention. >> >> So an EmberJS "Rout" is analogous to a web2py "Controller", and an >> EmberJS "Controller" is analogous to a web2py "Controller-Action". >> >> This is offers a more flexible hierarchy for the application, as a router >> can "nest" routs as deeply as you want. >> >> >> >> >> >> Here are some great (and funny) videos about Ember (watching in order is >> advisable): >> >> >> >> EmberData <http://youtu.be/_6yMxU-_ARs> >> >> >> >> EmberJS <http://youtu.be/4Ed_o3_59ME> (you can skip the live-demo part >> in the middle, it's not very clear here..) >> >> >> >> Live Demo <http://youtu.be/Ga99hMi7wfY> (This one is very clear.) >> > -- > > --- > You received this message because you are subscribed to the Google Groups > "web2py-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to web2py+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.