AngularJS is well designed ... and usefull ... Dne úterý, 2. dubna 2013 19:13:20 UTC+2 Ramos napsal(a): > > Backbone anyone? > > > 2013/4/2 Massimo Di Pierro <massimo....@gmail.com <javascript:>> > >> 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+un...@googlegroups.com <javascript:>. >> 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.