Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Meteor

1,118 views

Published on

Meteor 0.7 presentation

Published in: Technology

Meteor

  1. 1. Meteor Next Generation Web Development
  2. 2. Why next generation? Lets check some history
  3. 3. History
  4. 4. History
  5. 5. History
  6. 6. History
  7. 7. History
  8. 8. Architecture
  9. 9. Architecture WebSockets Fibers Scaling Real-Time MongoDB queries (v0.7)
  10. 10. So what is Meteor? Full reactive stack: Client <—> Server <—> DB Javascript only Database Everywhere
  11. 11. Wait, what about security???
  12. 12. Wait, what about security??? AUTOPUBLISH INSECURE
  13. 13. How it works? $ curl https://install.meteor.com | /bin/sh $ meteor create myapp $ cd myapp $ meteor => Meteor server running on: http://localhost:3000/ $ meteor deploy myapp.meteor.com
  14. 14. How it works? if (Meteor.isServer) { … } if (Meteor.isClient) { … }
  15. 15. F****** long file
  16. 16. Lets split it my_project server (server code) client (client code) compatibility (js libraries) lib (loading first) public (static files) private (some private data) tests
  17. 17. Lets start from template <template name=“my_template”> … </template>
  18. 18. Routing Router.map(function() { this.route('my_template', { path: ‘/my_template/:_id', renderTemplates: { 'top_bar': {to: 'top_bar'} }, template: ‘my_template’, data: function() {…} }
  19. 19. Javascript Template.my_template.rendered = function() {…} Template.my_template.events({ 'submit .my_form’: function (event) {…} }); Template.my_template.helpers({ locations: function () {return Session.get("locations");} });
  20. 20. Reactive data Session.get(“locations"); {{ locations }} Session.set(“locations”, {…});
  21. 21. Publish and subscribe Meteor.publish("locations", function () { return Locations.find({ "user._id": this.userId }); }); Meteor.subscribe("locations");
  22. 22. INSECURE OFF Locations = new Meteor.Collection("locations"); Locations.allow({ insert: function(userId, doc) {…}, update: function(userId, doc, fields, modifier) {…}, remove: function(userId, doc) {…} });
  23. 23. That’s all the magic
  24. 24. What about testing? Laika (http://arunoda.github.io/laika/) - Testing framework for meteor RTD (http://rtd.xolv.io/) - Test runner for meteor TinyTestJS (https://github.com/bennadel/) JavaScript unit testing framework
  25. 25. Packages accounts-ui jquery backbone less bootstrap underscore coffeescript d3
  26. 26. Packages Django Packages - 2069 Atmosphere - 794 Python Packages - 37653 Npm Packages - 51269
  27. 27. Community
  28. 28. The team 12 core developers Got 11.2M$ investment in July 2012 Very large community
  29. 29. Who uses meteor? http://madewith.meteor.com/
  30. 30. How do I start?
  31. 31. Where to read? http://www.meteor.com/ http://www.discovermeteor.com/ https://www.eventedmind.com/ http://madewith.meteor.com/ https://trello.com/b/hjBDflxp/meteor-roadmap
  32. 32. Demo time !!! http://about.me/alexarsh http://www.slideshare.net/alexarsh/

×