Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
emberjs
Search
mmr
February 20, 2014
1
220
emberjs
sarma ruby meetup, Feb 2014
mmr
February 20, 2014
Tweet
Share
More Decks by mmr
See All by mmr
rails decorators
mribica
0
72
make your own gem
mribica
0
100
Featured
See All Featured
Statistics for Hackers
jakevdp
799
220k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.2k
A Modern Web Designer's Workflow
chriscoyier
695
190k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Designing for humans not robots
tammielis
253
25k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
970
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Speed Design
sergeychernyshev
32
1k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Transcript
Sarma Feb, 2014
• @mribica • https://github.com/mribica/twtr
Ember.js • client-side MVC framework for creating ambitious web applications
Tradicionalni web • req • full page response • req
• full page response
Ajax • req • full page response • ajax req
• partial response
Pjax/Turbolinks • req na server • full page response •
ajax req • page body response
SPA • req na server • full page response •
ajax req • response.json (client-side rendering)
Ember.js • url driven aplikacija • discourse • demo •
MVC
MVC • App.Router • Em.Route • DS.Model ili Em.Object •
ArrayController, ObjectController • Template • Em.View
Model # models/tweet.js.coffee App.Tweet = DS.Model.extend body: DS.attr(‘text’) favorite: DS.attr(‘boolean’)
createdAt: DS.attr(‘date’)
View (Template) # templates/tweet.handlebars <div class=”tweet”> <small> {{moment}} </small> <p>
{{body}} </p> </div>
View (Em.View) # views/tweet_view.js.coffee App.TweetView = Em.View.extend templateName: ‘tweet’ didInsertElement:
-> # neki kod koji se treba izvrsiti nakon # ubacivanja tweet-a u DOM
View (Em.View) # views/tweet_area_view.js.coffee App.TweetView = Em.TextArea.extend escape: -> #
logika kada se pritisne esc key @sendAction ‘cancel’
Controller # controllers/tweet_controller.js.coffee App.TweetController = Em.ObjectController moment:(-> moment(@get(‘createdAt’)).fromNow() ).property()
Controller # controllers/tweets_controller.js.coffee App.TweetsNewController = Em.ObjectController action: save: -> #
logika za spremanje tweeta
App.Router # router.js.coffee App.Router.map -> @resource ‘tweets’, -> @route ‘new’
Em.Route # tweets_route.js.coffee App.TweetsRoute = Em.Route.extend # model hook model:
-> @store.find(‘tweet’)
Em.Route # tweets_route.js.coffee App.TweetsNewRoute = Em.Route.extend # model hook model:
-> @store.createRecord ‘tweet’
Em.Route • beforeModel(params,) • model(params) • afterModel(params) • setupController(controller, model)
Demo