【问题标题】:MEAN Stack, Why does express keep routing with a # in the urlMEAN Stack,为什么 express 会在 url 中使用 # 进行路由
【发布时间】:2015-10-07 20:19:08
【问题描述】:

试图习惯于后端的东西。从遵循关于 express 的 thinkster 指南开始。想知道是否有人可以为我清理一些东西。

首先,我了解前端和后端路由是不同的。据我了解,前端路由是为了用户体验(从一个页面到另一个页面),而后端路由(例如 router.get(~~~))用于 API 调用和与数据库的交互。为什么会这样

router.get('/', function(req, res, next) {
  res.render('index');
});

最初加载第一页的内容是什么?

其次,我的前端路由是这样的

app.config([
'$stateProvider',
'$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {

    $stateProvider
        .state('home', {
            url: '/',
            templateUrl: '/home.html',
            controller: 'MainCtrl'
        })

    $urlRouterProvider.otherwise('home');
}
]);

但是,每当我运行我的服务器并转到 localhost:3000 时,它会自动将我转到 localhost:3000/#/ 并在那里提供内容。我知道 thinkster 指南使用内联模板,但我试图只使用单独的 html 文件,而且它仍在这样做。

如果有人能解开我的困惑,我将不胜感激!谢谢

【问题讨论】:

    标签: javascript node.js express mean


    【解决方案1】:

    这是 Angular 路由 url 的默认行为。

    要从您的网址中删除主题标签,您需要将 angular 的 $locationProvider 的 html5Mode 设置为 true

    app.config([
    '$stateProvider',
    '$urlRouterProvider',$locationProvider, 
    function($stateProvider, $urlRouterProvider, $locationProvider) {
    
        $stateProvider
            .state('home', {
                url: '/',
                templateUrl: '/home.html',
                controller: 'MainCtrl'
            })
    
        $urlRouterProvider.otherwise('home');
    
        $locationProvider.html5Mode(true);
    
    }
    ])
    

    查看此article 了解更多信息。

    【讨论】:

      【解决方案2】:

      Internet Explorer

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-24
        • 1970-01-01
        • 2015-10-05
        • 2015-07-20
        • 2018-07-02
        • 1970-01-01
        • 2016-05-28
        • 2016-11-19
        相关资源
        最近更新 更多