Upgrade to Pro — share decks privately, control downloads, hide ads and more …

EmberConf 2015 Keynote

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

EmberConf 2015 Keynote

Avatar for Yehuda Katz

Yehuda Katz

March 09, 2015
Tweet

More Decks by Yehuda Katz

Other Decks in Technology

Transcript

  1. {{#each  item  in  list}}      {{item.name}}   {{/each}}  

    {{#with  long.title  as  t}}      {{t.name}}   {{/with}}   {{#calendar-­‐month}}      {{!-­‐-­‐  what  day  am  I  rendering?  -­‐-­‐}}   {{/calendar-­‐month}}
  2. {{#each  list  as  |item|}}      {{item.name}}   {{/each}}  

    {{#with  long.title  as  |t|}}      {{t.name}}   {{/with}}   {{#calendar-­‐month  as  |day|}}      <p>{{day.name}}</p><p>{{day.number}}</p>   {{/calendar-­‐month}}
  3. Inspector Improvements • Info • Nav Bar Tomster • Promises

    • Render Performance • Bookmarklet • Multiple <iframe>s • • Redesigned UI • Advanced Container • Array and Date support • Report Deprecations • Test Support
  4. Ember CLI • Test Support • Massive performance improvements •

    API Stubbing • Server Proxy • Content Security Policy • Transpile the Future w/ • Pod Directory Structure • Dependency Checking • Source Maps • Ember Doctor • http://emberaddons.com
  5. What can an addon do? • Supply Configuration • Add

    Generators • Add CLI Commands • Server Middleware • Pre-& Post-Build Processing • Handle Errors • Add Linters to Test Output • And way more!
  6. test("Page  contents",  function(assert)  {      assert.expect(2);      visit('/foos').then(function()

     {          assert.equal(find('.foos-­‐list').length,  1,              "Page  contains  list  of  models");          assert.equal(find('.foos-­‐list  .foo-­‐item').length,  5,              "List  contains  expected  number  of  models");      });   });
  7. moduleForComponent('pretty-­‐color');   test('changing  colors',  function(assert){      var  component  =

     this.subject();      component.set('name',  'red');      andThen(function()  {          //  first  call  to  $()  renders  the  component.          assert.equal(this.$().attr('style'),  'color:  red;');          component.set('name',  'green');      });      andThen(function()  {          assert.equal(this.$().attr('style'),  'color:  green;');      });   });
  8. Post Comment Comment Comment post.comments  =  [c1,  c2,  c3] comment.post

     =  post comment.post  =  post comment.post  =  post Loaded All at Once
  9. Post Comment Comment Comment Post Loaded First post.comments  =  []

    comment.post  =  post comment.post  =  post comment.post  =  post
  10. Post Comment Comment Comment Post Loaded First post.comments  =  [c1,

     c2,  c3] comment.post  =  post comment.post  =  post comment.post  =  post
  11. Post Comment Comment Comments Loaded First post.comments  =  [c1,  c2]

    comment.post  =  null comment.post  =  null
  12. Post Comment Comment Comments Loaded First post.comments  =  [c1,  c2]

    comment.post  =  post comment.post  =  post
  13. Post Comment Comment Comments Loaded First post.comments  =  [c1,  c2]

    comment.post  =  post comment.post  =  post (and more loaded later)
  14. Post Comment Comment Comment Comments Loaded First post.comments  =  [c1,

     c2] comment.post  =  post comment.post  =  post comment.post  =  post (and more loaded later)
  15. Post Comment Comment Comment Comments Loaded First comment.post  =  post

    comment.post  =  post comment.post  =  post post.comments  =  [c1,  c2,  c3] (and more loaded later)
  16. <div  class="item">      {{#if  enabled}}        

     <p>It's  Enabled</p>      {{/if}}      <p>{{name}}</p>      <p  class="popover">{{details}}</p>   </div> {  enabled:  true,  name:  "Tom  Dale",      details:  "A  True  Scotsman"  }
  17. <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Tom  Dale",      details:  "A  True  Scotsman"  }
  18. <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  }
  19. <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> <div  class="item">    <p>It's  Enabled</p>    <p>Thomas  Dale</p>      <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  }
  20. <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> <div  class="item">    <p>It's  Enabled</p>    <p>Thomas  Dale</p>      <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  }
  21. <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> <div  class="item">    <p>It's  Enabled</p>    <p>Thomas  Dale</p>      <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  }
  22. <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> <div  class="item">    <p>It's  Enabled</p>    <p>Thomas  Dale</p>      <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  }
  23. <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> <div  class="item">    <p>It's  Enabled</p>    <p>Thomas  Dale</p>      <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  }
  24. <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> <div  class="item">    <p>It's  Enabled</p>    <p>Thomas  Dale</p>      <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  }
  25. <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> <div  class="item">    <p>It's  Enabled</p>    <p>Thomas  Dale</p>      <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  }
  26. <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> <div  class="item">    <p>It's  Enabled</p>    <p>Thomas  Dale</p>      <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  }
  27. <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> <div  class="item">    <p>It's  Enabled</p>    <p>Thomas  Dale</p>      <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  }
  28. <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> <div  class="item">    <p>It's  Enabled</p>    <p>Thomas  Dale</p>      <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  }
  29. <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> <div  class="item">    <p>It's  Enabled</p>    <p>Thomas  Dale</p>      <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  } then, apply change
  30. <div  class="item">      {{#if  enabled}}        

     <p>It's  Enabled</p>      {{/if}}      <p>{{name}}</p>      <p  class="popover">{{details}}</p>   </div> {  enabled:  true,  name:  "Tom  Dale",      details:  "A  True  Scotsman"  }
  31. {  enabled:  true,  name:  "Tom  Dale",      details:  "A

     True  Scotsman"  } <div  class="item">      {{#if  enabled}}          <p>It's  Enabled</p>      {{/if}}      <p>{{name}}</p>      <p  class="popover">{{details}}</p>   </div>
  32. {  enabled:  true,  name:  "Tom  Dale",      details:  "A

     True  Scotsman"  } <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>      <p  class="popover">          A  True  Scotsman      </p>   </div> <div  class="item">      {{#if  enabled}}          <p>It's  Enabled</p>      {{/if}}      <p>{{name}}</p>      <p  class="popover">{{details}}</p>   </div>
  33. {  enabled:  true,  name:  "Tom  Dale",      details:  "A

     True  Scotsman"  } <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>      <p  class="popover">          A  True  Scotsman      </p>   </div> <div  class="item">      {{#if  enabled}}          <p>It's  Enabled</p>      {{/if}}      <p>{{name}}</p>      <p  class="popover">{{details}}</p>   </div>
  34. {  enabled:  true,  name:  "Tom  Dale",      details:  "A

     True  Scotsman"  } <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>      <p  class="popover">          A  True  Scotsman      </p>   </div> <div  class="item">      {{#if  enabled}}          <p>It's  Enabled</p>      {{/if}}      <p>{{name}}</p>      <p  class="popover">{{details}}</p>   </div>
  35. {  enabled:  true,  name:  "Tom  Dale",      details:  "A

     True  Scotsman"  } <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>      <p  class="popover">          A  True  Scotsman      </p>   </div> <div  class="item">      {{#if  enabled}}          <p>It's  Enabled</p>      {{/if}}      <p>{{name}}</p>      <p  class="popover">{{details}}</p>   </div>
  36. {  enabled:  true,  name:  "Tom  Dale",      details:  "A

     True  Scotsman"  } <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>      <p  class="popover">          A  True  Scotsman      </p>   </div> <div  class="item">      {{#if  enabled}}          <p>It's  Enabled</p>      {{/if}}      <p>{{name}}</p>      <p  class="popover">{{details}}</p>   </div>
  37. <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  } <div  class="item">      {{#if  enabled}}          <p>It's  Enabled</p>      {{/if}}      <p>{{name}}</p>      <p  class="popover">{{details}}</p>   </div>
  38. <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  } <div  class="item">      {{#if  enabled}}          <p>It's  Enabled</p>      {{/if}}      <p>{{name}}</p>      <p  class="popover">{{details}}</p>   </div>
  39. <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  } <div  class="item">      {{#if  enabled}}          <p>It's  Enabled</p>      {{/if}}      <p>{{name}}</p>      <p  class="popover">{{details}}</p>   </div>
  40. <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  } <div  class="item">      {{#if  enabled}}          <p>It's  Enabled</p>      {{/if}}      <p>{{name}}</p>      <p  class="popover">{{details}}</p>   </div>
  41. <div  class="item">    <p>It's  Enabled</p>    <p>Tom  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  } <div  class="item">      {{#if  enabled}}          <p>It's  Enabled</p>      {{/if}}      <p>{{name}}</p>      <p  class="popover">{{details}}</p>   </div>
  42. <div  class="item">    <p>It's  Enabled</p>    <p>Thomas  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  } <div  class="item">      {{#if  enabled}}          <p>It's  Enabled</p>      {{/if}}      <p>{{name}}</p>      <p  class="popover">{{details}}</p>   </div>
  43. <div  class="item">    <p>It's  Enabled</p>    <p>Thomas  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  } <div  class="item">      {{#if  enabled}}          <p>It's  Enabled</p>      {{/if}}      <p>{{name}}</p>      <p  class="popover">{{details}}</p>   </div>
  44. <div  class="item">    <p>It's  Enabled</p>    <p>Thomas  Dale</p>    

     <p  class="popover">          A  True  Scotsman      </p>   </div> {  enabled:  true,  name:  "Thomas  Dale",      details:  "A  True  Scotsman"  } <div  class="item">      {{#if  enabled}}          <p>It's  Enabled</p>      {{/if}}      <p>{{name}}</p>      <p  class="popover">{{details}}</p>   </div>