การเลือก JavaScript Asynch-Loader [ปิด]


9

ฉันดูที่ตัวจัดการทรัพยากรแบบอะซิงโครนัสต่าง ๆ แล้วและฉันก็ไม่แน่ใจว่าจะใช้อันไหน ฉันทำงานที่ไหนเรามีความพยายามที่แตกต่างกันในกลุ่มซึ่งโมดูลคลาสอาจใช้ jQuery รุ่นต่างๆ (ฯลฯ ) ดังนั้นการอ้างอิงที่ซ้อนกันอาจแตกต่างกันเช่นกัน ฉันไม่สามารถควบคุมสิ่งนี้ได้ดังนั้นนี่หมายความว่าฉันต้องโหลดทรัพยากรแบบไดนามิกซึ่งอาจใช้เวอร์ชันอื่นของไลบรารีเดียวกัน

เช่นนี้นี่คือข้อกำหนดของฉัน:

  1. โหลดไฟล์ทรัพยากร JavaScript และ CSS แบบอะซิงโครนัส
  2. จัดการการพึ่งพาการสั่งซื้อและการพึ่งพาซ้อนกันข้ามรุ่น
  3. ตรวจสอบว่ามีการโหลดทรัพยากรอยู่แล้ว
  4. ต้องอนุญาตสำหรับการโหลดข้ามโดเมน (CDN's)
  5. (ไม่บังคับ) อนุญาตให้เรายกเลิกการโหลดทรัพยากร

ฉันเคยดู:

ฉันอาจสามารถปลอมข้อกำหนดเหล่านี้ด้วยตนเองโดยการโหลดเวอร์ชันลงในตัวแปรที่ถูกเนมสเปซอย่างถูกต้องและใช้อาร์เรย์เพื่อติดตามสิ่งที่โหลดไปแล้ว ... แต่หวังว่าจะมีคนคิดค้นสิ่งนี้ขึ้นมา

ดังนั้นคำถามของฉันคือ:

  • คุณใช้อันไหน และทำไม?
  • มีคนอื่นที่ตรงกับความต้องการของฉันอย่างเต็มที่หรือไม่
  • ท่านใดที่มีคารมคมคายมากที่สุดและใช้งานได้ง่ายที่สุด และทำไม?

ปรับปรุง:
สำหรับผู้ที่สนใจฉันลองห้องสมุด AMD ทั้งหมดข้างต้น (และอื่น ๆ ) ในท้ายที่สุดผมไปกับRequireJS มันสะอาดและง่ายกว่าโดยรวม ... และฉันดีใจที่ได้ใช้มัน


สำหรับ JavaScript ฉันไม่คิดว่า # 5 จะเป็นไปได้ อาจเป็นไปได้ในทางทฤษฎีสำหรับ CSS แต่ฉันไม่แน่ใจว่าเบราว์เซอร์ใด ๆ ที่สนับสนุน
Mike Baranczak

@ ไมค์ขอบคุณสำหรับการแสดงความคิดเห็น! หากตัวโหลด asynch-loader ถูกติดตามและเติมทรัพยากรโดยใช้ object-variables ... มันเป็นไปได้อย่างสมบูรณ์
ZERO Prisoner

ถูกต้อง แต่นวกรรมิกใหม่จะทำซ้ำวัตถุดังนั้นหากคุณสร้างสิ่งใหม่ที่คุณเรียกว่ามันจะยังคงอยู่ที่นั่น ทำไมคุณถึงยกเลิกการโหลด
ไม่ระบุตัวตน

@ user1525 ขอบคุณที่แสดงความคิดเห็น! การยกเลิกการโหลดทรัพยากรบันทึกในหน่วยความจำ ฉันจะแก้ไขคำถามของฉันด้านบนด้วยความคิดบางอย่างในความคิดเห็นของคุณ (ในไม่กี่นาที) ขอบคุณอีกครั้ง!
ZERO Prisoner

jQuery มีgetScriptฟังก์ชันสำหรับการฉีดสคริปต์แล้ว
zzzzBov

คำตอบ:


7

ฉันใช้ RequireJS กับโครงการที่จริงจังและฉันก็ชอบ แต่ก็ไม่ได้หมายความว่าจะเป็นตัวโหลดแบบอะซิงโครนัส มันหมายถึงการเป็นระบบโมดูลจริงๆ การโหลดแบบอะซิงโครนัสมีให้บริการในเป้าหมายดังกล่าว สามารถผลักดันให้เติมข้อกำหนดใด ๆ ของคุณได้ แต่บริการโหลดนั้นออกแบบมาเพื่อโหลดโมดูลไม่ใช่ไฟล์ที่กำหนดเอง

โหลดไฟล์ทรัพยากร JavaScript และ CSS แบบอะซิงโครนัส : Requirejs โหลดโมดูลใด ๆ ที่คุณต้องการโดยใช้การฉีดแท็กสคริปต์ดังนั้นแบบอะซิงโครนัส

จัดการการพึ่งพาคำสั่งซื้อและการพึ่งพาที่ซ้อนกันข้ามเวอร์ชัน :นี่คือที่ RequireJS Shines โมดูลอาจประกาศการขึ้นต่อกันของโมดูลอื่นและลำดับการโหลดจะถูกประเมินจากการประกาศการพึ่งพานั้น นอกจากนี้ยังมีปลั๊กอินคำสั่งซื้อซึ่งสามารถบังคับให้สั่งซื้อได้ตามความต้องการ

ตรวจหาว่าโหลดทรัพยากรอยู่แล้ว : Requirejs จะโหลดโมดูลครั้งเดียวเท่านั้น

ต้องอนุญาตสำหรับการโหลดข้ามโดเมน (CDN's) :สิ่งนี้เป็นไปได้ แต่ต้องมีการกำหนดค่าบางอย่าง คุณสามารถตั้งค่า URL เฉพาะสำหรับโมดูลใด ๆ และจะแทนที่ตำแหน่งเริ่มต้นดังนั้นคุณสามารถตั้งค่าเป็น CDN

RequireJS จะให้บริการที่ดีที่สุดหากคุณเขียนโมดูลโดยใช้รูปแบบและมีประสิทธิภาพน้อยที่สุดหากคุณใช้โมดูลเพื่อโหลดจาวาสคริปต์แบบดิบ

นอกจากนี้ยังมีกระบวนการสร้างที่จะรวมโมดูลของคุณเข้าด้วยกันเป็นไฟล์เดียวเพื่อการผลิต


3

ในทางทฤษฎีคุณสามารถเก็บรายการสคริปต์ที่โหลดไว้แล้วและสร้างฟังก์ชันที่โหลดสคริปต์ที่ยังไม่ได้โหลด

http://jsfiddle.net/BDG/Dhdu7/2/


2
หรือใช้ Curl / RequireJS พวกเขามีคุณสมบัตินี้และอื่น ๆ และคุณไม่จำเป็นต้องบำรุงรักษาด้วยตัวเอง;)
Raynos

คุณลืมพูดถึงโครงสร้างที่ชัดเจนและการรวมที่ไม่เกี่ยวข้อง
ไม่ระบุตัวตน

2

หากคุณกำลังมองหา RequireJS และต้องการพึ่งพาไฟล์ CSS คุณสามารถเช็คเอาต์ปลั๊กอิน CSSP RequireJS :

CSS พร้อมช่องว่างภายใน โปรเจ็กต์นี้ใช้ปลั๊กอินสำหรับ โครงการRequireJSที่อนุญาตให้โมดูลแสดงรายการไฟล์ CSS เป็นการอ้างอิง สิ่งนี้อนุญาตให้ RequireJS รอจนกว่ากฎสไตล์เฉพาะจะมีผลก่อนที่จะเผยแพร่โมดูล JavaScript ที่จะถูกประเมิน สิ่งนี้จะเป็นประโยชน์หากตัวอย่างเช่นถ้าโมดูล JavaScript ของคุณต้องการกฎ CSS ที่กำหนดไว้ในไฟล์แยกต่างหากเพื่อนำไปใช้กับ DOM ก่อนที่จะสามารถเริ่มต้นได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.