Mencampur Angular dan ASP.NET MVC / Web api?

40

Saya berasal dari menggunakan ASP.NET MVC / Web API dan sekarang saya mulai menggunakan Angular tetapi saya tidak jelas tentang cara yang tepat untuk mencampurnya.

Setelah saya menggunakan Angular apakah konsep sisi server MVC masih memberikan nilai? Atau haruskah saya benar-benar menggunakan Web API murni untuk mendapatkan data untuk panggilan HTTP sudut?

Apakah mungkin ada titik awal yang lebih rendah yang harus saya gunakan jika VS template menambahkan banyak hal yang tidak saya butuhkan?

Saya suka gagasan pemisahan ketat sisi server = data murni dan sisi klien = pemrosesan HTML murni.

punkouter
sumber

Jawaban:

17

Cara termudah untuk memikirkannya adalah server melayani keadaan. Angular dapat mengelola pengumpulan pembaruan untuk keadaan itu dan mengirimkannya ke web / api di server. Jika Anda ingin membuka lebih banyak aplikasi satu halaman, maka kode sisi server akan menjadi kondisi awal aplikasi Anda.

API Web adalah tempat yang sangat baik untuk memulai untuk menarik data Anda ke dalam aplikasi Anda. Anda akhirnya akan memperbarui router default untuk memenuhi persyaratan desain lingkungan Anda dan jika Anda ingin, sepenuhnya rest-penuh.

Ada beberapa pustaka yang disertakan oleh ASP4 secara default dan pustaka itu juga dimasukkan dalam templat MVC4. Sebenarnya ada banyak hal yang termasuk dalam halaman yang tidak diperlukan, juga termasuk dalam proyek dan bahkan tidak pernah direferensikan oleh halaman default mereka. Anda harus aman menghapus semuanya kecuali jQuery dan saya bahkan bertindak sejauh mengambil jQueryUI. Banyak default berarti baik, tetapi begitu Anda mulai mengisi pengetahuan domain Anda, Anda akan menggunakan lib yang memenuhi kebutuhan spesifik Anda.

Bahkan dengan pembagian yang ketat, Anda akan menemukan mvc sisi server masih merupakan dukungan yang sangat bersih untuk aplikasi satu halaman. Perutean yang efektif dalam mengirimkan halaman Anda dan panggilan api Anda adalah contoh utama. Fitur lain yang bermanfaat adalah pengontrol yang mengembalikan tampilan yang tidak menggunakan halaman master atau hanya sebagian tampilan. Angular memiliki "tampilan" yang dapat diisi dengan templat, yang bisa berupa file statis atau sebagian dari salah satu rute Anda.

Saya membaca komentar Anda sebelumnya hari ini dan mengumpulkan solusi demo untuk menunjukkan apa yang saya sebutkan sebelumnya. Solusinya juga memiliki beberapa "bulu" asli dihapus meskipun ketika menambahkan Angular dan Bootstrap Anda mendapatkan pustaka inti dan setiap derivasi di sana. Itulah manfaat dari menggunakan nuGet.

Lihat itu: https://github.com/QueueHammer/AngularWithPartialViewViews

Dalam belajar Angular saya menemukan program Angular-Seed cukup membantu. Terutama setelah saya mencoba demo di situs mereka. Proyek sampel cukup berbeda sehingga membantu Anda belajar. Setelah itu saya melihat Angular-Require-Seed tapi itu posting lain. Angular Step by Step http://docs.angularjs.org/tutorial Seed Angular: https://github.com/angular/angular-seed

