เพื่อความเข้าใจของฉัน JavaScript ทั้งหมดของคุณจะถูกรวมเป็น 1 ไฟล์ Rails ทำสิ่งนี้ตามค่าเริ่มต้นเมื่อเพิ่ม//= require_tree .
ลงในapplication.js
ไฟล์ Manifest ของคุณ
สิ่งนี้ฟังดูเหมือนช่วยชีวิตจริง แต่ฉันกังวลเล็กน้อยเกี่ยวกับรหัส JavaScript เฉพาะหน้า รหัสนี้จะถูกดำเนินการในทุกหน้า? สิ่งสุดท้ายที่ฉันต้องการคือการทำให้วัตถุทั้งหมดของฉันเป็นอินสแตนซ์สำหรับทุกหน้าเมื่อจำเป็นเท่านั้นใน 1 หน้า
นอกจากนี้ยังไม่มีโอกาสที่จะเกิดรหัสที่ขัดแย้งกันได้หรือไม่
หรือคุณใส่script
แท็กขนาดเล็กที่ด้านล่างของหน้าเว็บที่เพิ่งเรียกใช้เป็นวิธีการที่เรียกใช้โค้ดจาวาสคริปต์สำหรับหน้า?
คุณไม่ต้องการ require.js อีกต่อไปแล้วใช่ไหม
ขอบคุณ
แก้ไข : ฉันขอบคุณคำตอบทั้งหมด ... และฉันไม่คิดว่าพวกเขาจะได้รับปัญหาจริงๆ บางคนเกี่ยวกับการออกแบบและดูเหมือนจะไม่เกี่ยวข้อง ... และคนอื่น ๆ พูดถึงjavascript_include_tag
... ที่ฉันรู้ว่ามีอยู่ (ชัด ๆ ... ) แต่มันจะปรากฏว่าทางรถไฟ 3.1 จะก้าวไปข้างหน้าเพื่อห่อหุ้มทั้งหมด JavaScript ของคุณเป็น 1 ไฟล์แทนที่จะโหลด JavaScript ที่ด้านล่างของแต่ละหน้า
ทางออกที่ดีที่สุดที่ฉันสามารถทำได้คือห่อคุณสมบัติบางอย่างในdiv
แท็กด้วยid
s หรือclass
es ในรหัส JavaScript, คุณเพียงแค่ตรวจสอบว่าid
หรือclass
อยู่บนหน้าและถ้ามันเป็นคุณเรียกใช้รหัส JavaScript ที่เกี่ยวข้องกับมัน วิธีนี้หากองค์ประกอบแบบไดนามิกไม่ได้อยู่ในหน้ารหัส JavaScript ไม่ทำงาน - แม้ว่าจะรวมอยู่ในapplication.js
ไฟล์ขนาดใหญ่ที่บรรจุโดย Sprockets
โซลูชันด้านบนของฉันมีประโยชน์ว่าหากมีช่องค้นหาอยู่ใน 8 จาก 100 หน้ามันจะทำงานใน 8 หน้าดังกล่าวเท่านั้น คุณไม่จำเป็นต้องใส่รหัสเดียวกันใน 8 หน้าในเว็บไซต์ อันที่จริงแล้วคุณจะไม่ต้องรวมแท็กสคริปต์แบบแมนนวลในไซต์ของคุณทุกที่อีกเลย
ฉันคิดว่านี่เป็นคำตอบที่แท้จริงสำหรับคำถามของฉัน
application.js
) และอันที่จริงแล้วการอ้างอิงที่คุณให้มานั้นเป็นสาเหตุ: การดาวน์โหลดเป็น ส่วนที่ช้าที่สุดของกระบวนการดำเนินการ JS ไฟล์ขนาดเล็กจำนวนมากสามารถแคชได้มากกว่าไฟล์ขนาดใหญ่ ผู้คนที่ดูเหมือนจะไม่เข้าใจ Rails ดูเหมือนว่าคำแนะนำของพวกเขาจะไม่สอดคล้องกับหลักการที่พวกเขาพยายามที่จะยึดมั่นและดังนั้นคำแนะนำของพวกเขาไม่ควรดำเนินการอย่างจริงจัง