Açısal ve ASP.NET MVC / Web api karıştırılması?


40

ASP.NET MVC / Web API kullanmaktan geliyorum ve şimdi Angular kullanmaya başlıyorum ama bunları karıştırmanın uygun bir yolunu bulamıyorum.

Angular kullandığımda MVC sunucu tarafı kavramları hala herhangi bir değer sağlıyor mu? Ya da kesinlikle açısal HTTP aramaları için veri almak için Web API kullanmalı mıyım?

Eğer VS şablonu ihtiyaç duymadığım birçok şey ekliyorsa, kullanmam gereken daha soyulmuş bir başlangıç ​​noktası olabilir mi?

Sunucu tarafı = saf veri ve istemci tarafı = saf HTML işleme bölümünün ayrılığı fikrini seviyorum.


Yanıtlar:


17

Bunu düşünmenin en kolay yolu, sunucunun bir duruma hizmet etmesidir. Angular, bu durumdaki güncellemeleri toplamayı başarabilir ve sunucudaki bir web / api'ye gönderebilir. Daha fazla tek sayfalı uygulamaya geçmek istiyorsanız, sunucu tarafı kodu uygulamanızın yalnızca ilk halidir.

Web API, verilerinizi uygulamanıza çekmek için başlamak için mükemmel bir yerdir. Sonunda ortam tasarım gereksinimlerinizi karşılayacak ve isterseniz tamamen dinlenmeniz için varsayılan rotaları güncelleyeceksiniz.

ASP4'ün varsayılan olarak dahil ettiği ve MVC4 şablonlarında da bulunan birkaç kitaplık vardır. Sayfada yer alması gerekmeyen, projeye dahil olduğu ve varsayılan sayfalarında bile yer almayan pek çok şey var. JQuery dışındaki her şeyi çıkarırken güvende olmalısın ve ben bile jQueryUI almaya devam ediyorum. Varsayılanların birçoğu iyi demek ancak etki alanı bilgilerinizi doldurmaya başladığınızda, özel gereksinimlerinizi karşılayan libleri kullanacaksınız.

Kesin bir bölünme ile bile sunucu tarafının mvc'nin hala tek bir sayfa uygulamasına çok temiz bir destek olduğunu göreceksiniz. Sayfanızı ve API çağrılarınızı yayınlamada etkili yol gösterme en iyi örnektir. Diğer bir yararlı özellik, ana sayfayı kullanmayan veya yalnızca kısmi bir görünüm olan görünümleri döndüren denetleyicilerdir. Açısal, rotalarınızdan birinden bir statik dosya veya kısmi olabilen bir şablonla doldurabilecek bir "görünüme" sahiptir.

Bugün daha erken bir yorum okudum ve birlikte bahsettiğimi göstermek için bir demo çözümü attım. Çözüm ayrıca, Köşeli ve Önyükleme eklerken çekirdek kütüphaneleri ve oradaki her türevi elde etmenize rağmen, orijinal "kabartmanın" bir kısmını çıkardı . Bu NuGet'i kullanmanın takası.

Çıkış: https://github.com/QueueHammer/AngularWithPartialViewViews

Angular'ı öğrenirken, Angular-Seed programını oldukça faydalı buldum. Özellikle demoları kendi sitelerinde denedikten sonra. Örnek proje, öğrenmenize yardımcı olacak kadar farklıdır. Ondan sonra Açısal-Zorunlu-Tohum'a baktım ama bu başka bir gönderi. Açısal Adım Adım http://docs.angularjs.org/tutorial Açısal Tohum: https://github.com/angular/angular-seed


Bu yüzden birkaç sunucu tarafı olması mantıklı olur. MVC normal olarak böyle çalışır .. ve sonra bu görüşlerin her biri için birden fazla müşteri tarafı açısal görünümü olacaktır (belki de belirli bir varlık için bir yarat / detay / düzenleme). Öyleyse, MVC ve açısal birlikte kullanmak için beni iyi bir yola sokmak için böyle bir şablon
bulabilseydim keşke

