How exactly do you change pages? Meteor will reload the entire page if you use traditional anchor tags as an anchor tool.
For example, if you move between templates and use this structure:
<a href="/pathToTemplate">Let go to the new template!</a>
Meteor will reload the entire page because you are actually using the anchor tag to inform the browser about changing routes. However, if you use this structure:
<a href="{{pathFor 'yourTemplateName'}}">To the new template ahoy!</a>
The link will tell Iron Router that your template has changed for you and will only update the code that you have in the {{> yield}} area. In order to direct links to the necessary pages, make sure that you have placed everything indicated in the name:... field in your router in the 'yourTemplateName' section of the 'yourTemplateName' helper.
In short, the reason you get a full-blown browser update is most likely due to the fact that you are using a browser to jump between links instead of using the built-in Meteor and Iron Router helpers to calculate the logic for the transition. You can do a lot with this helper, and if you need more information, I would recommend checking out the Path and Link template helper section on the Iron Router Git page .
If you need only a certain part of the page to refresh, and the rest remains the same, I will refer to the answer of CodeChimp, as it is sound. If you need different layout templates for different things, the Layouts section should help you get a nice and dandy with your code, and maybe even make you crack a smirk as soon as the fighters steadily move away from the exploding building.
Another situation you may find is to use a link to perform an action, but you do not want the browser to capture the event and re-display the page. In this case, you would set up your HTML code as usual, and then target this element by receiving a click event, either by its name, class or tag, and using the following code structure in the javascript file that matches your template. This is useful for submitting forms that run the Meteor method, which does something on the server, and then returns the necessary data (usually to the redirect function), etc. Etc.
So, if you are on a crazyStuffIsAboutToHappen template and you want to call the Meteor method called doCrazyStuff when you click on the link with the identifier #triggerCrazyStuff and then Meteor redirects the user to theHouseThatCrazyStuffBuilt template, you should use the following structure.
Template.crazyStuffIsAboutToHappen.events( 'click #triggerCrazyStuff': (e) -> e.preventDefault()
And yes, the Template.TEMPLATE_NAME.events scope is also very handy for all other JS events like MouseEnter etc. etc.
Happy coding!