Чи слід змішувати AngularJS з рамкою PHP? [зачинено]


161

AngularJS дуже потужний, коли справа стосується інтерактивного HTML5 та прив’язки моделі. З іншого боку, рамки PHP, такі як Yii, дозволяють швидко, добре структурувати, безпечно та потужно розробити веб-додатки. Обидві технології забезпечують складні засоби доступу до даних, ітерації та компонування сторінок.

Добре чи погано застосовувати суміш цих двох підходів ("налаштування сторінки" на стороні клієнта та сервера), чи це скоріше проти значення інтерактивних, безшовних веб-додатків HTML5 AJAX?

Я не говорю про генерування JS за допомогою PHP ( Див. Це питання ) - я говорю про створення представлення, яке використовуватиме AngularJS.

Я також знаю, що сторінка AngularJS повинна (або може) спілкуватися з сервером через REST-сервіси, щоб отримувати дані ( Див. Це питання ), а не отримувати їх, наприклад, із змінних PHP безпосередньо. Але мені здається, зручніше розробити "кадр" для всієї веб-програми окремо в PHP (наприклад, створити головне меню або обробити авторизацію / сеанси тощо)


28
Чудове запитання. Я хотів би, щоб було місце StackExchange, призначене для такого типу питань. Я звик до PHP і маю проект CURL для збору дуже багатьох даних, і я вважаю, що рамки JavaScript над бібліотекою добре підходять для мого проекту. Моя проблема подібна вашій, я хочу знати, що є хорошою практикою (в сторону і вниз), а також з яких частин ви відмовляєтеся від оригінального проекту (PHP) тощо. Я вважаю, що ці розмови можуть викликати дискусію, але як ми можемо дістатись до найкраще злиття двох мов без розмови.
Шейн

У мене є кілька проектів AngularJS, які я перетворюю на PHP / Jquery. У мене виникли нескінченні проблеми з тим, як отримати можливість працювати з найрізноманітнішими мобільними пристроями та браузерами. Кутовий важко для SEO, а Google не є його другом. Я бачив сайти з найвищим рейтингом зникають з SERPS через перехід на кутовий ...
HappyCoder

Відповіді:


180

Здається, що вам може бути зручніше розвиватись на PHP, і це дозволить вам стримувати використання всього потенціалу за допомогою веб-додатків.

Дійсно, що PHP може відображати часткові і цілі погляди, але я б не рекомендував це.

Щоб повною мірою використати можливості HTML та javascript для створення веб-програми, тобто веб-сторінки, яка більше нагадує додаток та значною мірою покладається на надання клієнта, слід розглянути можливість дозволити клієнту зберігати всю відповідальність за управління станом та презентацією. Це буде простіше в обслуговуванні та буде зручнішим для користувачів.

Я б рекомендував вам більш комфортно мислити при більш орієнтованому на API підході. Замість того, щоб PHP виводив попередньо виведений вигляд і використовували кутовий для простої маніпуляції з DOM, вам слід подумати про те, щоб PHP виводити дані, які слід діяти на RESTFully, і мати Angular представити їх.

Використання PHP для візуалізації:

/user/account

if($loggedIn)
{
    echo "<p>Logged in as ".$user."</p>";
}
else
{
    echo "Please log in.";
}

Як таку ж проблему можна вирішити за допомогою орієнтованого на API підходу, вивівши JSON таким чином:

api/auth/

{
  authorized:true,
  user: {
      username: 'Joe', 
      securityToken: 'secret'
  }
}

і в Angular ви могли б отримати і обробити клієнтську сторону відповіді.

$http.post("http://example.com/api/auth", {})
.success(function(data) {
    $scope.isLoggedIn = data.authorized;
});

Щоб поєднати як клієнтську, так і сторону сервера так, як ви запропонували, можливо, підходить для менших проектів, де обслуговування не важливе, і ви є єдиним автором, але я більше схиляюся до орієнтованого на API шляху, оскільки це буде більш правильним розділенням проблем і волі бути простішим в обслуговуванні.


2
До простого прикладу. Я сам шукав більше, ніж просто супер-пупер базовий логін для кожного. Велика різниця, коли у вас PHP / HTML та змінні <td> $ name </td> над <td> {{ім'я}} </td>, а потім 'app.run (функція ($ rootScope) {$ rootScope.name = "Арі Лернер";}); ' Я сам намагаюся побачити / знайти перевершення спроб або спроб зробити PHP зробити "DYNAMIC" Angular Pages. І просто не бачачи. Клієнт чекає, щоб завантажити кожен окремий елемент та заповнити / змінити шаблони. Просто не захоплюється ідеєю PHP, що генерує стінку javascript, як це ще, і легко переглядається
Shawn Rebelo

2
@ShawnRebelo Ви можете трохи уточнити, що ви маєте на увазі a wall of javascript? Я новачок у світі Angular / JS API після років PHP-рендерінгу, тому ця дискусія мені цікава.
Dan Nissenbaum

"Замість того, щоб PHP виводив попередньо виведений вигляд, і використовувати кутовий для простого маніпулювання DOM ..." - Дозвольте представити вам нову-стару концепцію .
Дисидентська гнів

Ось саме так і має бути, спокійний API з бекенда може бути будь-якою мовою, а кутовий додаток для фронтальних програм може працювати незалежно від бекенда.
Амір Саванд

3
Я не можу зрозуміти, чому я повинен завантажувати загальну сторінку із заповнювачами, а потім завантажувати якусь частину одним або кількома запитами асинхронізації, щоб отримати щось, що я вже мав при завантаженні першої сторінки, як дані користувача / auth?
Тобія
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.