Advertisement
Guest User

Untitled

a guest
Feb 27th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. const Router = (function () {
  2. "use strict";
  3.  
  4. /**
  5. * @routes
  6. * get or set routes
  7. */
  8. var routes = [];
  9.  
  10. /**
  11. * @addRoute
  12. * add new Route logic
  13. */
  14. function addRoute(route, handler) {
  15. routes.push({parts: route.split('/'), handler: handler});
  16. }
  17. /**
  18. * @load
  19. * load router content from hash url
  20. */
  21. function load(route) {
  22. window.location.hash = route;
  23. }
  24.  
  25. /**
  26. * @init
  27. * routing the content with hash location params
  28. */
  29. function init() {
  30. const path = window.location.hash.substr(1),
  31. parts = path.split('/'),
  32. partsLength = parts.length;
  33.  
  34. for (let i = 0; i < routes.length; i++) {
  35. const route = routes[i];
  36. if (route.parts.length === partsLength) {
  37. var params = [];
  38. for (var j = 0; j < partsLength; j++) {
  39. if (route.parts[j].substr(0, 1) === ':') {
  40. params.push(parts[j]);
  41. } else if (route.parts[j] !== parts[j]) {
  42. break;
  43. }
  44. }
  45. if (j === partsLength) {
  46. route.handler.apply(undefined, params);
  47. return;
  48. }
  49. }
  50. }
  51. }
  52.  
  53. window.onhashchange = init;
  54.  
  55. return {
  56. addRoute,
  57. load,
  58. init
  59. };
  60. }());
  61.  
  62. export default Router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement