ฉันเริ่มเรียนรู้ AngularJS และ ASP.NET MVC แต่ไม่แน่ใจว่าทำไมต้องใช้ทั้งคู่เข้าด้วยกันในโครงการเดียวกัน
พวกเขาไม่ใช่ทั้งกรอบ MVC หรือเปล่า? ฉันควรจะใช้ทั้งสองอย่างในแอพพลิเคชั่นเดียวกันหรือไม่? มันไม่ได้เป็นอย่างใดอย่างหนึ่ง?
ฉันเริ่มเรียนรู้ AngularJS และ ASP.NET MVC แต่ไม่แน่ใจว่าทำไมต้องใช้ทั้งคู่เข้าด้วยกันในโครงการเดียวกัน
พวกเขาไม่ใช่ทั้งกรอบ MVC หรือเปล่า? ฉันควรจะใช้ทั้งสองอย่างในแอพพลิเคชั่นเดียวกันหรือไม่? มันไม่ได้เป็นอย่างใดอย่างหนึ่ง?
คำตอบ:
หากคุณกำลังสร้างแอพลิเคชันหน้าเดียว (SPA)แล้วคุณอาจจะไม่จำเป็นต้อง "MVC" ในASP.NET MVC มุมมองโดยเฉพาะมุมมองแบบไดนามิกมีแนวโน้มที่จะแสดงผล / จัดการฝั่งไคลเอ็นต์ จัดการเชิงมุมที่ดี
แต่บางทีคุณอาจไม่ต้องการสปา 100% แล้วไง? ลองนึกภาพแทน 10 หน้า แต่ 10 หน้านั้นดีมากพลวัต หลังจากที่ผู้ใช้เข้าสู่ระบบจะมีตราผู้ใช้ขึ้นมาเล็กน้อยที่มุมขวา นั่นไม่ใช่แบบไดนามิก มันแสดงให้เห็นบางสิ่งที่ดีเช่น "คะแนน" ของผู้ใช้และเซลฟี่ล่าสุดของผู้ใช้ คุณแคชสิ่งที่ดีเพื่อให้สามารถดึงข้อมูลได้ง่าย ทีนี้คุณสามารถไปได้สองทางกับสิ่งนี้ หากคุณเป็นนัก MVC ที่ฝั่งไคลเอ็นต์คุณก็จะดึงข้อมูลตราได้หลังจากที่โหลด HTML เริ่มต้นเหมือนกับข้อมูลอื่น ๆ ทั้งหมด แต่บางทีคุณไม่ใช่คนเจ้าระเบียบ บางทีคุณอาจจะตรงกันข้ามกับคนเจ้าระเบียบ บางทีคุณอาจเป็นคนขี้กลาก ดังนั้นแทนที่จะส่ง HTML เริ่มต้นให้ส่ง JavaScript บางส่วนที่จะโพสต์กลับไปที่เซิร์ฟเวอร์ของคุณโพสต์ผ่าน JavaScript เพื่อคว้าข้อมูลตราสัญลักษณ์จากนั้นจึงรวมข้อมูลนั้นลงในมุมมองผ่าน MVC ฝั่งไคลเอ็นต์นั่นคือ HTML เริ่มต้นของคุณ หลังจากส่ง HTML เริ่มต้นของคุณแล้วคุณดำเนินการกับการแสดง MVC ฝั่งไคลเอ็นต์ตามปกติ
ดังนั้น ... MVC บนเซิร์ฟเวอร์และบนไคลเอนต์เป็นวิธีที่สะดวกในการจัดระเบียบรหัสที่เคยเป็นระเบียบในปี 2544 คุณไม่จำเป็นต้องเลือกอย่างใดอย่างหนึ่ง คุณสามารถเลือกได้ทั้ง ได้รับยิ่งคุณทำหลังจากส่ง HTML เริ่มต้นมากเท่าไหร่คุณก็ต้องใช้ MVC ฝั่งเซิร์ฟเวอร์น้อยลง ยังคงมีสำหรับคุณถ้าคุณต้องการมัน ตัวอย่างเช่นฉันทำงานกับแอปพลิเคชัน ASP.NET MVC / Angular ที่แม่แบบ Angular ภายนอกอาจเป็น. NET MVC ActionResult นั่นหมายความว่าเซิร์ฟเวอร์คอนโทรลเลอร์ของคุณสามารถผสานข้อมูลลงในมุมมองของมันส่งไปยังแองกูลาร์เป็นเทมเพลตและคอนโทรลเลอร์ของแองกูลาร์สามารถผสานข้อมูลเข้ากับมุมมองได้ ฉันไม่ได้บอกว่านี่เป็นความคิดที่ดี แต่มันแสดงให้เห็นว่ารูปแบบหนึ่งของ MVC ไม่ได้ทำให้สิ่งอื่นล้าสมัย
นอกจากนี้ไม่ว่าคุณจะปรับใช้ Angular ได้อย่างไรคุณจะต้องมีวิธีการส่ง HTML เริ่มต้นเทมเพลตและข้อมูลที่สำคัญที่สุด ทำไมไม่ใช้แพลตฟอร์มที่ทำให้ง่ายขึ้น? มีอยู่มากมาย แต่. NET MVC นั้นไม่ใช่เรื่องเหลวไหล อย่างที่ฉันบอกคุณสามารถสร้าง HTML เริ่มต้นและเทมเพลต Angular ภายนอกเป็นผลมาจากการกระทำ MVC แต่ยังดีกว่าคุณสามารถใช้. NET'S Web APIในการส่งข้อมูล Web API นั้นอร่อยพอ ๆ กับ apricot compote
สรุป: MVC เป็นเพียงรูปแบบ คุณอาจต้องการใช้รูปแบบนั้นกับเลเยอร์ทางกายภาพจำนวนเท่าใดก็ได้ มันไม่สามารถใช้งานได้หมด ใช้งานได้อย่างอิสระหากเหมาะสม นอกจากนี้Angular อาจไม่ใช่ MVC อยู่ดี (เช่นคนที่ใส่ใจสิ่งเหล่านี้) ดังนั้นอย่าลังเลที่จะใช้กับเครื่องมือที่มี "MVC" ในชื่อ ถึงแม้ว่ามันจะเป็น MVC ให้ผสมและจับคู่ตามที่ต้องการ
ASP.NET MVC เป็นกรอบงานฝั่งเซิร์ฟเวอร์ มันไม่สนใจว่าคุณใช้ไลบรารี JavaScript อะไร AngularJS เป็นไลบรารีฝั่งไคลเอ็นต์ซึ่งไม่สนใจว่าเทคโนโลยีด้านเซิร์ฟเวอร์ใดที่ให้อำนาจเว็บไซต์ - ซึ่งอาจเป็น Python, ASP.NET MVC หรือแม้แต่ไฟล์ HTML แบบสแตติกเก่าที่เก็บไว้ในดิสก์โดยตรง
ASP.NET MVC และ AngularJS สามารถใช้งานร่วมกันได้และมีโปรเจ็กต์มากมายที่ใช้ร่วมกัน
คุณจำเป็นต้องใช้ทั้งคู่หรือไม่? ไม่ได้จริงๆ ขึ้นอยู่กับความต้องการของโครงการของคุณทั้งหมด
หากเว็บไซต์ของคุณเป็นแบบไดนามิกคุณต้องใช้สคริปต์ฝั่งเซิร์ฟเวอร์ คุณสามารถใช้ ASP.NET และความจริงที่ว่าคุณกำลังใช้ AngularJS จะไม่ทำให้โค้ดฝั่งเซิร์ฟเวอร์ของคุณเป็น MVC มากขึ้น หากคุณต้องการโครงสร้างแอปพลิเคชันฝั่งเซิร์ฟเวอร์ของคุณเป็น MVC คุณควรเลือก ASP.NET MVC
ความจริงที่ว่าคุณกำลังใช้ ASP.NET MVC ไม่ได้บอกเป็นนัยถึงโครงสร้างของโค้ดฝั่งไคลเอ็นต์ของคุณ คุณสามารถใส่จาวาสคริปต์ทั้งหมดของคุณไว้ในไฟล์เดียวโดยไม่ต้องคำนึงถึงโครงสร้างและยินดีกับสิ่งนั้น (จนกว่าโครงการจะเริ่มขึ้น) ที่นี่อีกครั้ง AngularJS นำเสนอตัวเองเป็นวิธีการจัดโครงสร้างแอปพลิเคชันของคุณในฝั่งไคลเอ็นต์
หมายเหตุด้านข้าง: คุณติดแท็กคำถาม ASP.NET MVC 3. เว้นแต่เป็นโครงการดั้งเดิมที่คุณต้องรักษาหรือคุณมีข้อ จำกัด เฉพาะเมื่อโฮสต์แอปพลิเคชันบนเซิร์ฟเวอร์ดั้งเดิมซึ่งไม่ได้อัปเดตในช่วงสี่ปีที่ผ่านมาคุณสามารถใช้ ASP .NET MVC 4 หรือ 5 แทน
หากคุณกำลังใช้ visual studio มีเทมเพลตเว็บไซต์ MVC แบบ 'หน้าเดียว' ซึ่งรวมถึงตัวควบคุมเชิงมุมและ MVC Web Api
วิธีนี้ใช้งานได้ดีเพราะรหัสฝั่งเซิร์ฟเวอร์ MVC ของคุณเป็นจุดสิ้นสุด json สำหรับโค้ดฝั่งไคลเอ็นต์เชิงมุมที่จะเรียก
นอกจากนี้คุณสามารถใช้ตัวควบคุม MVC เพื่อแสดงมุมมอง html พื้นฐานหรือมุมมองสำหรับแอปหน้าเดียวของคุณ สิ่งนี้จะช่วยให้คุณมีพลังในการสร้างฝั่งเซิร์ฟเวอร์, การอนุญาต, การเปลี่ยนเส้นทาง, การจัดการข้อผิดพลาด ฯลฯ
บ่อยครั้งที่คุณต้องการเซิร์ฟเวอร์จำนวนเล็กน้อยที่สร้าง html / javascript แม้ในแอปพลิเคชันหน้าเดียวสิ่งต่าง ๆ เช่น URL ปลายทางสำหรับสภาพแวดล้อมที่แตกต่างกันภาษาที่แตกต่างกันหรือแม้แต่หน้าการรับรองความถูกต้องแปลก ๆ ซึ่งอาจทำได้ง่ายกว่าฝั่งเซิร์ฟเวอร์
3 ปีต่อมาใช้ ASP.NET Web API เพื่อแสดงข้อมูลของคุณและ Angular (js หรือใหม่กว่า) เพื่อจัดโครงสร้างแอปของคุณในฝั่งไคลเอ็นต์ หากคุณสร้างเว็บไซต์แบบคงที่ให้ใช้ ASP.NET MVC