Demo projesine bir link ekledi ve ilk olarak Angular'ı aramaya başladım. Genel olarak SPA'lar ve gelecek birkaç ay boyunca mimari zorluklarını çözen daha iyi kalıpların / kütüphanelerin bazıları hakkında blog yazacağım. Yaptığımda yazımı güncelleyeceğim.
QueueHammer

bağlantıyı yeni aldım ... demoya baktım. iyi görünüyor .. ilk soru .. yani .. ASP.NET MVC işlevselliğini başlattığınız ana sayfa olarak yerinde tutuyorsunuz .. bu sayfanın ötesinde her şey açısal kısmi görünümler .. İKİ ana ASP'ye sahip olabilir misiniz? NET MVC görünümleri? Başka bir deyişle .. ASP.NET MVC görünümü açısal kısmi görünümlerin ebeveynidir ... örneğin .. belki de BİR ASP.NET görünümü altında TÜM kısmi görüşler istemiyorum .. anlamlıdır mı? Bana bunu gösterebilir misin? Beni başlangıç ​​noktası için iyi bir noktaya sokan şey bence .... ya da söylediklerimin bir anlamı yok mu?
punkouter

Bunlardan hiçbirini aramadığı için partialsController.cs dosyasının amacı nedir?
punkouter

Kısmi parçaları hemen hemen her yere koyabilirsiniz. Görünüm başına bir eylemle daha fazla denetleyici yapabilirsiniz, ben bir "partialsController.cs" projesini kullanarak roketleri açısal uygulama modülünde tanımlanan görünümlerle eşleştirdim. Bu nedenle, kısmi / view1 kısmi denetleyiciyi çağırıyor ve viewOne eylemini alıyor, bu da ViewOne görünümünü alıyor. Eylemlerde View (); Bir string parametresi ile görünümünüzün konumunu iletin. Böylece, onu neredeyse istediğiniz şekilde organize etme esnekliğine sahipsiniz.
QueueHammer 6'13

18

Eğer VS şablonu ihtiyaç duymadığım birçok şey ekliyorsa, kullanmam gereken daha soyulmuş bir başlangıç ​​noktası olabilir mi?

Bu VS şablonları başlangıçtaki başlangıç ​​kurulumunu ve öğrenme eğrisini azaltmak için iyidir, ancak bunları gerçek proje ihtiyaçlarınız için özelleştirmeniz gerekir.

Örneğin, bu sitede http://www.reviewstoshare.com , arkadaşım AngularJSile birlikte kullanıyoruz ASP.NET MVC. Bu sitenin, gerektiğinde sayfa etkileşimi için ASP.MVC + Jquery kullanılarak oluşturulduğunu unutmayın.

Öte yandan, yorumlar, oylama, işaretleme gibi siteye hala bazı "Ajaxy" doğası var. Stackoverflow'un kendisinden farklı değil. AngularJS'den önce $(document).ready(), JS kodunun test edilemediğini söylemediği için, Jquery eklentilerinin bir karmaşası ve geri çağırma işlevlerinde yer alıyordu.

Genel olarak, her ikisinin de uygun bir karışımına sahip olmak sitenizi kaygan ve işlevsel kılar.

görüntü tanımını buraya girin

Bakmak için bazı iyi referanslar :


Veya açısal kısmi sayfalar altında, birkaç düzenli MVC görüşü bu yardımı olmazdı (yukarıdaki
yorumumda

Bu doğrudur, SEO sorunları yeni güncellemelerle çözülmüştür.
EL Yusubov

3
Yani, eleştirmek değil, grafikteki negatif ifadeler aslında x ekseninin altında olmaz mı? Bu, grafiğin sürekli genişleyen bir günah dalgası gibi görünmesini sağlar. Senin grafiğin değil, kötü bir bilim olduğunu biliyorum.
QueueHammer

12
KuyrukHammer partilerde çok eğlenceli olmalı. :-)
Thomas Stock,

1
'Çok Güzel!' İn iki tarafındaki dalganın iki alt noktasına tamamen sıkışıp kaldım. kabarcık, bir kombine boklu açısal cehennem olarak.
MetaGuru,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.