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
220
1
Share
emberjs
sarma ruby meetup, Feb 2014
mmr
February 20, 2014
More Decks by mmr
See All by mmr
rails decorators
mribica
0
82
make your own gem
mribica
0
110
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
160
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
150
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
780
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
110
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.4k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
140
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
200
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
140
BBQ
matthewcrist
89
10k
Paper Plane (Part 1)
katiecoart
PRO
0
6.3k
Agile that works and the tools we love
rasmusluckow
331
21k
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