On Github ibizz / ucll-workshop-meteor-slides
What is Meteor
Why Meteor
Structure of a Meteor application
Example: Chat application
Q & A
Full stack (both server- and client side)
MongoDB
WebSockets: Communication over DDP (Distributed Data Protocol)
Reactive
Code is shared between client and server
Node.js
meteor add-platform android meteor add-platform ios
meteor add-platform android meteor run android
meteor install-sdk android
meteor run android-device
To communicate with native elements of the device (camera, geolocation, ...) Cordova is used
Meteor wraps them in isomorphic packages (Camera, Geolocation, ...)
Running the following code will work both on the web and on mobile devices:
Geolocation.currentLocation()
On the web it will use the HTML 5 Geolocation API
On mobile devices it will use the native GPS using Cordova
Meteor is a full stack JavaScript framework
Back-end = Node.js
Front-end = Webbrowser
Code can be shared between both the back-end and front-end (for example models, utilities, ...)
Running on both mobile and web
Live updates (data changes will be visible immediately on all clients)
Hot deployment (both local and on the cloud)
Ultra responsive
Easy authentication with accounts-packages (+ easy integration with Twitter/Facebook OAuth)
DO use it when live updates are important
DO use it for new applications
DO use it for mobile applications
DON'T use it with existing data (unless it can be easily ported to MongoDB)
Model (MongoDB collection)
Client (MiniMongo, templates)
Server (Node.js)
Public (CSS, images)
Private (configuration)
Messages = new Mongo.Collection('messages');
Messages.insert({ message: "My message", time: new Date() });
The client side logic primarily contains templates, event handling and plain JavaScript
To actually change data, you use MiniMongo (it emulates a MongoDB database on the client)
Templates are written using Spacebars (template engine):
{{#if currentUser}} <h1>Welcome user</h1> {{/if}}
jQuery is allowed within templates