AngularJs с Ionic, Cordova, Node.js, представлениями и другими «статическими» файлами

0

Полное раскрытие, довольно новое для Angular и Ionic, и я пытаюсь понять это концептуально и получить представление о лучших практиках, чтобы я не получил себя дальше по дороге.

Я создал веб-сайты и приложения на основе vanilla html/css/js в сочетании с back.ws и jquery mobile для пользовательского интерфейса приложения.

В тех случаях, когда требовалась веб-служба/бэкэнд, я в основном использовал файлы.ejs и частичные части для представлений и обслуживал их с использованием ответов res.render (динамически передавая данные в представление), например...

    app.get('/showallcustomers', function(req, res){
        db.connect("SELECT * from customers", [], function(result, error){
             var data = result.rows;
             res.render('pages/showall', {data:data})      
        });
    });

... при использовании S3 для моих статических JS/CSS/изображений и т.д., чтобы облегчить загрузку веб-службы node.js в отношении статических ресурсов.

Другие запросы, сделанные через ajax, будут просто отправлять/получать json с сервера node.js.

Теперь, с угловыми js и разделением проблем, с видом, отдельным от контроллера и данных, я пытаюсь найти лучшее место для "хозяина" или для обслуживания своих представлений и контроллеров.

В случае приложения, в комплекте с кордорой, я мог бы легко оставить все эти угловые виды/контроллеры в корневой папке www приложения и упаковать их с помощью приложения (немного похоже на гигантский "page" driven index.html файл для jQuery mobile), но могу ли я вместо этого использовать cdn, например S3, для моих "статических" файлов, таких как угловые файлы view.html и файлы controller.js? Или даже более традиционная настройка типа веб-хостинга для статических файлов?

Тогда я мог (предположительно?) (Используя модуль $ http) ограничивать поток данных для моего сайта/приложения настройкой типа mysite.com/api? Что-то вроде:

app.config(function($routeProvider){
        $routeProvider
            .when('/',{
                controller: 'customersController',
                templateUrl: 'app/views/customers.html'

            })

и в контроллере что-то вроде...

$http.get('api/customers');

Но если это так, и я обслуживаю статические файлы таким образом, как узнает routeProvider, где найти контроллер?

Что люди обычно здесь делают? Полностью отделить статические файлы от динамических данных? Или собрать все это вместе? Есть ли правильный способ сделать это? Или я что-то понимаю неправильно?

Теги:
cordova

1 ответ

0

Предположения:

  • Я не знаком с Кордовой, но предполагаю, что он будет работать как расширение браузера на высоком уровне.
  • Я также предполагаю, что ваше приложение получает достаточный трафик, который облегчает загрузку файлов-сервисов, не является излишним.

Мысли:

  • Для JS файлов связывание, вероятно, является хорошей идеей. Независимо от того, обслуживает ли ваш сервер файлы или S3, он минимизирует количество соединений, которые должен сделать браузер.
  • Для JS файлов, поскольку они, скорее всего, будут включены в файл с помощью тегов <script>, вы можете просто загрузить их в S3. Это не должно давать вам слишком большой проблемы.
  • Для файлов шаблонов HTML, я считаю, вы можете сделать то же самое. Используя RouteProvider и ng-include, вы сможете получить их из S3.
  • Кроме того, если вы выполняете вызовы API, использование угловой службы было бы лучше, чем использовать модуль $http в контроллерах.

Надеюсь, что это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню