Вопрос:

Сделать 2 модуля в 1 проекте

javascript angularjs express angular-ui-router mean-stack

39 просмотра

1 ответ

1529 Репутация автора

У меня есть mean-stackпроект. По моему index.js, у меня в конце

router.get('*', function(req, res) {
    res.sendfile('./views/index.html');
})
module.exports = router;

Теперь я хочу , чтобы лечить все веб - страницы , соответствующие https://localhost:3000/1/addin/*по ./views/addinIndex.html, где я ожидаю , чтобы обратиться к различным внешним файлам и определить различные модули. Таким образом, я добавляю еще один router.get:

router.get('/1/addin/*', function (req, res) {
    res.sendfile('./views/addinIndex.html')
})
router.get('*', function(req, res) {
    res.sendfile('./views/index.html');
})
module.exports = router;

И вот addinIndex.html:

<html>
<head>
    <script src="https://code.jquery.com/jquery.min.js"></script>
    <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.2/angular-ui-router.js"></script>
    <script> 
        jQuery(document).ready(function () {
            angular.bootstrap(document, ['app']);
            console.log("bootstrapped")
        })
        app = angular.module('app', ['ui.router'])
        app.config(['$stateProvider', function($stateProvider) {
            $stateProvider
                .state('addinHome1', {
                    url: '/1/addin/home',
                    template: 'addinHome1'
                })
                .state('addinHome2', {
                    url: '/addin/home',
                    template: 'addinHome2'
                })
                .state('addinHome3', {
                    url: '/home',
                    template: 'addinHome3'
                })
        }])
    </script>
</head>
<body>
    abcde
    <ui-view ng-cloak></ui-view>
</body>
</html>

Однако, когда я запускаю https://localhost:3000/1/addin/home, он показывает abcdeи больше ничего, пока bootstrappedпечатается в консоли.

Кто-нибудь знает в чем дело? Могу ли я определить дополнительный, addinIndex.htmlкак это, если у меня уже есть работа index.html?

Автор: SoftTimur Источник Размещён: 02.01.2018 03:32

Ответы (1)


0 плюса

522 Репутация автора

Да, можно обслуживать разные индексы в зависимости от маршрута. Но для этого вы должны удалить #из URL.

Для этого выполните следующие действия.

  1. Мы будем использовать модуль $ locationProvider и установить для html5Mode значение true.

    // use the HTML5 History API
    $locationProvider.html5Mode(true);
    
  2. Чтобы связать ваше приложение с помощью относительных ссылок, вам нужно будет указать в вашем документе. Добавьте ниже код в вашем угловом конфиге.

    <base href="/">
    
Автор: Kapil Barad Размещён: 02.01.2018 04:48
Вопросы из категории :
32x32