Meteor

1,028 views

Published on

Meteor 0.7 presentation

Published in: Technology
2 Comments
3 Likes
Statistics
Notes
No Downloads
Views
Total views
1,028
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
22
Comments
2
Likes
3
Embeds 0
No embeds

No notes for slide

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/

×