Meteor is a modular platform for developing web and mobile applications in JavaScript based on the NodeJS platform.
Meteor is a modular platform for developing web and mobile applications in pure JavaScript (though other languages can be used as well). Meteor is built on one unifying idea: Servers should serve data, not HTML, to clients, and should push updates to clients whenever data changes. It should then be up to the client to decide how to render the data.
Meteor consists of multiple parts:
A framework of JavaScript modules, that aid developers in architectural decisions, building the communication layer between client and server or writing isomorphic code.
A set of packages from which the developer may pick and choose. A set of core packages are available that handle common tasks, such as watching a database for changes, or rerendering a HTML template as data changes. Furthermore, there are NPM packages available for integration on any target architecture (server, client, mobile).
A build tool (which includes the
meteor
cli), that picks up the project's code, Meteor packages, NPM packages and (optional) isobuild feature-packages to create a build output for multiple target architectures (server, client, mobile). For production the output is packed into a tarball that's ready to deploy. The tarball can be unpacked and run anywhere there's node.js.An integration for many popular frontend libraries, such as react, vue, angular or for Templating systems such as spacebars (based on Handlebars and released with Meteor 0.8), databases such as mongodb and languages such as typescript, coffeescript.
Core Meteor technologies :
Hot Code Push. When an application is redeployed, Meteor can transparently inject the update into each browser tab that has the application open, without losing the user's place in the application.
DDP. A simple protocol for publishing a set of JSON records (say, the current stories in user X's news feed, together with all comments on those stories), and then keeping that set up to date with create, update, and delete messages. DDP can run over Websockets or AJAX long polling, and supports transparent reconnection. Anything that speaks DDP can connect to a Meteor server (not just Meteor clients); Meteor clients can connect to any DDP server (not just their own Meteor server.)
Live page update engine. This is a layer that fits underneath any templating system (such as Handlebars or Jade) to make the rendered template automatically update in-place, no matter where it is inserted in the DOM. This is done by rendering a template in a context where its data accesses are recorded, then wiring up callbacks to track the location of the rendered DOM nodes and re-render the template if the data changes.
Latency compensation. When a user makes a change, their own screen can update immediately without waiting for the server. This is done by (optionally) executing the model update code on both the client and the server. Once the server has responded to the request, then if it executed differently there, the client state is patched up to match the server.
Smart Packages. Meteor packages are actually small JavaScript programs that are loaded at deploy time. By setting up callbacks using the bundler API, they can inject code into the client or the server, register new file extensions, precompile templates, preprocess source code, etc, allowing the package author to deliver a smoothly integrated experience. As of Meteor 1.3, npm became fully supported as well.
Official resources:
- Meteor project home page
- API documentation
- Meteor: The Official Guide
- Meteor forums - please use these for questions/discussions that are outside the scope of StackOverflow.
- Meteor community slack
- Source code and issue tracker on GitHub
- Atmosphere package repository
- Roadmap
- Meetup
- Hackpad (Note: this needs to be migrated to Dropbox Paper)
Additional Resources:
- TypeScript Guide
- Blaze Guide
- React Guide
- Vue Guide
- Angular Guide
- Meteor-up - one step deployment to custom infrastructure
Other Resources:
Please use these with care. Some of the resources may be outdated or may target an outdated Meteor version (< 2.0).
- Meteorpedia
- Evented Mind - video lessons and tutorials
- Discover Meteor - introductory textbook and manual
- TheMeteorChef - tutorials and essays on Meteor
- Pup - open source boiler plate. Created by Ryan Glover of The Meteor Chef.
Related
Older releases: