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.


Reply via email to