Клиентская или серверная структура?

0

Мой проект был бы своего рода craiglist, местом, где пользователи могли бы публиковать объявления (объекты жизни, автомобили, квартира и т.д.). Итак, аутентификация, страница профиля, создание контента, отображение продаваемых объектов и т.д.

Я разработал очень большую часть бэкэнда: у меня есть API RESTful в трехуровневой архитектуре, разработанной в Java. Он создает связь с db, чтобы предоставить мне разные URL-адреса и отправить мне соответствующий JSON.

Пример URL:

http://api.mywebsite.fr/user?userid=1 отсылает меня обратно:

{"user": {"username": "jdoe1234", "email", "[email protected]"}}

У меня есть URL-адреса для всех действий, выполняемых на всем сайте (создание анонса, последние обновления данных... все, и я тщательно объявил их POST, GET, UPDATE, DELETE и т.д.). Существует также oAuth для защиты API от запросов, которые не разрешены для токена.

Что все для "серверного" аспекта, я думаю, что с этим нет никаких проблем.

Но если все действия управляются веб-сервисом, я не вижу интереса, который мог бы принести мне большую платформу на стороне сервера, такую как Symfony/cakePHP, Zend и т.д., Чтобы делать HTTP-запросы в разных точках входа, извлекать JSON и заполнить HTML.

Поэтому я посмотрел на клиентскую инфраструктуру, такую как Angular, Ember и так далее. Сначала это казалось очень подходящим для моего случая: возможность HTTP-запросов, управление тем, что делать в случае успеха или ошибки, непосредственно использовать полученный JSON для заполнения представления и т.д.

Мне даже не удалось сделать свой выбор между angularjs и Ember, оба очень похожи, но с выпуском Angular v2 я боюсь ремонтопригодности v1 (если я выберу Angular, это будет v1, потому что большинство учебников и вопросы относятся к Угловому 1.X).

Я не знаю, правильно ли я делаю это, выбирая систему на стороне клиента, я боюсь, что они "бразильские" (не уверенные в этом слове, извините) меня. Кроме того, он полностью создан в браузере, поэтому пользователь может полностью изменить весь код и данные, которые я предоставляю. Мне это кажется странным.

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

Резюме. С теми вещами, которые у меня уже есть (webservice/api), неплохо ли использовать клиентскую инфраструктуру, такую как Angular, или я должен оставаться на большой стороне сервера, например Symfony/Zend и т.д.? Зная, что я позиционирую себя в контексте, в котором эта платформа будет широко использоваться (сопоставимый трафик).

  • 0
    Зачем исправлять то, что не нарушено, или вводить внешние зависимости, которые, по вашему мнению, не нужны?
  • 0
    На самом деле у меня есть только API на бэкэнде, поэтому мой вопрос здесь состоит в том, чтобы узнать, что лучше для меня, чтобы использовать API. На данный момент я не использую серверную или клиентскую среду :)
Теги:
frameworks
web-services
ember.js

2 ответа

2
Лучший ответ

Я бы сказал - зависит от того, хотите ли вы в будущем быть более опытным парнем или бэкэндом. Если вы хотите быть полным разработчиком стека, то он не применяется.

На мой взгляд, как Symfony/Zend, так и другие крупные серверные структуры не так увлекательны, как динамические интерфейсные JavaScript-фреймворки, такие как Ember/Angular/React.

Кроме того, если у вас уже есть RESTful API и аутентификация OAuth, реализованная в бэкэнд-части, я бы пошел с Ember. Зачем? Ember Data - отличный инструмент для общения с API-интерфейсом. Он созрел, он лениво загружает записи, когда они нужны, и он очень настраиваемый.

он полностью создан в браузере, поэтому пользователь может полностью изменить весь код и данные, которые я предоставляю...

Ember создал встроенную защиту, такую как дезинфекция данных, которые отображаются в ней, на языке шаблонов - HTMLBars. Кроме того, существует стандарт CORS и политики безопасности контента (CSP), который реализован в Ember.

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

