как meanjs реализует панель администратора

meanjs использует angularjs для внешнего интерфейса mvc и является приложением SPA, поэтому, когда панель администратора отличается от страницы внешнего интерфейса, как лучше всего реализовать панель администратора? возможно две точки доступа?


person Jeremy    schedule 07.08.2014    source источник
comment
В MEANjs функции администратора состоят из двух частей. Бэкэнд ACL, который ограничивает вызовы API для пользователей с ролями администратора, а затем - ограничения угловой маршрутизации внешнего интерфейса, которые проверяют роли пользователя перед отображением страниц администратора. Вы хотели реализовать обе или только логику angular?   -  person Daniel Kobe    schedule 20.12.2015


Ответы (3)


Я тоже искал способ добиться этого и публикую здесь результат своего поиска. Сначала создайте новый модуль:

yo meanjs:angular-module admin
yo meanjs:angular-route adminHome
? Which module does this route belongs to? admin
? What do you want your route path to be? admin-home
? What do you want to call your view? admin-home
? What do you want to call your controller? AdminHome
   create public/modules/admin/config/admin.client.routes.js
   create public/modules/admin/controllers/admin-home.client.controller.js
   create public/modules/admin/tests/admin-home.client.controller.test.js
   create public/modules/admin/views/admin-home.client.view.html

После того, как вы сделали этот первый шаг, убедитесь, что при переходе: http://localhost:3000/#!/admin-home вы эффективно загружаете сгенерированное представление. Затем вы создаете свой экспресс-маршрут и контроллер:

yo meanjs:express-route admin
yo meanjs:express-controller admin

А теперь самое интересное. Идея состоит в том, чтобы указать Express загружать другой набор представлений макета, когда вы нажимаете /admin

//Content of app/controllers/admin.server.controller.js
'use strict';

exports.index = function(req, res){
    res.render('admin-index', {
        user: req.user || null,
        request: req
    });
};

//Content of app/routes/admin.server.routes.js
'use strict';

module.exports = function(app) {
    var admin = require('../../app/controllers/admin.server.controller');
    app.route('/admin').get(admin.index);
};

Копировать вставить:

app/views/index.server.view.html -> app/views/admin-index.server.view.html
app/views/layout.server.view.html ->app/views/admin-layout.server.view.html

Изменить app/views/admin-index.server.view.html:

{% extends 'admin-layout.server.view.html' %}

{% block content %}
    <section data-ui-view></section>
{% endblock %}

Изменить app/views/admin-layout.server.view.html:

[...]
{% for jsFile in jsFiles %}<script type="text/javascript" src="/{{jsFile}}"></script>{% endfor %}
[...]

Обратите внимание на "/" перед {{jsFile}}

Последнее прикосновение. Поскольку ваш браузер теперь загружает / admin вместо /, вам нужно указать ui-router, что путь к шаблонам является абсолютным, а не относительным.

//Content of public/modules/admin/config/admin.client.routes.js
'use strict';

//Setting up route
angular.module('admin').config(['$stateProvider',
    function($stateProvider) {
        // Admin state routing
        $stateProvider.
        state('admin-home', {
            url: '/admin-home',
            templateUrl: '/modules/admin/views/admin-home.client.view.html'
        });
    }
]);

Обратите внимание на "/" в начале содержимого templateUrl

Теперь проверьте свою административную зону, перейдя в http://localhost:3000/admin/#!/admin-home

person MaxouMask    schedule 13.04.2015
comment
Я даже не знал, что вы можете использовать генератор yo meanjs для создания маршрутов администратора. ЭТО действительно хороший способ сделать это. +1 - person Luke Kroon; 13.07.2016

Мне непонятен ваш вопрос. Если я прав, вы, вероятно, спросите, как прикрепить SPA к обычной веб-странице (дашборду). Если это так, вы можете добавить еще один логический путь для приложения AngularJS, после чего вы можете открыть приложение с отдельного логического URL-адреса. Например (../dashboard/angularApp)

Или, если вы спросите, как реализовать панель управления с помощью angularJS, вот чья-то работа, которую вы можете проверить.

https://github.com/nickholub/angular-dashboard-app

person KevinS    schedule 13.08.2014

Исходя из моего понимания вопроса, вам нужен серверный дашборд и "продажный" сайт.

Обычно я помещаю страницы панели инструментов в другой поддомен, а обычные страницы - в основной домен.

eg:

dashboard.mysite.com -> панель администратора

www.mysite.com -> страницы продаж, например, о нас, часто задаваемые вопросы и т. д.

person keithics    schedule 20.12.2015