QueueHammer
sumber
Jadi apakah masuk akal untuk memiliki beberapa Tampilan sisi server yang merupakan cara kerja MVC normal .. dan kemudian untuk masing-masing tampilan akan ada beberapa tampilan sudut sisi klien (mungkin buat / perincian / edit untuk beberapa entitas tertentu) .. Jika demikian, maka saya berharap saya dapat menemukan templat seperti itu untuk menempatkan saya pada jalur yang baik untuk menggunakan MVC dan angular bersama
punkouter
Menambahkan tautan ke proyek demo dan di mana saya pertama kali mulai melihat ke Angular. Saya akan menulis blog tentang SPA secara umum dan beberapa pola / perpustakaan yang lebih baik yang memecahkan tantangan arsitektur mereka selama beberapa bulan ke depan. Saya akan memperbarui posting saya ketika saya melakukannya.
QueueHammer
baru saja mendapat tautan Anda .. melihat demo. terlihat bagus .. pertanyaan pertama adalah .. jadi .. Anda menjaga fungsionalitas ASP.NET MVC di tempat sebagai halaman utama Anda mulai .. di luar halaman itu semua yang lain adalah pandangan sebagian sudut .. Bisakah Anda memiliki DUA ASP utama. NET MVC dilihat? dengan kata lain .. tampilan ASP.NET MVC adalah induk dari pandangan parsial sudut .. misalnya .. mungkin saya tidak ingin SEMUA tampilan parsial dalam SATU tampilan ASP.NET .. apakah itu masuk akal? Bisakah kamu tunjukkan itu padaku? Bahwa apa yang menempatkan saya di tempat yang baik untuk titik awal saya pikir .... atau mungkin apa yang saya katakan tidak masuk akal?
punkouter
dan apa gunanya partialsController.cs karena tidak pernah memanggil semua ini?
punkouter
Anda dapat menempatkan parsial hampir di mana saja. Anda dapat membuat lebih banyak pengontrol dengan aksi per tampilan, saya menggunakan satu "partialsController.cs" router di proyek tersebut sesuai dengan pandangan yang ditentukan dalam modul aplikasi sudut. Jadi, partial / view1 memanggil controller partials dan mendapatkan action viewOne yang kemudian mendapatkan viewOne. Dalam tindakan, Anda dapat memanggil Lihat (); dengan parameter string melewati lokasi tampilan Anda. Jadi Anda memiliki fleksibilitas untuk mengaturnya sesuka Anda.
QueueHammer
18

Apakah mungkin ada titik awal yang lebih rendah yang harus saya gunakan jika VS template menambahkan banyak hal yang tidak saya butuhkan?

Template VS ini bagus untuk memangkas pengaturan awal dan kurva pembelajaran pada awalnya, namun Anda harus menyesuaikannya untuk kebutuhan proyek Anda yang sebenarnya.

Misalnya, di situs ini http://www.reviewstoshare.com , teman saya gunakan AngularJSbersama ASP.NET MVC. Perlu diingat bahwa situs ini sudah dibangun menggunakan ASP.MVC + Jquery untuk interaksi halaman sesuai kebutuhan.

Di sisi lain masih ada beberapa sifat "Ajaxy" ke situs seperti komentar, pemungutan suara, penandaan dll. Tidak terlalu berbeda dari Stackoverflow itu sendiri. Sebelum AngularJS itu berantakan plugin Jquery dan fungsi dalam $(document).ready()panggilan balik, belum lagi kode JS tidak banyak diuji.

Secara keseluruhan, memiliki campuran keduanya membuat situs Anda apik dan fungsional.

masukkan deskripsi gambar di sini

Beberapa referensi bagus untuk dilihat:

EL Yusubov
sumber
Atau jika di bawah kumpulan halaman parsial sudut ada beberapa pandangan MVC biasa tidak akan membantu (seperti yang saya sebutkan di komentar saya di atas)
punkouter
Ini benar, masalah SEO telah diselesaikan dengan pembaruan baru.
EL Yusubov
3
Jadi, bukan untuk mengkritik tetapi bukankah pernyataan negatif pada grafik sebenarnya berada di bawah sumbu x? Itu akan membuat grafik terlihat seperti gelombang dosa yang terus meluas. Saya tahu ini bukan bagan Anda, tetapi sains yang buruk.
QueueHammer
12
QueueHammer Anda harus benar-benar bersenang-senang di pesta. :-)
Thomas Stock
1
Saya benar-benar terjebak di dua titik gelombang yang lebih rendah di kedua sisi 'Sangat Keren!' gelembung, sebagai salah satu gabungan neraka sudut menyebalkan.
MetaGuru