В Ember вы можете создавать зрелые, безопасные, готовые к производству приложения, но в какой-то мере вам нужно устраивать свои навыки Ember для создания такого амбициозного веб-приложения, но это часть построения каждого приложения.

С тем, что у меня уже есть (webservice/api), неплохо ли использовать клиентскую инфраструктуру, такую как Angular?

Да, это очень популярное решение для использования стека MEAN или использования API Ember + RESTful.

Почему я должен выбирать Ember вместо Angular (у которых есть более крупные сообщества/учебники/ответы на вопросы)?

Угловое имеет более обширные сообщества/учебники/ответы на вопросы, но когда я начал какой-то побочный проект с помощью Angular, чтобы узнать его возможные преимущества перед Ember, я был удивлен, как в этом сообществе не было единодушного решения, чтобы сделать одно. Таким образом, вместо быстрого поиска, как объявлять и использовать директивы (я думаю, это было то, что меня смутило), я должен сделать еще одно исследование, путь которого является лучшим. Кроме того, существует множество способов настройки проекта (где размещать пользовательские директивы, разные угловые объекты), и вам нужно сделать другое исследование, которое нужно выбрать. Я закончил использование репо здорового глотки в качестве шаблона, но вы можете видеть, что он не обновлялся в течение 8 месяцев, но я думаю, что за эти 8 месяцев у Angular было много изменений, и я не уверен, что это репо это лучший выбор.

В Ember у вас есть инструмент Ember CLI, который построен с принципом конвенции по конфигурации. У вас также есть Ember Data, который использует стандарт API JSON - если у вас сейчас нет совместимой с JSON API-серверной стороны, вы можете написать собственный адаптер для нормализации ответов сервера или изменить способ ответа на бэкэнд. В Ember у вас нет всей этой головной боли и различных лучших решений, чтобы сделать одну основную вещь, зависящую от того, кого вы спрашиваете.

Что означает "одностраничное приложение"?

Одностраничное приложение - это, в основном, страница, которая не требует перезагрузки всех активов и HTML при навигации. Это преимущество перед PHP - когда пользователь переезжает в другое место, он загружает только новые данные для этого маршрута. Больше информации здесь.

Позволяют ли мне эти рамки создавать реальные маршруты? (www.myapp/profil/userid и т.д.)

Да, конечно. Вам даже не нужно # в вашем URL-адресе. С простым правилом перезаписи и небольшим количеством логики для маршрута profile и указанного profile/:userid пути profile/:userid, когда пользователь откроет URL-адрес www.myapp/profile/userid он будет автоматически отправлен в маршрут profile, а userid будет интерпретироваться как параметр маршрута, поэтому вы можете взять этот userid и найти запись пользователя из магазина в режиме крючка model.

  • 0
    Спасибо за ваш ответ ! В прошлом я использовал Zend для другого проекта, но, как я уже сказал, я не понимаю, как он может быть эффективен на 100%, поскольку у меня уже есть хорошо построенный API. Я вижу в твоем профиле, что ты "сторонник", поэтому я спрашиваю себя, объективно ли твое мнение (без обид). Почему я должен выбрать Ember вместо Angular (у которого больше сообщество / учебники / ответы на вопросы)? Что означает «одностраничное приложение»? Позволяют ли эти рамки мне создавать реальные маршруты? (www.myapp / profil / userid и т. д.). Еще раз спасибо за ваше время !
  • 0
    Ответ обновлен. Я не на 100% объективен, потому что: а) я провожу больше времени с Эмбер и знаю только основы Angular; б) Этот вопрос основан на мнении: P
Показать ещё 1 комментарий
0

Клиент = скорость, сервер = стабильность

Обновления баз данных JS раз в неделю. Не-Js-back-end один раз в год

Клиентская сторона зависит от поведения в зависимости от браузера. Назад относится только к машине, но не к окружающей среде.

Я выбрал FE coz. Я устал отлаживать код, записывая значения переменных в базу данных, чтобы реально увидеть, что происходит в контроллерах -_-

Ещё вопросы

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