我花了一个月的时间来创建路由系统,但无法弄清楚如何使用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>