{"id":17948899,"url":"https://github.com/blikblum/marionette.routing","last_synced_at":"2025-03-24T22:35:41.901Z","repository":{"id":12616995,"uuid":"72369415","full_name":"blikblum/marionette.routing","owner":"blikblum","description":"State based router for MarionetteJS","archived":false,"fork":false,"pushed_at":"2022-12-03T00:08:01.000Z","size":1721,"stargazers_count":21,"open_issues_count":24,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-29T09:14:00.278Z","etag":null,"topics":["backbone","marionettejs","router"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blikblum.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-10-30T19:08:55.000Z","updated_at":"2020-05-06T13:23:26.000Z","dependencies_parsed_at":"2023-01-11T20:19:08.831Z","dependency_job_id":null,"html_url":"https://github.com/blikblum/marionette.routing","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blikblum%2Fmarionette.routing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blikblum%2Fmarionette.routing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blikblum%2Fmarionette.routing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blikblum%2Fmarionette.routing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blikblum","download_url":"https://codeload.github.com/blikblum/marionette.routing/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245366205,"owners_count":20603438,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backbone","marionettejs","router"],"created_at":"2024-10-29T09:10:34.046Z","updated_at":"2025-03-24T22:35:36.880Z","avatar_url":"https://github.com/blikblum.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Marionette Routing\n\n[![NPM version](http://img.shields.io/npm/v/marionette.routing.svg?style=flat-square)](https://www.npmjs.com/package/marionette.routing)\n[![NPM downloads](http://img.shields.io/npm/dm/marionette.routing.svg?style=flat-square)](https://www.npmjs.com/package/marionette.routing)\n[![Build Status](http://img.shields.io/travis/blikblum/marionette.routing.svg?style=flat-square)](https://travis-ci.org/blikblum/marionette.routing)\n[![Coverage Status](https://img.shields.io/coveralls/blikblum/marionette.routing.svg?style=flat-square)](https://coveralls.io/github/blikblum/marionette.routing)\n[![Dependency Status](http://img.shields.io/david/dev/blikblum/marionette.routing.svg?style=flat-square)](https://david-dm.org/blikblum/marionette.routing#info=devDependencies)\n\n\u003e An advanced router for MarionetteJS applications\n\n### Features\n\n\u0026nbsp; \u0026nbsp; ✓ Nested routes / states / rendering\u003cbr\u003e\n\u0026nbsp; \u0026nbsp; ✓ Handle asynchronous operations\u003cbr\u003e\n\u0026nbsp; \u0026nbsp; ✓ Lazy loading of routes with code splitting\u003cbr\u003e\n\u0026nbsp; \u0026nbsp; ✓ Expose route events through [Radio](https://github.com/marionettejs/backbone.radio)\u003cbr\u003e\n\u0026nbsp; \u0026nbsp; ✓ Implement route context for scoped messaging\u003cbr\u003e\n\u0026nbsp; \u0026nbsp; ✓ API interface semantics similar to MarionetteJS one\u003cbr\u003e\n\u0026nbsp; \u0026nbsp; ✓ Inherits most of [Cherrytree](https://github.com/QubitProducts/cherrytree) features\u003cbr\u003e\n\n\n### Installation\n\n    $ npm install --save marionette.routing\n\nRequires MarionetteJS v4+, Radio v2+, underscore v1.8+ as peer dependencies\n\nRequires a ES6 Promise implementation attached in window (native or polyfill)\n\n### Usage\n\nDefine a Route class\n\n```js\nimport {Route} from 'marionette.routing';\nimport {Contacts} from '../entities';\nimport ContactsView from './view';\n\nexport default Route.extend({\n  activate(){\n    const contactsPromise = Radio.channel('api').request('getContactList');\n    return contactsPromise.then(contactsData =\u003e {\n      this.contacts = new Contacts(contactsData)\n    });\n  },\n\n  viewClass: ContactsView,\n\n  viewOptions() {\n    return {\n      contacts: this.contacts\n    }\n  }\n})\n\n```\n\nConfigure and start the router\n\n```js\nimport { Router } from 'marionette.routing';\nimport ContactsRoute from './contacts/route';\nimport LoginView from './login/view';\nimport Mn from 'backbone.marionette';\nimport Radio from 'backbone.radio';\n\n//create the router\nlet router = new Router(\n  { log: true, logError: true }, // options passed to Cherrytree\n  '#main' // the element / Marionette Region where the root routes will be rendered\n);\n\n//define the routes\nrouter.map(function (route) {\n  route('application', {path: '/', abstract: true}, function () {\n    route('contacts', {routeClass: ContactsRoute})\n    route('login', {viewClass: LoginView})\n  })\n});\n\n//start listening to URL changes\nrouter.listen();\n\n//listen to events using Radio\nRadio.channel('router').on('before:activate', function(transition, route) {\n  let isAuthenticate = checkAuth();\n  if (!isAuthenticate \u0026\u0026 route.requiresAuth) {\n    transition.redirectTo('login');\n  }\n})\n```\n\n### Documentation\n\n* API\n  * [Router Configuration](docs/configuration.md)\n  * [Route Class](docs/route.md)\n  * [Events](docs/events.md)\n  * [RouterLink](docs/routerlink.md)\n* Guides\n  * [Route lazy loading](docs/lazyload.md)\n  * [Managing authorization](docs/authorization.md)\n  * [Handling errors](docs/errors.md)\n\n### Examples\n\n * [Contact Manager](https://github.com/blikblum/marionette-contact-manager) Fully functional example. Read the [tutorial](http://jsroad.blogspot.com.br/2016/11/tutorial-contact-manager-application.html)\n * [Marionette Wires Revisited](https://github.com/blikblum/marionette-wires-revisited)\n\n### Related Projects\n\n* [Cherrytree](https://github.com/QubitProducts/cherrytree) — The router library used by Marionette Routing under the hood \n\n\n### License\n\nCopyright © 2016 Luiz Américo Pereira Câmara. This source code is licensed under the MIT license found in\nthe [LICENSE.txt](https://github.com/blikblum/marionette.routing/blob/master/LICENSE.txt) file.\nThe documentation to the project is licensed under the [CC BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)\nlicense.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblikblum%2Fmarionette.routing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblikblum%2Fmarionette.routing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblikblum%2Fmarionette.routing/lists"}