MEAN Stack,为什么用url中的#表示保持路由

时间:2015-07-18 02:31:52

标签: javascript node.js express mean

尝试用来支持结尾的东西。通过关注快递的思考者指南开始。想知道是否有人能为我清理一些东西。

首先,我了解前端和后端路由是不同的。据我所知,前端路由是针对用户体验(从一个页面到另一个页面),后端路由(例如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文件,它仍然这样做。

如果有人能解决我的困惑,我将非常感激!谢谢

2 个答案:

答案 0 :(得分:1)

路由网址的角度默认行为。

要从您的网址中删除主题标签,您需要将有角度的$ 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了解详情。

答案 1 :(得分:0)

Internet Explorer< 10不支持Html5历史api。 #在URL中,使用户能够使用浏览器按钮前进和后退。删除它会破坏IE中的此功能< 10.在更多人使用10岁以上之前,建议您将其保留下来。