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

EmberConf 2015 Keynote

EmberConf 2015 Keynote

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>