Backbone 101: Routes
by kyllle
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.2.2/backbone-min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/3.0.3/normalize.css">
<nav>
<a href="/" class="js-link">Home</a>
<a href="/about" class="js-link">About</a>
<a href="/about/123" class="js-link">About 123</a>
<a href="/contact" class="js-link">Contact</a>
</nav>
SCSS
@import url(http://fonts.googleapis.com/css?family=Roboto:300,400,500);
* {
-webkit-font-smoothing: antialiased;
}
body {
font-family: Roboto;
padding: 16px;
line-height: 1.5;
font-weight: normal;
color: #ccc;
background: #292929;
font-size: 18px;
}
h1, h2, h3 {
font-weight: normal;
}
.pg-heading {
margin-bottom: 0;
}
a {
color: #95baf6;
transition: opacity .3s;
&:hover {
opacity: 0.75;
}
}
JavaScript
console.clear();
// Check console.
// Create a router
var router = new (Backbone.Router.extend({
routes: {
'': 'showHome',
'movies(/:id)': 'showMovies'
},
showHome: function() {
console.log('Show Home')
},
showMovies: function(id) {
console.log('Show Movies', id);
}
}));
var newView = new NewView;
(function() {
Backbone.history.start();
$('.js-link').on('click', function(event) {
event.preventDefault();
var $clickedEl = $(event.currentTarget),
clickedHref = $clickedEl.attr('href');
router.navigate(clickedHref, {trigger:true});
});
})();