Meteor
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
849
On Slideshare
849
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
12
Comments
2
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Meteor Next Generation Web Development
  • 2. Why next generation? Lets check some history
  • 3. History
  • 4. History
  • 5. History
  • 6. History
  • 7. History
  • 8. Architecture
  • 9. Architecture WebSockets Fibers Scaling Real-Time MongoDB queries (v0.7)
  • 10. So what is Meteor? Full reactive stack: Client <—> Server <—> DB Javascript only Database Everywhere
  • 11. Wait, what about security???
  • 12. Wait, what about security??? AUTOPUBLISH INSECURE
  • 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. How it works? if (Meteor.isServer) { … } if (Meteor.isClient) { … }
  • 15. F****** long file
  • 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. Lets start from template <template name=“my_template”> … </template>
  • 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. 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. Reactive data Session.get(“locations"); {{ locations }} Session.set(“locations”, {…});
  • 21. Publish and subscribe Meteor.publish("locations", function () { return Locations.find({ "user._id": this.userId }); }); Meteor.subscribe("locations");
  • 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. That’s all the magic
  • 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. Packages accounts-ui jquery backbone less bootstrap underscore coffeescript d3
  • 26. Packages Django Packages - 2069 Atmosphere - 794 Python Packages - 37653 Npm Packages - 51269
  • 27. Community
  • 28. The team 12 core developers Got 11.2M$ investment in July 2012 Very large community
  • 29. Who uses meteor? http://madewith.meteor.com/
  • 30. How do I start?
  • 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. Demo time !!! http://about.me/alexarsh http://www.slideshare.net/alexarsh/