Haruskah saya menggabungkan AngularJS dengan kerangka kerja PHP? [Tutup]

161

AngularJS sangat kuat dalam hal HTML5 interaktif dan penjilidan model. Di sisi lain, kerangka kerja PHP seperti Yii memungkinkan pengembangan aplikasi web yang cepat, terstruktur dengan baik, aman dan kuat. Kedua teknologi menyediakan sarana canggih untuk akses data, iterasi, dan tata letak halaman.

Apakah ini praktik yang baik atau buruk untuk mencampurkan kedua pendekatan tersebut ("pengaturan halaman" sisi klien dan sisi server) atau apakah ini agak bertentangan dengan makna aplikasi web AJAX HTML5 yang interaktif dan mulus?

Saya tidak berbicara tentang menghasilkan JS menggunakan PHP ( Lihat pertanyaan ini ) - Saya berbicara tentang menghasilkan tampilan yang akan menggunakan AngularJS.

Saya juga tahu bahwa halaman AngularJS harus (atau dapat) berkomunikasi dengan server melalui layanan REST untuk mendapatkan data ( Lihat pertanyaan ini ) alih-alih mengambilnya dari misalnya variabel PHP secara langsung. Tetapi bagi saya tampaknya lebih mudah untuk merancang "bingkai" untuk seluruh aplikasi web secara terpisah dalam PHP (misalnya membangun menu utama atau menangani otorisasi / sesi, dll.)

Dani
sumber
28
Pertanyaan yang bagus Saya berharap ada lokasi StackExchange yang dirancang untuk jenis pertanyaan ini. Saya terbiasa dengan PHP dan memiliki proyek CURL untuk mengumpulkan banyak data sendiri, dan percaya kerangka kerja JavaScript di atas perpustakaan akan cocok untuk proyek saya. Masalah saya seperti milik Anda, saya ingin tahu apa yang merupakan praktik yang baik (suka dan duka) bersama dengan bagian apa yang Anda buang dari proyek asli (PHP) dll. Saya percaya percakapan ini dapat mengundang perdebatan, tetapi bagaimana kita bisa sampai ke penggabungan terbaik dari dua bahasa tanpa percakapan.
Shane
Saya punya beberapa proyek AngularJS yang saya konversi kembali ke PHP / Jquery. Saya memiliki masalah yang tak ada habisnya dengan mendapatkan sudut untuk bekerja dengan berbagai perangkat dan browser seluler. Angular sulit untuk SEO dan google bukan temannya. Saya telah melihat situs-situs dengan peringkat teratas lenyap dari SERPS karena beralih ke sudut ...
HappyCoder

Jawaban:

180

Sepertinya Anda mungkin lebih nyaman dengan pengembangan dalam PHP, Anda membiarkannya menghambat Anda memanfaatkan potensi penuh dengan aplikasi web.

Memang mungkin untuk membuat sebagian PHP dan seluruh tampilan, tetapi saya tidak akan merekomendasikan hal ini.

Untuk sepenuhnya memanfaatkan kemungkinan HTML dan javascript untuk membuat aplikasi web, yaitu, halaman web yang bertindak lebih seperti aplikasi dan sangat bergantung pada rendering sisi klien, Anda harus mempertimbangkan untuk membiarkan klien mempertahankan semua tanggung jawab mengelola keadaan dan presentasi. Ini akan lebih mudah untuk dipertahankan, dan akan lebih ramah pengguna.

Saya akan merekomendasikan Anda untuk mendapatkan pemikiran yang lebih nyaman dengan pendekatan yang lebih fokus pada API. Alih-alih memiliki PHP output tampilan pre-render, dan menggunakan sudut untuk manipulasi DOM belaka, Anda harus mempertimbangkan memiliki PHP backend output data yang harus ditindaklanjuti dengan RESTFully, dan minta Angular menyajikannya.

Menggunakan PHP untuk menyajikan tampilan:

/user/account

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

Bagaimana masalah yang sama dapat diselesaikan dengan pendekatan sentris API dengan mengeluarkan JSON seperti ini:

api/auth/

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

dan di Angular Anda bisa mendapatkan, dan menangani sisi klien respons.

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

Untuk memadukan sisi klien dan sisi server cara yang Anda usulkan mungkin cocok untuk proyek yang lebih kecil di mana pemeliharaan tidak penting dan Anda adalah penulis tunggal, tetapi saya lebih condong ke arah cara sentris API karena ini akan menjadi pemisahan yang lebih tepat dari masalah dan keinginan lebih mudah dirawat.

Kenneth Lynne
sumber
2
Untuk contoh sederhana. Saya sendiri mencari lebih dari sekedar login dasar super duper yang dilakukan semua orang. Perbedaan besar ketika Anda memiliki PHP / HTML dan variabel <td> $ name </td> lebih dari <td> {{name}} </td> dan kemudian 'app.run (fungsi ($ rootScope) {$ rootScope.name = "Ari Lerner";}); ' Saya sendiri sedang mencoba melihat / menemukan keuntungan dari mencoba atau mencoba membuat PHP membuat Angular Pages 'DYNAMIC'. Dan tidak melihatnya. Memiliki klien yang menunggu untuk memuat setiap elemen individu dan mengisi / mengubah template. Hanya saja tidak tertarik pada gagasan PHP menghasilkan dinding javascript seperti itu dulu, dan mudah dilihat
Shawn Rebelo
2
@ShawnRebelo Bisakah Anda sedikit menjelaskan apa yang Anda maksud a wall of javascript? Saya baru di dunia Angular / JS API setelah bertahun-tahun merender PHP, jadi diskusi ini menarik bagi saya.
Dan Nissenbaum
"Daripada memiliki PHP yang menghasilkan tampilan yang dirender sebelumnya, dan gunakan sudut untuk manipulasi DOM belaka ..." - Izinkan saya memperkenalkan kepada Anda konsep baru-lama .
Dissident Rage
Begitulah seharusnya, API yang tenang dari backend dapat berupa bahasa apa pun dan aplikasi sudut untuk front-end dapat bekerja terlepas dari backend.
Amir Savand
3
Apa yang tidak saya mengerti adalah mengapa saya harus memuat halaman umum dengan placeholder dan kemudian memuat beberapa bagian dengan satu atau lebih requets async untuk mendapatkan sesuatu yang sudah saya miliki di halaman pertama seperti data pengguna / auth?
Tobia