เมื่อไม่นานมานี้ชาวเน็ตถามฉันเกี่ยวกับการใช้ requirejs และ seajs ในส่วนหน้า ฉันถามเขาว่า บริษัท ของคุณมีห้องสมุด JavaScript หรือกรอบ JavaScript ที่เขียนด้วยตัวเองมาก่อนหรือไม่ คำตอบของเขาคืออะไร เขาเพิ่งได้ยินว่าต้องการ JS และ SEAJs เป็นสิ่งใหม่และเทคโนโลยีใหม่ซึ่งมีค่ามากดังนั้นเขาจึงต้องการใช้มัน
ปัญหาของชาวเน็ตนี้ทำให้ฉันต้องคิดถึงเทคโนโลยีการโหลดโมดูล JavaScript ในบทความสุดท้ายฉันให้โครงสร้างพื้นฐานของห้องสมุด JavaScript ที่ฉันเขียน ในความเป็นจริงหนึ่งในเหตุผลในการเขียนบทความนี้คือฉันต้องการใช้เทคโนโลยีเช่นต้องการ JS หรือ SEAJS เพื่อออกแบบโมเดลพื้นฐานของไลบรารี JavaScript ของฉัน หลังจากที่ฉันได้รู้จักเทคโนโลยีนี้ในเชิงลึกฉันพบว่าการใช้ระบบโหลดโมดูลเพื่อแก้ปัญหาการแยกรหัสทั่วไปและรหัสธุรกิจในไลบรารี JavaScript ไม่ถูกต้อง ขอบเขตของระบบการโหลดโมดูลคือการแก้ปัญหาการพึ่งพาระหว่างไลบรารี JavaScript ที่แตกต่างกันแทนที่จะช่วยคุณในการพัฒนาไลบรารี JavaScript
ระบบการโหลดโมดูล JavaScript คืออะไร?
ระบบโมดูลส่วนใหญ่ใช้เพื่อแก้ปัญหาความขัดแย้งการตั้งชื่อของวัตถุการทำงานในไลบรารี JavaScript ที่แตกต่างกันและปัญหาการพึ่งพาระหว่างไลบรารี JavaScript ที่แตกต่างกัน ระบบการโหลดโมดูลมีวัตถุประสงค์เพื่อแอปพลิเคชันส่วนหน้าเว็บขนาดใหญ่หรือแอปพลิเคชันส่วนหน้าเว็บขนาดใหญ่
โดยทั่วไปในหน้าแอปพลิเคชันส่วนหน้าเว็บขนาดยักษ์หน้ามีฟังก์ชั่นที่หลากหลายและธุรกิจที่ซับซ้อน ยิ่งกว่านั้นเมื่อเวลาผ่านไปฟังก์ชั่นของหน้ามักจะเปลี่ยนไปซึ่งนำไปสู่นักพัฒนาส่วนหน้ามักจะพัฒนาโมดูลการทำงานสำหรับฟังก์ชั่นใหม่ อย่างไรก็ตามฟังก์ชั่นระหว่างโมดูลการทำงานที่หลากหลายในธุรกิจจริงอาจแทรกซึมซึ่งกันและกันขึ้นอยู่กับกันและกันและมีความสัมพันธ์ที่ซับซ้อน เมื่อหน้ามีความซับซ้อนความสัมพันธ์ระหว่างไลบรารีส่วนหน้าแต่ละตัวจะยากต่อการจัดการและควบคุมและระบบการโหลดโมดูลจะมีประโยชน์ในเวลานี้
สำหรับโปรแกรมเมอร์ส่วนใหญ่มีโอกาสไม่มากนักที่จะแบกรับแอปพลิเคชันส่วนหน้าเว็บขนาดใหญ่อย่างอิสระและมีโอกาสมากมายในการพัฒนาแอปพลิเคชันส่วนหน้าเว็บขนาดเล็กและขนาดกลาง ตัวอย่างเช่นโครงการเว็บระดับองค์กรมีไลบรารี JavaScript น้อยมากที่ใช้ในโครงการดังกล่าวและการพึ่งพาของแต่ละไลบรารีนั้นง่ายต่อการควบคุมดังนั้นจึงไม่จำเป็นต้องแนะนำระบบการจัดการโมดูลใด ๆ แม้แต่หน้าเว็บของ บริษัท อินเทอร์เน็ตขนาดเล็กและขนาดกลางหลายแห่งก็อาจไม่ซับซ้อนเท่าหน้าเว็บระดับองค์กรระดับส่วนหน้าดังนั้นความสัมพันธ์ระหว่างโมดูลหรือไลบรารี JavaScript นั้นง่ายต่อการจัดการ ในความเป็นจริงแอพพลิเคชั่นขนาดเล็กและขนาดกลางข้างต้นล้วนเป็นสถานการณ์ที่เฉพาะเจาะจงหรือเฉพาะเจาะจง ดังนั้นโดยส่วนตัวแล้วฉันคิดว่าเมื่อเผชิญกับโครงการส่วนหน้าเว็บในที่สุดเราก็สามารถสร้างไลบรารี JavaScript อิสระได้ในที่สุด ลักษณะของไลบรารีนี้ควรคล้ายกับประเภทของไลบรารี: ไลบรารีหลักรวมถึงไลบรารีปลั๊กอินหลายตัว วัตถุประสงค์ของห้องสมุดหลักคือการแก้ปัญหาทั่วไปและควรนำกลับมาใช้ใหม่และอพยพ วัตถุประสงค์ของไลบรารีปลั๊กอินมักเกี่ยวข้องกับรหัสธุรกิจ อย่างไรก็ตามเพื่อแยกแยะขอบเขตของไลบรารีหลักและไลบรารีปลั๊กอินฉันได้เพิ่มฟังก์ชั่นเนมสเปซลงในไลบรารี
เทคโนโลยีการโหลดโมดูล JavaScript และเทคโนโลยี Hadoop มีความคล้ายคลึงกันบางอย่างนั่นคือพวกเขาเป็นทั้งเทคโนโลยีสำหรับระบบที่มีขนาดใหญ่มากและพวกเขาสามารถเล่นบทบาทได้ภายใต้เงื่อนไขบางประการเท่านั้น ดังนั้นเทคโนโลยีเหล่านี้จึงเปิดตัวจาก บริษัท อินเทอร์เน็ตขนาดใหญ่เนื่องจาก บริษัท อินเทอร์เน็ตขนาดใหญ่ต้องแก้ปัญหาหลังจากแอปพลิเคชันของพวกเขามีขนาดใหญ่ขึ้นและซับซ้อนขึ้น เมื่อระบบของคุณยังอยู่ในช่วงเริ่มต้นคุณควรระมัดระวังในการใช้เทคโนโลยีเหล่านี้ เราควรค้นหาวิธีที่ง่ายที่สุดและมีประสิทธิภาพที่สุดในการแก้ปัญหาที่แท้จริงของเรา หากคุณคิดว่าระบบนี้จะมีขนาดใหญ่ขึ้นในอนาคตคุณควรรักษาอินเทอร์เฟซเพื่อใช้เทคโนโลยีเหล่านี้ในอนาคต หากใช้เร็วเกินไปอาจเป็นไปได้ว่าเมื่อระดับระบบขยายตัวค่าใช้จ่ายในการปรับโครงสร้างรหัสของคุณจะสูงขึ้น
สำหรับระบบการโหลดโมดูลสถานการณ์ที่เหมาะสมที่สุดคือการแก้ปัญหาการแยกตัวออกระหว่างโมดูลแอปพลิเคชันส่วนหน้าเว็บขนาดใหญ่ หากเราเพิ่งเขียนไฟล์ JavaScript ใหม่และใช้เทคโนโลยีการโหลดโมดูลทันทีนี่ไม่ใช่เทคโนโลยีที่ใช้ในทางที่ผิด ก่อนที่จะใช้เทคโนโลยีบางอย่างเราไม่ควรพิจารณาวิธีการใช้งานหรือวิธีการใช้งาน แต่เราควรคิดด้วยว่ามันมีประโยชน์ในการใช้งานหรือไม่
ในที่สุดฉันอยากจะบอกว่าฉันคิดว่าส่วนหน้าเว็บขนาดเล็กและขนาดกลางถูกใช้สำหรับการปรับใช้การผลิต เนื่องจาก JavaScript ไม่ได้ซับซ้อนที่สุดจึงเป็นการดีที่สุดที่จะบรรจุไฟล์ JavaScript ภายนอกทั้งหมดลงในไฟล์ภายนอก JavaScript ข้อได้เปรียบนี้คือลดจำนวนคำขอ HTTP การใช้เทคโนโลยีการโหลดโมดูลจะทำให้ลำบากในการจัดแพคเกจไฟล์และไม่สามารถทำได้ (โมดูลเช่น RequireJS และ SEAJs ทั้งหมดขึ้นอยู่กับไฟล์และแต่ละโมดูลเป็นไฟล์อิสระ) ซึ่งตรงกันข้ามกับการแก้จุดประสงค์ในการลด HTTP