{"action":"created","comment":{"url":"https://api.github.com/repos/meteor/guide/pulls/comments/46650897","id":46650897,"diff_hunk":"@@ -0,0 +1,446 @@\n+---\n+title: \"Meteor Guide: Routing\"\n+---\n+\n+After reading this guide, you'll know:\n+\n+1. What role URLs play in a client-rendered app, and how it's different from a traditional server-rendered app\n+2. How to define client and server routes for your app using Flow Router\n+3. How to have your app display different content depending on the URL\n+4. How to construct links to routes and go to routes programmatically\n+\n+## Client-side Routing\n+\n+In a web application, _routing_ is the process of using URLs to drive the user interface (UI). URLs are a prominent feature in every single web browser, and have several main functions from the user's point of view:\n+\n+1. **Bookmarking** - Users can bookmark URLs in their web browser to save content they want to come back to later\n+2. **Sharing** - Users can share content with others by sending a link to a certain page\n+3. **Navigation** - URLs are used to drive the web browser's back/forward functions\n+\n+In a traditional web application stack, where the server renders HTML one page at a time, the URL is the fundamental entry point for the user to access the application. Users navigate an application by clicking through URLs, which are sent to the server via HTTP, and the server responds appropriately via a server-side router.\n+\n+In contrast, Meteor operates on the principle of _data on the wire_, where the server doesn’t think in terms of URLs or HTML pages. The client application communicates with the server over DDP. Typically as an application loads, it boots up with a series of _subscriptions_ which fetch the data required to render the application. As the user interacts with the application, different subscriptions may load, but there’s no technical need for URLs to be involved in this process.\n+\n+However, most of the user-facing features of URLs listed above are still relevant for typical Meteor applications. Now that the server is not URL-driven, the URL just becomes a useful representation of the client-side state the user is currently looking at. However, unlike in a server-rendered application, it does not need to describe the entirety of the user’s current state; it simply needs to contain the parts that you want to be linkable. For example, the URL should contain any search filters applied on a page, but not necessarily the state of a dropdown menu or popup.\n+\n+## Using Flow Router\n+\n+To add routing to your app, install the [`kadira:flow-router`](https://atmospherejs.com/kadira/flow-router) package:\n+\n+```\n+meteor add kadira:flow-router\n+```\n+\n+Flow Router is a community routing package for Meteor. At the time of writing this guide, it is at version 2.x.\n+\n+- [Flow Router on GitHub](https://github.com/kadirahq/flow-router)\n+- [Kadira Meteor routing guide](https://kadira.io/academy/meteor-routing-guide)\n+\n+### Other options for routing\n+\n+Flow Router is one of several popular routing packages for Meteor. Another is iron:router. You can search for router on Atmosphere to find more. Hopefully, the concepts in this routing guide will be relevant no matter which router you use, as long as it provides basic functions for URL management.\n+\n+## Defining a simple route\n+\n+The basic purpose of a router is to match certain URLs and perform actions as a result. This all happens on the client side, in the app user's browser. Let's take an example from the Todos example app:\n+\n+```js\n+FlowRouter.route('/lists/:_id', {\n+  name: 'listsShow',\n+  action: () => {\n+    console.log(\"Looking at a list?\")\n+  }\n+});\n+```\n+\n+This route handler will run in two situations: if the page loads initially at a URL that matches the URL pattern, and if the URL changes to one that matches the pattern while the page is open. Note that, unlike in a server-side-rendered app, the URL can change without any additional requests to the server.\n+\n+When the route is matched, the `action` method executes, and you can perform any actions you need to. The `name` property of the route is optional, but will let us refer to this route more conveniently later on.\n+\n+### URL pattern matching\n+\n+Consider the following URL pattern, used in the code snippet above:\n+\n+```js\n+'/lists/:_id'\n+```\n+\n+The above pattern will match certain URLs. You may notice that part of the URL is prefixed by `:` - this means that it is a *url parameter*, and will match any string that is present in that segment of the path. Flow Router will make that part of the URL available as a `param` of the current URL match.\n+\n+Additionally, the URL could contain an HTTP [**query string**](https://en.wikipedia.org/wiki/Query_string) (the part after an optional `?`). If so, Flow Router will also split it up into named parameters, which it calls `queryParams`.\n+\n+\n+Here are some example URLs and the resulting `params` and `queryParams`:\n+\n+| URL           | matches pattern? | params          | queryParams\n+| ---- | ---- | ---- | ---- |\n+| /             | no | | |\n+| /about        | no | | |\n+| /lists/        | no | | |\n+| /lists/eMtGij5AFESbTKfkT | yes | { _id: \"eMtGij5AFESbTKfkT\"} |  { }\n+| /lists/1 | yes | { _id: \"1\"} | { }\n+| /lists/1?todoSort=top | yes | { _id: \"1\"} | { todoSort: \"top\" }\n+\n+\n+Note that all of the values in `params` and `queryParams` are always strings since URLs don't have any way of encoding data types. For example, if you wanted a parameter to represent a number, you might need to use `parseInt(value, 10)` to convert it when you access it.\n+\n+## Accessing Route information\n+\n+Flow Router makes a variety of information available via (reactive and otherwise) functions on the global singleton `FlowRouter` (this is the same object that we attached routes to above). As the user navigates around your app, the values of these functions will change (reactively in some cases) correspondingly.\n+\n+Like any other global singleton in your application (see the X article for info about stores), it's best to limit your access to `FlowRouter`. That way the parts of your app with remain modular and more independent. In the case of `FlowRouter`, it's best to access it solely from the top of your component hierarchy, either in the \"page\" component, or the layouts that wrap it (see below).\n+\n+### The current route\n+\n+To access the current route, you can use `FlowRouter.current()`. This is a object representing all aspects of the route, and as it changes often it is not reactive. \n+\n+Often it's more useful to access just exactly what parts of the route you care about. Here are some useful reactive functions you can call:\n+\n+* `FlowRouter.getRouteName()` gets the name of the route\n+* `FlowRouter.getParam(paramName)` returns the value of a single URL parameter\n+* `FlowRouter.getQueryParam(paramName)` returns the value of a single URL query parameter\n+\n+So in our example of the list page form the Todos app, we access the current list's id with `FlowRouter.getParam('_id')` (we'll see more on this below).\n+\n+### Highlighting the active route\n+\n+One situation where it is sensible to access the global `FlowRouter` singleton to access the current route's information deeper in the component hierarchy is when rendering links via a navigation component. It's often required to highlight the \"active\" route in some way (this is the route or section of the site that the user is currently looking at).\n+\n+A convenient package for this is [`zimme:active-route`](https://github.com/zimme/meteor-active-route):\n+\n+```bash\n+meteor add zimme:active-route\n+```\n+\n+In the Todos example app, we link to each list the user knows about in the `appBody` template:\n+\n+```blaze\n+{{#each list in lists}}\n+  <a class=\"list-todo {{activeListClass list}}\">\n+    ...\n+\n+    {{list.name}}\n+  </a>\n+{{/each}}\n+```\n+\n+We can determine if the user is currently viewing the list with the `activeListClass` helper:\n+\n+```js\n+Template.appBody.helpers({\n+  activeListClass(list) {\n+    const active = ActiveRoute.name('listsShow')\n+      && FlowRouter.getParam('_id') === list._id;\n+\n+    return active && 'active';\n+  }\n+});\n+```\n+\n+## Rendering based on the route\n+\n+Now we understand how to define routes and access information about the current route, we are in a position to do you usually want to do when a user accesses a route---render a user interface to the screen that represents it.\n+\n+*In this section, we'll discuss how to render routes using Blaze as the UI engine. If you are building your app with React or Angular, you will end up with similar concepts but the code will not be exactly the same.*\n+\n+When using Flow Router, the simplest way to display different views on the page for different URLs is to use the complementary Blaze Layout package. First, make sure you have the Blaze Layout package installed:\n+\n+```bash\n+meteor add kadira:blaze-layout\n+```\n+\n+To use this package, we need to render a \"layout\" component by default. In the Todos example app, that template is called `appBody`:\n+\n+```blaze\n+<template name=\"appBody\">\n+  ...\n+  {{> Template.dynamic template=main}}\n+  ...\n+</template>\n+```\n+\n+(This is not the entire `appBody` template, but we highlight the most important part here). \n+Here, we are using a Blaze feature called `Template.dynamic` to render a template who is attached to the the `main` argument to the template. Using Blaze Layout, we can change that `main` argument when a route is accessed.\n+\n+We do that by changing the `action` function of our `listShow` route definition:\n+\n+```js\n+FlowRouter.route('/lists/:_id', {\n+  name: 'listsShow',\n+  action: () => {\n+    BlazeLayout.render('appBody', {main: 'listsShowPage'});\n+  }\n+});\n+```\n+\n+What this means is that whenever a user visits a URL of the form `/lists/X`, the `listShow` route will kick in, triggering the `BlazeLayout` call to set the `main` property of the `appBody` template.\n+\n+### Templates as pages vs. Templates as reusable components\n+\n+Notice that we called the template to be rendered `listsShowPage` (rather than `listShow`). This indicates that this template is rendered directly by a Flow Router action and forms the 'top' of the rendering hierarchy for this URL.\n+\n+The `listShowPage` template will render *without* arguments---it is this template's responsibility to collect information from the current route, and then pass this information down into its child templates. Correspondingly the `listShowPage` template is very tied to it's environment (the route it's rendered under), and so it needs to be a smart component (see the article on {% link_to 'ui-ux' 'UI/UX'} for more about smart and pure components).\n+\n+It makes sense for a \"page\" smart component like `listShowPage` to:\n+\n+1. Collect route information,\n+2. Subscribe to relevant subscriptions,\n+3. Fetch the data from those subscriptions, and\n+4. Pass that data into a sub-component\n+\n+In this case, the `listShowPage` template simply renders as:\n+\n+```blaze\n+<template name=\"listsShowPage\">\n+  {{#each list in listArray}}\n+    {{> listsShow todosReady=Template.subscriptionsReady list=list}}\n+  {{/each}}\n+</template>\n+```\n+\n+(The `{{#each}}` is a animation technique that we also discuss in the {% link_to 'ui-ux' 'UI/UX Article'}). \n+\n+It's the `listShow` template (a pure component) that actually handles the job of rendering the content of the page. As the page component is passing the arguments into the pure component, it is able to be quite mechanical and the concerns of talking to the router and rendering the page have been separated.\n+\n+### Route related rendering logic\n+\n+There are examples of rendering logic that seems very related to the route, for which it can be difficult to know where to implement. A classic example is authorization; for instance, you may want to render a login form for some subset of your pages if the user is not yet logged in.\n+\n+It's best to keep all logic around what to render in the component hierarchy (i.e. the tree of rendered templates). So this authorization should happen inside a template. Suppose we wanted to add this to the `listShowPage` we were looking at above. We could do something like:\n+\n+```blaze\n+<template name=\"listsShowPage\">\n+  {{#if currentUser}}\n+    {{#each list in listArray}}\n+      {{> listsShow todosReady=Template.subscriptionsReady list=list}}\n+    {{/each}}\n+  {{else}}\n+    Please log in to edit posts.\n+  {{/if}}\n+</template>\n+```\n+\n+Of course, we might start finding that we need to share this functionality between the multiple pages of our app that have access control required. However, we can share functionality between templates---by wrapping them in a wrapper \"layout\" template which includes the behaviour we want. \n+\n+You can create wrapper templates by using the \"template as block helper\" ability of Blaze (see the {% link_to 'blaze' Blaze Article %}). So we can write an authorization template:\n+\n+```blaze\n+<template name=\"forceLoggedIn\">\n+  {{#if currentUser}}\n+    {{> Template.contentBlock}}\n+  {{else}}\n+    Please log in to edit posts.\n+  {{/if}}\n+</template>\n+```\n+\n+Once that template exists, we can simply wrap our `listsShowPage`:\n+\n+```blaze\n+<template name=\"listsShowPage\">\n+  {{#forceLoggedIn}}\n+    {{#each list in listArray}}\n+      {{> listsShow todosReady=Template.subscriptionsReady list=list}}\n+    {{/each}}\n+  {{/forceLoggedIn}}\n+</template>\n+```\n+\n+A chief advantage of this approach is that it is immediately clear when viewing the `listShowPage` what behaviour will occur when a user visits the page.\n+\n+Multiple behaviours of this type can be composed by wrapping a template in multiple wrappers, or wrapping the wrappers themselves.\n+\n+## Changing Routes\n+\n+Rendering an updated UI when a user reaches a new route is obviously not that useful without giving the user some way to reach a new route! The simplest way is with the trusty `<a>` tag and a URL. You can generate the URLs yourself using `FlowRouter.pathFor`, but it is more convenient to use the [`arillo:flow-router-helpers`](https://github.com/arillo/meteor-flow-router-helpers/) package that defines some helpers for you:\n+\n+\n+```\n+meteor add arillo:flow-router-helpers\n+```\n+\n+Now that you have this package, you can use helpers in your templates to display a link to a certain route. For example, in the Todos example app, our nav links look like:\n+\n+\n+```html\n+<a href=\"{{pathFor 'listsShow' _id=list._id}}\" title=\"{{list.name}}\"\n+    class=\"list-todo {{activeListClass list}}\">\n+```\n+\n+### Routing programmatically\n+\n+In some cases you want to change routes based on user action outside of them clicking on a link. For instance, in the example app, when a user creates a new list, we want to route them to the list they just created. We do this by calling `FlowRouter.go()` once we know the id of the new list:\n+\n+```js\n+Template.appBody.events({\n+  'click .js-new-list'() {\n+    const listId = Lists.methods.insert.call();\n+    FlowRouter.go('listsShow', { _id: listId });\n+  }\n+});\n+```\n+\n+You can also simply change part of the URL, using the `FlowRouter.setParams()` and `FlowRouter.setQueryParams()`. For instance, if we were viewing one list and wanted to go to another, we could write:\n+\n+```js\n+FlowRouter.setParams({_id: newList._id});\n+```\n+\n+Of course, it is more general to call `FlowRouter.go()`, so unless you are being very specific in what you are doing it's usually better to use that.\n+\n+### Storing data in the URL\n+\n+As we discussed in the introduction, the URL is really just a serialization of some part of the client-side state the user is looking at. Although parameters can only be strings, it's possible to convert any type of data to a string via serializing it.\n+\n+In general if you want to store arbitrary serializable data in a URL param, you can use `EJSON.stringify()` to turn it onto a string. You'll need to URL-encode the string as well to remove any characters that have meaning in a URL:\n+\n+```js\n+FlowRouter.setQueryParams({data: encodeURIComponent(EJSON.stringify(data))});\n+```\n+\n+You can then get the data back out of Flow Router in the opposite way (note that Flow Router unescapes the dat for you automatically):\n+\n+```js\n+const data = EJSON.parse(FlowRouter.getQueryParam('data'));\n+```\n+\n+## Redirecting\n+\n+Sometimes, your users will end up on a page that isn't the best place for them to be. Maybe the data they were looking for has moved, maybe they were on an admin panel page and logged out, or maybe they just created a new object and you want them to end up on the page for the thing they just created.\n+\n+Usually, we can redirect in response to a user's action by calling `FlowRouter.go()` and friends, like in our list creation example above, but if a user browses directly to a URL that doesn't exist, it's useful to know how to redirect immediately.\n+\n+If a URL is simply out-of-date (sometimes you can the URL scheme of an application), you can redirect inside the `action` function of the route:\n+\n+```js\n+FlowRouter.route('/old-list-route/:_id', {\n+  action(params) {\n+    FlowRouter.go('listsShow', params);\n+  }\n+});\n+```\n+\n+### Redirecting dynamically\n+\n+If however, you need some data to redirect, you'll need to render part of the component hierarchy, as that is the place where data subscribing happens. For example, in the Todos example app, we want to make the root (`/`) route redirect to the first known list. To achieve this, we need to render a special `rootRedirector` route:\n+\n+```js\n+FlowRouter.route('/', {\n+  name: 'home',\n+  action: () => {\n+    BlazeLayout.render('appBody', {main: 'rootRedirector'});\n+  }\n+});\n+```\n+\n+Because the `rootRedirector` template is rendered inside the `appBody` layout which takes care of subscribing to the set of lists the user knows about *before* rendering it's sub-template, and we are guaranteed there is at least one such list, we can simply do:\n+\n+```js\n+Template.rootRedirector.onCreated(() => {\n+  // We need to set a timeout here so that we don't redirect from inside a redirection\n+  //   which is a no-no in FR.\n+  Meteor.setTimeout(() => {\n+    FlowRouter.go('listsShow', Lists.findOne());\n+  });\n+});\n+```\n+\n+### Redirecting after a user's action\n+\n+Often, you just want to go to a new route programmatically when a user has completed a certain action. Above we saw a case (creating a new list) when we wanted to do it *optimistically*---i.e. before we hear back from the server that the Method succeeded. We can do this because we reasonably expect that the Method will succeed in almost all cases (see the {% link_to 'ui-ux' 'UI/UX article'} for further discussion of this).\n+\n+However, if we wanted to wait for the method to return for the server, we can put the redirection in the callback of the method:\n+\n+```js\n+Template.appBody.events({\n+  'click .js-new-list'() {\n+    Lists.methods.insert.call((err, listId) => {\n+      if (!err) {\n+        FlowRouter.go('listsShow', { _id: listId });  \n+      }\n+    });\n+  }\n+});\n+```\n+\n+You will also want to show some kind of status while the method is working so that the user knows there is something going on between them clicking the button and the redirect happening (and show the error some kind of message if the error is there too).\n+\n+## Advanced Routing\n+\n+### Missing pages\n+\n+If a user types an incorrect URL, chances are you want to show them some kind of amusing not found page. There are actually two categories of \"not found\" pages. The first is when the URL typed in doesn't match any of your route definitions. You can use `FlowRouter.notFound()` to handle this:\n+\n+```js\n+// the appNotFound template is used for unknown routes and missing lists\n+FlowRouter.notFound = {\n+  action() {\n+    BlazeLayout.render('appBody', {main: 'appNotFound'});\n+  }\n+};\n+```\n+\n+The second is when the URL is valid, but doesn't actually match any data. Here we","path":"content/new-routing.md","position":null,"original_position":383,"commit_id":"12fe68ca930c1addd36a4f9c5d5cff9acbff5cb3","original_commit_id":"fa71930d16565cf4aee44625e56ac350efa0b8cf","user":{"login":"tmeasday","id":132554,"avatar_url":"https://avatars.githubusercontent.com/u/132554?v=3","gravatar_id":"","url":"https://api.github.com/users/tmeasday","html_url":"https://github.com/tmeasday","followers_url":"https://api.github.com/users/tmeasday/followers","following_url":"https://api.github.com/users/tmeasday/following{/other_user}","gists_url":"https://api.github.com/users/tmeasday/gists{/gist_id}","starred_url":"https://api.github.com/users/tmeasday/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tmeasday/subscriptions","organizations_url":"https://api.github.com/users/tmeasday/orgs","repos_url":"https://api.github.com/users/tmeasday/repos","events_url":"https://api.github.com/users/tmeasday/events{/privacy}","received_events_url":"https://api.github.com/users/tmeasday/received_events","type":"User","site_admin":false},"body":":+","created_at":"2015-12-04T05:39:36Z","updated_at":"2015-12-04T05:39:36Z","html_url":"https://github.com/meteor/guide/pull/108#discussion_r46650897","pull_request_url":"https://api.github.com/repos/meteor/guide/pulls/108","_links":{"self":{"href":"https://api.github.com/repos/meteor/guide/pulls/comments/46650897"},"html":{"href":"https://github.com/meteor/guide/pull/108#discussion_r46650897"},"pull_request":{"href":"https://api.github.com/repos/meteor/guide/pulls/108"}}},"pull_request":{"url":"https://api.github.com/repos/meteor/guide/pulls/108","id":52032956,"html_url":"https://github.com/meteor/guide/pull/108","diff_url":"https://github.com/meteor/guide/pull/108.diff","patch_url":"https://github.com/meteor/guide/pull/108.patch","issue_url":"https://api.github.com/repos/meteor/guide/issues/108","number":108,"state":"open","locked":false,"title":"Routing content","user":{"login":"tmeasday","id":132554,"avatar_url":"https://avatars.githubusercontent.com/u/132554?v=3","gravatar_id":"","url":"https://api.github.com/users/tmeasday","html_url":"https://github.com/tmeasday","followers_url":"https://api.github.com/users/tmeasday/followers","following_url":"https://api.github.com/users/tmeasday/following{/other_user}","gists_url":"https://api.github.com/users/tmeasday/gists{/gist_id}","starred_url":"https://api.github.com/users/tmeasday/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tmeasday/subscriptions","organizations_url":"https://api.github.com/users/tmeasday/orgs","repos_url":"https://api.github.com/users/tmeasday/repos","events_url":"https://api.github.com/users/tmeasday/events{/privacy}","received_events_url":"https://api.github.com/users/tmeasday/received_events","type":"User","site_admin":false},"body":"<a href='#crh-start'></a><a href='#crh-data-%7B%22processed%22%3A%20%5B%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46103176%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46240931%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46240945%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46240964%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46241008%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46241023%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46241037%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46241084%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46241131%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46241157%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46241200%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46241209%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46241239%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46247725%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46247737%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46247774%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46248010%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46248053%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46248096%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46248142%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46248174%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46248237%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46290589%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46323592%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46323632%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46323688%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46380226%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46380229%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46380317%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46380349%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46380394%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46380396%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46380416%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46380440%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46380447%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46454345%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46454385%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46459211%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46459669%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46464354%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46509255%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46509260%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46509323%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46509357%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46527108%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46527113%22%2C%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46527229%22%5D%2C%20%22comments%22%3A%20%7B%22Pull%20fa71930d16565cf4aee44625e56ac350efa0b8cf%20content/new-routing.md%2041%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46240945%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22I%20think%20we%20should%20be%20a%20little%20more%20forceful%20here%20to%20say%20that%20really%20you%20should%20really%20be%20using%20Flow%20Router%20unless%20you%20have%20a%20good%20reason%20not%20to.%22%2C%20%22created_at%22%3A%20%222015-12-01T05%3A14%3A08Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20just%20cut%20this%20bit%20out.%20I%20think%20it%27s%20more%20in%20line%20with%20our%20policy%20in%20the%20guide.%22%2C%20%22created_at%22%3A%20%222015-12-02T06%3A11%3A06Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-02T06%3A11%3A10Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/new-routing.md%3AL1-447%22%7D%2C%20%22Pull%20fa71930d16565cf4aee44625e56ac350efa0b8cf%20content/new-routing.md%2095%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46241008%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Should%20we%20even%20talk%20about%20%60current%60%3F%20Where%20would%20you%20even%20use%20it%3F%22%2C%20%22created_at%22%3A%20%222015-12-01T05%3A15%3A49Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Yeah%2C%20we%20shouldn%27t.%22%2C%20%22created_at%22%3A%20%222015-12-01T07%3A42%3A24Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-02T06%3A13%3A14Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/new-routing.md%3AL1-447%22%7D%2C%20%22Pull%20fa71930d16565cf4aee44625e56ac350efa0b8cf%20content/new-routing.md%2050%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46240964%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22This%20should%20be%20%60action%28%29%20%7B%20...%20%7D%60.%20Using%20arrow%20functions%20as%20object%20properties%20is%20actually%20a%20lot%20more%20typing.%22%2C%20%22created_at%22%3A%20%222015-12-01T05%3A14%3A37Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-02T06%3A12%3A26Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20don%27t%20see%20this%20actually%20got%20changed.%22%2C%20%22created_at%22%3A%20%222015-12-02T18%3A35%3A17Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22In%20his%20last%20commit%2C%20it%20looks%20like%20it%20was%20changed%3A%20https%3A//github.com/meteor/guide/commit/63055c313562e29fd8e97cb0964db9d4f602ed0f%23diff-78e5e59bc4e54f9fd23edeca8488a375L50.%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A08%3A44Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/8175744%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/zodern%22%7D%7D%2C%20%7B%22body%22%3A%20%22Oh%2C%20OK%20-%20in%20this%20case%2C%20there%20are%20a%20lot%20more%20places%20to%20change%3B%20go%20to%20https%3A//github.com/meteor/guide/pull/108/files%5Cr%5Cn%5Cr%5Cnand%20Cmd-F%20for%20%60%28%29%20%3D%3E%60%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A42%3A49Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Oh%2C%20right.%20Yeah%20I%20changed%20it%20in%20the%20app%20but%20not%20in%20the%20snippets.%20Whoops%22%2C%20%22created_at%22%3A%20%222015-12-03T03%3A29%3A26Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-03T03%3A29%3A31Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/new-routing.md%3AL1-447%22%7D%2C%20%22Pull%20fa71930d16565cf4aee44625e56ac350efa0b8cf%20content/new-routing.md%20313%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46241131%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22I%20think%20you%20accidentally%20a%20word.%22%2C%20%22created_at%22%3A%20%222015-12-01T05%3A19%3A47Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Is%20this%20a%20joke%20where%20you%20accidentally%20left%20out%20a%20word%20of%20the%20sentence%20where%20you%20told%20me%20I%20left%20out%20a%20word%3F%20If%20so%2C%20it%20was%20a%20good%20one%20%3B%29%22%2C%20%22created_at%22%3A%20%222015-12-01T07%3A48%3A05Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3AP%22%2C%20%22created_at%22%3A%20%222015-12-01T19%3A13%3A40Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-02T06%3A14%3A53Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/new-routing.md%3AL1-447%22%7D%2C%20%22Pull%20fa71930d16565cf4aee44625e56ac350efa0b8cf%20content/new-routing.md%20154%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46241084%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22I%20usually%20use%20%60html%60%20for%20the%20language%20on%20these.%22%2C%20%22created_at%22%3A%20%222015-12-01T05%3A18%3A17Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Yeah%2C%20I%27m%20not%20sure.%20We%20could%20add%20highlighting%20for%20blaze%20conceptually.%20%40yyx990803%20-%20what%20do%20you%20think%3F%22%2C%20%22created_at%22%3A%20%222015-12-01T07%3A47%3A26Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22some%20highlighters%20support%20%60handlebars%60%2C%20so%20one%20could%20copy-paste%20and%20tweak%20those%3F%22%2C%20%22created_at%22%3A%20%222015-12-01T15%3A21%3A45Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/2608446%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/Slava%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20don%27t%20think%20it%27s%20worth%20it%3F%20Honestly%20I%27ve%20been%20using%20HTML%20highlightling%20in%20my%20editor/code%20samples%20for%20the%20last%202%20years%20and%20it%20was%20fine.%22%2C%20%22created_at%22%3A%20%222015-12-01T19%3A13%3A25Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Replaced%20%60blaze%60%20with%20%60html%60.%22%2C%20%22created_at%22%3A%20%222015-12-02T06%3A14%3A24Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-02T06%3A14%3A28Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/new-routing.md%3AL1-447%22%7D%2C%20%22Pull%20fa71930d16565cf4aee44625e56ac350efa0b8cf%20content/new-routing.md%20427%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46103176%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Hmmm.%20I%20think%20to%20do%20it%20properly%20you%20probably%20end%20up%20with%20something%20like%20https%3A//github.com/mystor/meteor-routecore.%20Hmm%20another%20Routing%20library.%20Great%20%3B%29%22%2C%20%22created_at%22%3A%20%222015-11-30T01%3A39%3A58Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20thought%20FlowRouter%20had%20SSR%20support%3F%22%2C%20%22created_at%22%3A%20%222015-12-01T05%3A22%3A45Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3E%20FlowRouter%203.0%20will%20have%20server%20side%20rendering%20support.%20We%27ve%20already%20started%20the%20initial%20version%20and%20check%20our%20ssr%20branch%20for%20that.%5Cr%5Cn%5Cr%5CnI%27m%20not%20sure%20what%20hacks%20are%20involved%20to%20make%20%60Meteor.subscribe%60%20et%20al%20work%20on%20the%20server%20but%20it%20sort%20of%20scares%20me.%22%2C%20%22created_at%22%3A%20%222015-12-01T07%3A50%3A07Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22Yeah%20I%20mean%20let%27s%20just%20call%20out%20some%20hacks%20and%20say%20%5C%22SSR%20with%20Meteor%20is%20not%20really%20easy%20right%20now%2C%20maybe%20coming%20soon.%20If%20you%20figure%20out%20a%20great%20solution%2C%20let%20us%20know%20and%20we%27ll%20document%20it%20here.%5C%22%22%2C%20%22created_at%22%3A%20%222015-12-03T09%3A09%3A27Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/new-routing.md%3AL1-447%22%7D%2C%20%22Pull%20fa71930d16565cf4aee44625e56ac350efa0b8cf%20content/new-routing.md%20372%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46241200%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22It%27s%20technically%20not%20%60FlowRouter.notFound%28%29%60%20since%20it%27s%20not%20a%20function%2C%20right%3F%22%2C%20%22created_at%22%3A%20%222015-12-01T05%3A21%3A40Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-02T06%3A15%3A36Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/new-routing.md%3AL1-447%22%7D%2C%20%22Pull%20fa71930d16565cf4aee44625e56ac350efa0b8cf%20content/new-routing.md%20340%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46241157%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Weird%20-%20is%20this%20a%20bug%2C%20or%20a%20normal%20thing%3F%22%2C%20%22created_at%22%3A%20%222015-12-01T05%3A20%3A40Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20asked%20Arunoda%20about%20it.%20He%20says%20you%20won%27t%20need%20to%20do%20it%20in%20the%20next%20version.%20So%20a%20bug/limitation%20I%20guess%3F%22%2C%20%22created_at%22%3A%20%222015-12-01T07%3A48%3A38Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20feel%20like%20we%20should%20add%20a%20note%20about%20that%20here.%22%2C%20%22created_at%22%3A%20%222015-12-01T19%3A14%3A07Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Is%20this%20better%3F%22%2C%20%22created_at%22%3A%20%222015-12-02T06%3A15%3A26Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20suspect%20you%20forgot%20to%20push%20your%20changes.%22%2C%20%22created_at%22%3A%20%222015-12-02T18%3A35%3A39Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22It%27s%20actually%20there%20in%20the%20last%20commit%3A%20https%3A//github.com/meteor/guide/commit/63055c313562e29fd8e97cb0964db9d4f602ed0f%23diff-78e5e59bc4e54f9fd23edeca8488a375R336.%20%22%2C%20%22created_at%22%3A%20%222015-12-02T19%3A11%3A59Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/8175744%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/zodern%22%7D%7D%2C%20%7B%22body%22%3A%20%22Yeah%2C%20I%27m%20not%20sure%20why%20you%20can%27t%20see%20this%3F%22%2C%20%22created_at%22%3A%20%222015-12-03T03%3A30%3A47Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%28Oh%2C%20I%20mean%20maybe%20it%27s%20just%20below%20this%20%3Apoint_down%3A%29%22%2C%20%22created_at%22%3A%20%222015-12-03T03%3A31%3A26Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%3Ca%20href%3D%27%23crh-update-none%27%3E%3C/a%3E%22%2C%20%22created_at%22%3A%20%222015-12-03T09%3A08%3A12Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/new-routing.md%3AL1-447%22%7D%2C%20%22Pull%20fa71930d16565cf4aee44625e56ac350efa0b8cf%20content/new-routing.md%20107%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46241023%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Doesn%27t%20this%20mean%20that%20potentially%20a%20lot%20of%20components%20will%20be%20de-purified%20as%20a%20result%3F%20Perhaps%20components%20with%20links%20in%20them%20are%20screwed%20anyway.%22%2C%20%22created_at%22%3A%20%222015-12-01T05%3A16%3A32Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22For%20example%2C%20another%20pattern%20could%20involve%20generating%20links%20higher%20up%20and%20passing%20them%20down%3F%20I%20dunno%20what%20the%20pros%20and%20cons%20are.%22%2C%20%22created_at%22%3A%20%222015-12-01T05%3A17%3A02Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22You%20actually%20tend%20to%20only%20need%20to%20know%20the%20active%20route%20in%20a%20few%20places%20in%20your%20app%20%28typically%20the%20nav%29.%20So%20it%27s%20not%20so%20bad.%20For%20the%20same%20reason%20you%20could%20be%20pure%20about%20it%2C%20although%20it%27s%20a%20big%20pain.%5Cr%5Cn%5Cr%5CnGenerating%20links%20is%20a%20huge%20problem%20with%20%5C%22purity%5C%22.%5Cr%5Cn%5Cr%5CnThe%20thing%20is%20that%20a%20link%20href%20is%20conceptually%20just%20an%20event%20handler.%20There%27s%20no%20problem%20with%20using%20global%20singletons%20in%20event%20handlers.%20So%20one%20solution%20would%20be%20to%20not%20actually%20use%20the%20href%2C%20and%20to%20use%20a%20click%20event%20instead%20%28but%20this%20is%20crap%2C%20because%20links%20are%20good%21%29%5Cr%5Cn%5Cr%5CnIt%27s%20actually%20not%20%2Aso%2A%20bad%20because%20the%20route%20map%20is%20static.%20So%20although%20it%27s%20global%2C%20it%27s%20not%20stateful.%20Like%20it%27s%20really%20just%20like%20calling%20out%20to%20a%20library%20for%20rendering%20%28the%20%5C%22router%20%2B%20route%20map%5C%22%20is%20the%20library%20in%20this%20case%29.%5Cr%5Cn%5Cr%5CnI%20don%27t%20think%20we%20are%20pure%20enough%20in%20Meteor%20yet%20to%20get%20into%20these%20concepts%20though%20%3A%29%20Maybe%20we%27ll%20get%20there%3F%22%2C%20%22created_at%22%3A%20%222015-12-01T07%3A46%3A35Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%3Ca%20href%3D%27%23crh-update-complete%27%3E%3C/a%3E%22%2C%20%22created_at%22%3A%20%222015-12-03T09%3A08%3A14Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/new-routing.md%3AL1-447%22%7D%2C%20%22Pull%20fa71930d16565cf4aee44625e56ac350efa0b8cf%20content/new-routing.md%20383%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46241209%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Missing%20sentence%3F%22%2C%20%22created_at%22%3A%20%222015-12-01T05%3A21%3A58Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%22Oh%20yeah%2C%20I%20mean%20there%27s%20a%20code%20todo%20there%2C%20I%27ll%20finish%20the%20sentence%20once%20that%27s%20done%20%3A%29%22%2C%20%22created_at%22%3A%20%222015-12-01T07%3A49%3A08Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/new-routing.md%3AL1-447%22%7D%2C%20%22Pull%20fa71930d16565cf4aee44625e56ac350efa0b8cf%20content/new-routing.md%2034%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/meteor/guide/pull/108%23discussion_r46240931%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Is%20this%20version%20number%20still%20correct%3F%22%2C%20%22created_at%22%3A%20%222015-12-01T05%3A13%3A30Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/448783%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/stubailo%22%7D%7D%2C%20%7B%22body%22%3A%20%222.10.0%22%2C%20%22created_at%22%3A%20%222015-12-01T07%3A41%3A48Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%2C%20%7B%22body%22%3A%20%22%3A%2B1%3A%20%22%2C%20%22created_at%22%3A%20%222015-12-01T07%3A41%3A52Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/132554%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tmeasday%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20content/new-routing.md%3AL1-447%22%7D%7D%7D'></a>\n<a href='https://www.codereviewhub.com/'><img src='http://www.codereviewhub.com/site/github-bar.png' height=40></a>\n- [ ] <a href='#crh-comment-Pull fa71930d16565cf4aee44625e56ac350efa0b8cf content/new-routing.md 427'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/108#discussion_r46103176'>File: content/new-routing.md:L1-447</a></b>\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Hmmm. I think to do it properly you probably end up with something like https://github.com/mystor/meteor-routecore. Hmm another Routing library. Great ;)\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I thought FlowRouter had SSR support?\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> > FlowRouter 3.0 will have server side rendering support. We've already started the initial version and check our ssr branch for that.\nI'm not sure what hacks are involved to make `Meteor.subscribe` et al work on the server but it sort of scares me.\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Yeah I mean let's just call out some hacks and say \"SSR with Meteor is not really easy right now, maybe coming soon. If you figure out a great solution, let us know and we'll document it here.\"\n- [ ] <a href='#crh-comment-Pull fa71930d16565cf4aee44625e56ac350efa0b8cf content/new-routing.md 383'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/108#discussion_r46241209'>File: content/new-routing.md:L1-447</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Missing sentence?\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Oh yeah, I mean there's a code todo there, I'll finish the sentence once that's done :)\n- [x] <a href='#crh-comment-Pull fa71930d16565cf4aee44625e56ac350efa0b8cf content/new-routing.md 34'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/108#discussion_r46240931'>File: content/new-routing.md:L1-447</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Is this version number still correct?\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> 2.10.0\n- [x] <a href='#crh-comment-Pull fa71930d16565cf4aee44625e56ac350efa0b8cf content/new-routing.md 41'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/108#discussion_r46240945'>File: content/new-routing.md:L1-447</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I think we should be a little more forceful here to say that really you should really be using Flow Router unless you have a good reason not to.\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> I just cut this bit out. I think it's more in line with our policy in the guide.\n- [x] <a href='#crh-comment-Pull fa71930d16565cf4aee44625e56ac350efa0b8cf content/new-routing.md 50'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/108#discussion_r46240964'>File: content/new-routing.md:L1-447</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> This should be `action() { ... }`. Using arrow functions as object properties is actually a lot more typing.\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> :+1:\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I don't see this actually got changed.\n- <a href='https://github.com/zodern'><img border=0 src='https://avatars.githubusercontent.com/u/8175744?v=3' height=16 width=16'></a> In his last commit, it looks like it was changed: https://github.com/meteor/guide/commit/63055c313562e29fd8e97cb0964db9d4f602ed0f#diff-78e5e59bc4e54f9fd23edeca8488a375L50.\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Oh, OK - in this case, there are a lot more places to change; go to https://github.com/meteor/guide/pull/108/files\nand Cmd-F for `() =>`\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Oh, right. Yeah I changed it in the app but not in the snippets. Whoops\n- [x] <a href='#crh-comment-Pull fa71930d16565cf4aee44625e56ac350efa0b8cf content/new-routing.md 95'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/108#discussion_r46241008'>File: content/new-routing.md:L1-447</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Should we even talk about `current`? Where would you even use it?\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Yeah, we shouldn't.\n- [x] <a href='#crh-comment-Pull fa71930d16565cf4aee44625e56ac350efa0b8cf content/new-routing.md 107'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/108#discussion_r46241023'>File: content/new-routing.md:L1-447</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Doesn't this mean that potentially a lot of components will be de-purified as a result? Perhaps components with links in them are screwed anyway.\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> For example, another pattern could involve generating links higher up and passing them down? I dunno what the pros and cons are.\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> You actually tend to only need to know the active route in a few places in your app (typically the nav). So it's not so bad. For the same reason you could be pure about it, although it's a big pain.\nGenerating links is a huge problem with \"purity\".\nThe thing is that a link href is conceptually just an event handler. There's no problem with using global singletons in event handlers. So one solution would be to not actually use the href, and to use a click event instead (but this is crap, because links are good!)\nIt's actually not *so* bad because the route map is static. So although it's global, it's not stateful. Like it's really just like calling out to a library for rendering (the \"router + route map\" is the library in this case).\nI don't think we are pure enough in Meteor yet to get into these concepts though :) Maybe we'll get there?\n- [x] <a href='#crh-comment-Pull fa71930d16565cf4aee44625e56ac350efa0b8cf content/new-routing.md 154'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/108#discussion_r46241084'>File: content/new-routing.md:L1-447</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I usually use `html` for the language on these.\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Yeah, I'm not sure. We could add highlighting for blaze conceptually. @yyx990803 - what do you think?\n- <a href='https://github.com/Slava'><img border=0 src='https://avatars.githubusercontent.com/u/2608446?v=3' height=16 width=16'></a> some highlighters support `handlebars`, so one could copy-paste and tweak those?\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I don't think it's worth it? Honestly I've been using HTML highlightling in my editor/code samples for the last 2 years and it was fine.\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Replaced `blaze` with `html`.\n- [x] <a href='#crh-comment-Pull fa71930d16565cf4aee44625e56ac350efa0b8cf content/new-routing.md 313'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/108#discussion_r46241131'>File: content/new-routing.md:L1-447</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I think you accidentally a word.\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Is this a joke where you accidentally left out a word of the sentence where you told me I left out a word? If so, it was a good one ;)\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> :P\n- [x] <a href='#crh-comment-Pull fa71930d16565cf4aee44625e56ac350efa0b8cf content/new-routing.md 340'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/108#discussion_r46241157'>File: content/new-routing.md:L1-447</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> Weird - is this a bug, or a normal thing?\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> I asked Arunoda about it. He says you won't need to do it in the next version. So a bug/limitation I guess?\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I feel like we should add a note about that here.\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Is this better?\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> I suspect you forgot to push your changes.\n- <a href='https://github.com/zodern'><img border=0 src='https://avatars.githubusercontent.com/u/8175744?v=3' height=16 width=16'></a> It's actually there in the last commit: https://github.com/meteor/guide/commit/63055c313562e29fd8e97cb0964db9d4f602ed0f#diff-78e5e59bc4e54f9fd23edeca8488a375R336.\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> Yeah, I'm not sure why you can't see this?\n- <a href='https://github.com/tmeasday'><img border=0 src='https://avatars.githubusercontent.com/u/132554?v=3' height=16 width=16'></a> (Oh, I mean maybe it's just below this :point_down:)\n- [x] <a href='#crh-comment-Pull fa71930d16565cf4aee44625e56ac350efa0b8cf content/new-routing.md 372'></a> <img src='http://www.codereviewhub.com/site/github-completed.png' height=16 width=60>&nbsp;<b><a href='https://github.com/meteor/guide/pull/108#discussion_r46241200'>File: content/new-routing.md:L1-447</a></b>\n- <a href='https://github.com/stubailo'><img border=0 src='https://avatars.githubusercontent.com/u/448783?v=3' height=16 width=16'></a> It's technically not `FlowRouter.notFound()` since it's not a function, right?\n\n\n<a href='https://www.codereviewhub.com/meteor/guide/pull/108?mark_as_completed=1'><img src='http://www.codereviewhub.com/site/github-mark-as-completed.png' height=26></a>&nbsp;<a href='https://www.codereviewhub.com/meteor/guide/pull/108?approve=1'><img src='http://www.codereviewhub.com/site/github-approve.png' height=26></a>&nbsp;<a href='https://github.com/meteor/guide/pull/108'><img src='http://www.codereviewhub.com/site/github-refresh.png' height=26></a>\n<a href='#crh-end'></a>","created_at":"2015-11-28T04:12:54Z","updated_at":"2015-12-04T05:39:36Z","closed_at":null,"merged_at":null,"merge_commit_sha":"372a8fa8e36b200d28335a6b38f1079e37fa4ce4","assignee":{"login":"stubailo","id":448783,"avatar_url":"https://avatars.githubusercontent.com/u/448783?v=3","gravatar_id":"","url":"https://api.github.com/users/stubailo","html_url":"https://github.com/stubailo","followers_url":"https://api.github.com/users/stubailo/followers","following_url":"https://api.github.com/users/stubailo/following{/other_user}","gists_url":"https://api.github.com/users/stubailo/gists{/gist_id}","starred_url":"https://api.github.com/users/stubailo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stubailo/subscriptions","organizations_url":"https://api.github.com/users/stubailo/orgs","repos_url":"https://api.github.com/users/stubailo/repos","events_url":"https://api.github.com/users/stubailo/events{/privacy}","received_events_url":"https://api.github.com/users/stubailo/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/meteor/guide/pulls/108/commits","review_comments_url":"https://api.github.com/repos/meteor/guide/pulls/108/comments","review_comment_url":"https://api.github.com/repos/meteor/guide/pulls/comments{/number}","comments_url":"https://api.github.com/repos/meteor/guide/issues/108/comments","statuses_url":"https://api.github.com/repos/meteor/guide/statuses/12fe68ca930c1addd36a4f9c5d5cff9acbff5cb3","head":{"label":"meteor:routing-content","ref":"routing-content","sha":"12fe68ca930c1addd36a4f9c5d5cff9acbff5cb3","user":{"login":"meteor","id":789528,"avatar_url":"https://avatars.githubusercontent.com/u/789528?v=3","gravatar_id":"","url":"https://api.github.com/users/meteor","html_url":"https://github.com/meteor","followers_url":"https://api.github.com/users/meteor/followers","following_url":"https://api.github.com/users/meteor/following{/other_user}","gists_url":"https://api.github.com/users/meteor/gists{/gist_id}","starred_url":"https://api.github.com/users/meteor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/meteor/subscriptions","organizations_url":"https://api.github.com/users/meteor/orgs","repos_url":"https://api.github.com/users/meteor/repos","events_url":"https://api.github.com/users/meteor/events{/privacy}","received_events_url":"https://api.github.com/users/meteor/received_events","type":"Organization","site_admin":false},"repo":{"id":43717321,"name":"guide","full_name":"meteor/guide","owner":{"login":"meteor","id":789528,"avatar_url":"https://avatars.githubusercontent.com/u/789528?v=3","gravatar_id":"","url":"https://api.github.com/users/meteor","html_url":"https://github.com/meteor","followers_url":"https://api.github.com/users/meteor/followers","following_url":"https://api.github.com/users/meteor/following{/other_user}","gists_url":"https://api.github.com/users/meteor/gists{/gist_id}","starred_url":"https://api.github.com/users/meteor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/meteor/subscriptions","organizations_url":"https://api.github.com/users/meteor/orgs","repos_url":"https://api.github.com/users/meteor/repos","events_url":"https://api.github.com/users/meteor/events{/privacy}","received_events_url":"https://api.github.com/users/meteor/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/meteor/guide","description":"How do I use Meteor? (Work in progress)","fork":false,"url":"https://api.github.com/repos/meteor/guide","forks_url":"https://api.github.com/repos/meteor/guide/forks","keys_url":"https://api.github.com/repos/meteor/guide/keys{/key_id}","collaborators_url":"https://api.github.com/repos/meteor/guide/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/meteor/guide/teams","hooks_url":"https://api.github.com/repos/meteor/guide/hooks","issue_events_url":"https://api.github.com/repos/meteor/guide/issues/events{/number}","events_url":"https://api.github.com/repos/meteor/guide/events","assignees_url":"https://api.github.com/repos/meteor/guide/assignees{/user}","branches_url":"https://api.github.com/repos/meteor/guide/branches{/branch}","tags_url":"https://api.github.com/repos/meteor/guide/tags","blobs_url":"https://api.github.com/repos/meteor/guide/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/meteor/guide/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/meteor/guide/git/refs{/sha}","trees_url":"https://api.github.com/repos/meteor/guide/git/trees{/sha}","statuses_url":"https://api.github.com/repos/meteor/guide/statuses/{sha}","languages_url":"https://api.github.com/repos/meteor/guide/languages","stargazers_url":"https://api.github.com/repos/meteor/guide/stargazers","contributors_url":"https://api.github.com/repos/meteor/guide/contributors","subscribers_url":"https://api.github.com/repos/meteor/guide/subscribers","subscription_url":"https://api.github.com/repos/meteor/guide/subscription","commits_url":"https://api.github.com/repos/meteor/guide/commits{/sha}","git_commits_url":"https://api.github.com/repos/meteor/guide/git/commits{/sha}","comments_url":"https://api.github.com/repos/meteor/guide/comments{/number}","issue_comment_url":"https://api.github.com/repos/meteor/guide/issues/comments{/number}","contents_url":"https://api.github.com/repos/meteor/guide/contents/{+path}","compare_url":"https://api.github.com/repos/meteor/guide/compare/{base}...{head}","merges_url":"https://api.github.com/repos/meteor/guide/merges","archive_url":"https://api.github.com/repos/meteor/guide/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/meteor/guide/downloads","issues_url":"https://api.github.com/repos/meteor/guide/issues{/number}","pulls_url":"https://api.github.com/repos/meteor/guide/pulls{/number}","milestones_url":"https://api.github.com/repos/meteor/guide/milestones{/number}","notifications_url":"https://api.github.com/repos/meteor/guide/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/meteor/guide/labels{/name}","releases_url":"https://api.github.com/repos/meteor/guide/releases{/id}","created_at":"2015-10-05T22:26:02Z","updated_at":"2015-12-04T02:35:31Z","pushed_at":"2015-12-04T05:39:33Z","git_url":"git://github.com/meteor/guide.git","ssh_url":"git@github.com:meteor/guide.git","clone_url":"https://github.com/meteor/guide.git","svn_url":"https://github.com/meteor/guide","homepage":"http://guide.meteor.com/","size":3770,"stargazers_count":390,"watchers_count":390,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":27,"mirror_url":null,"open_issues_count":68,"forks":27,"open_issues":68,"watchers":390,"default_branch":"master"}},"base":{"label":"meteor:master","ref":"master","sha":"ad5984bcbc10b9d83fa949bc17cd252ba44d8bef","user":{"login":"meteor","id":789528,"avatar_url":"https://avatars.githubusercontent.com/u/789528?v=3","gravatar_id":"","url":"https://api.github.com/users/meteor","html_url":"https://github.com/meteor","followers_url":"https://api.github.com/users/meteor/followers","following_url":"https://api.github.com/users/meteor/following{/other_user}","gists_url":"https://api.github.com/users/meteor/gists{/gist_id}","starred_url":"https://api.github.com/users/meteor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/meteor/subscriptions","organizations_url":"https://api.github.com/users/meteor/orgs","repos_url":"https://api.github.com/users/meteor/repos","events_url":"https://api.github.com/users/meteor/events{/privacy}","received_events_url":"https://api.github.com/users/meteor/received_events","type":"Organization","site_admin":false},"repo":{"id":43717321,"name":"guide","full_name":"meteor/guide","owner":{"login":"meteor","id":789528,"avatar_url":"https://avatars.githubusercontent.com/u/789528?v=3","gravatar_id":"","url":"https://api.github.com/users/meteor","html_url":"https://github.com/meteor","followers_url":"https://api.github.com/users/meteor/followers","following_url":"https://api.github.com/users/meteor/following{/other_user}","gists_url":"https://api.github.com/users/meteor/gists{/gist_id}","starred_url":"https://api.github.com/users/meteor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/meteor/subscriptions","organizations_url":"https://api.github.com/users/meteor/orgs","repos_url":"https://api.github.com/users/meteor/repos","events_url":"https://api.github.com/users/meteor/events{/privacy}","received_events_url":"https://api.github.com/users/meteor/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/meteor/guide","description":"How do I use Meteor? (Work in progress)","fork":false,"url":"https://api.github.com/repos/meteor/guide","forks_url":"https://api.github.com/repos/meteor/guide/forks","keys_url":"https://api.github.com/repos/meteor/guide/keys{/key_id}","collaborators_url":"https://api.github.com/repos/meteor/guide/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/meteor/guide/teams","hooks_url":"https://api.github.com/repos/meteor/guide/hooks","issue_events_url":"https://api.github.com/repos/meteor/guide/issues/events{/number}","events_url":"https://api.github.com/repos/meteor/guide/events","assignees_url":"https://api.github.com/repos/meteor/guide/assignees{/user}","branches_url":"https://api.github.com/repos/meteor/guide/branches{/branch}","tags_url":"https://api.github.com/repos/meteor/guide/tags","blobs_url":"https://api.github.com/repos/meteor/guide/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/meteor/guide/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/meteor/guide/git/refs{/sha}","trees_url":"https://api.github.com/repos/meteor/guide/git/trees{/sha}","statuses_url":"https://api.github.com/repos/meteor/guide/statuses/{sha}","languages_url":"https://api.github.com/repos/meteor/guide/languages","stargazers_url":"https://api.github.com/repos/meteor/guide/stargazers","contributors_url":"https://api.github.com/repos/meteor/guide/contributors","subscribers_url":"https://api.github.com/repos/meteor/guide/subscribers","subscription_url":"https://api.github.com/repos/meteor/guide/subscription","commits_url":"https://api.github.com/repos/meteor/guide/commits{/sha}","git_commits_url":"https://api.github.com/repos/meteor/guide/git/commits{/sha}","comments_url":"https://api.github.com/repos/meteor/guide/comments{/number}","issue_comment_url":"https://api.github.com/repos/meteor/guide/issues/comments{/number}","contents_url":"https://api.github.com/repos/meteor/guide/contents/{+path}","compare_url":"https://api.github.com/repos/meteor/guide/compare/{base}...{head}","merges_url":"https://api.github.com/repos/meteor/guide/merges","archive_url":"https://api.github.com/repos/meteor/guide/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/meteor/guide/downloads","issues_url":"https://api.github.com/repos/meteor/guide/issues{/number}","pulls_url":"https://api.github.com/repos/meteor/guide/pulls{/number}","milestones_url":"https://api.github.com/repos/meteor/guide/milestones{/number}","notifications_url":"https://api.github.com/repos/meteor/guide/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/meteor/guide/labels{/name}","releases_url":"https://api.github.com/repos/meteor/guide/releases{/id}","created_at":"2015-10-05T22:26:02Z","updated_at":"2015-12-04T02:35:31Z","pushed_at":"2015-12-04T05:39:33Z","git_url":"git://github.com/meteor/guide.git","ssh_url":"git@github.com:meteor/guide.git","clone_url":"https://github.com/meteor/guide.git","svn_url":"https://github.com/meteor/guide","homepage":"http://guide.meteor.com/","size":3770,"stargazers_count":390,"watchers_count":390,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":27,"mirror_url":null,"open_issues_count":68,"forks":27,"open_issues":68,"watchers":390,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/meteor/guide/pulls/108"},"html":{"href":"https://github.com/meteor/guide/pull/108"},"issue":{"href":"https://api.github.com/repos/meteor/guide/issues/108"},"comments":{"href":"https://api.github.com/repos/meteor/guide/issues/108/comments"},"review_comments":{"href":"https://api.github.com/repos/meteor/guide/pulls/108/comments"},"review_comment":{"href":"https://api.github.com/repos/meteor/guide/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/meteor/guide/pulls/108/commits"},"statuses":{"href":"https://api.github.com/repos/meteor/guide/statuses/12fe68ca930c1addd36a4f9c5d5cff9acbff5cb3"}}}}