如何使用JavaScript和PHP在自己的自定义路由系统中删除#符号?

时间:2018-07-24 09:03:25

标签: javascript routing router

我花了一个月的时间来创建路由系统,但无法弄清楚如何使用JavaScript和PHP从网址中删除

我发现的解决方案仅涵盖ASP.net。

这也是创建路由系统的正确方法吗?

请注意,我没有使用任何库或框架。

我的代码:

  var routes = {};
  var listeners = [];

  var ctx = {
    refresh: function (listeners) {
      listeners.forEach(function (fn) { 
        fn(); 
      });
    }
  };

  function route (path, templateId, controller) {
        routes[path] = {
            templateId: templateId,
            onRefresh: listeners.push.bind(listeners)
          };
  }

  function router () {
    var el =  document.getElementById('view');
    var url = location.hash.slice(1) || '/';
    var route = routes[url] || routes['*'];
      route.onRefresh(function () {
        el.innerHTML = route.templateId;
      });
      ctx.refresh(listeners)
  }

 this.addEventListener('hashchange', router);
 this.addEventListener('load', router);

route('/', 'home', function () {});
route('/page1', 'template1 1111111111111 ', function () {});
route('/page2', 'template2', function () {});
route('*', 'error404', function () {});

HTML:

  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#/page1">Page 1</a></li>
    <li><a href="#/page2">Page 2</a></li>
  </ul>
  <div id="view"></div>

0 个答案:

没有答案