如何从Aurelia中的URL中删除#

Pra*_*jar 16 aurelia aurelia-router

任何人都可以逐步解释,我们如何从Aurelia的URL中删除#

Mir*_*vic 21

您正在寻找的功能称为PushState.您可以在Aurelia Hub的Cheat Sheet部分找到更多信息.只需向下滚动到Routing/ Configuring PushState.

  1. 基本标记添加到HTML文档的头部.我不认为这是必需的步骤,因为我的应用程序没有它.

  2. 如果您使用的是JSPM,请配置baseURL(在config.js文件中).

  3. 在路由器配置中启用PushState:

    export class App {
        configureRouter(config) {
            config.title = 'Aurelia';
            config.options.pushState = true; // <-- this line
            config.map([
                //... 
            ]);
        }
    }
Run Code Online (Sandbox Code Playgroud)
  1. 配置服务器以支持PushState.基本上,这意味着您的服务器应将所有未知路由/ URL重定向到主URL(Aurelia应用程序的地址index.html,/home/index......).

    此步骤取决于您使用的服务器端技术.即ASP.NET MVC,这就是你如何定义你的路由配置:

    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            // url: "{*pathinfo}" - this redirects all server side calls
            // to Home/Index (default route)
            // with this single change, HTML5 push state is enabled
            routes.MapRoute(
                name: "Default",
                url: "{*pathinfo}",
                defaults: new { 
                    controller = "Home", 
                    action = "Index", 
                    id = UrlParameter.Optional 
                }
            );
        }
    }
Run Code Online (Sandbox Code Playgroud)

编辑:Dwayne Charrington 在他的Discover Aurelia网站上有一篇关于PushState的好文章,他解释了如何在各种服务器端框架上配置PushState,如Apache,Nginx,.NET Core和Node.js Express.