ในการติดตั้ง RequireJS ของ Magento 2 โมดูลหลักจำนวนมากใช้การกำหนดค่าแบบนี้
map: {
'*': {
editTrigger: 'mage/edit-trigger',
addClass: 'Magento_Translation/add-class'
}
}
ใน RequireJS map
คำสั่งกำหนดค่าอนุญาตให้ผู้พัฒนาสามารถบอก RequireJS ได้
เมื่อคุณโหลดโมดูล X และใช้โมดูล Y แทนที่โมดูล Y ด้วยโมดูล Z - แต่สำหรับโมดูล X เท่านั้น
หรือในรหัส
map: {
'modulex':{
'moduley':'modulez'
}
}
map
คุณลักษณะโดยทั่วไปช่วยให้คุณสามารถสลับออกคำจำกัดความโมดูลผ่านการตั้งค่า - ในวีโอไอพีพูดมันเป็นคุณลักษณะโมดูลสำหรับเขียนจาวาสคริปต์
สิ่งที่ไม่ชัดเจนสำหรับฉันคือการใช้ Magento อย่างหนักใน*
ฐานะกุญแจสำหรับmap
อสังหาริมทรัพย์
map: {
'*': {
editTrigger: 'mage/edit-trigger',
addClass: 'Magento_Translation/add-class'
}
}
*
โดยทั่วไปว่า * ทำทำแผนที่นี้ได้ทุกโมดูลและกรณีการใช้งานที่ตั้งใจไว้คือเป็นให้ aliasing โมดูลฐานที่สามารถเปลี่ยนแปลงได้สำหรับโมดูลเฉพาะเจาะจงมากขึ้น
อย่างไรก็ตามวีโอไอพีจะปรากฏขึ้นเพื่อใช้แทนสำหรับRequireJS ของpaths
สถานที่ให้บริการ นั่นคือดูเหมือนว่าวีโอไอพีจะประสบความสำเร็จในสิ่งเดียวกันด้วยสิ่งต่อไปนี้
paths: {
'editTrigger': 'mage/edit-trigger',
'addClass': 'Magento_Translation/add-class',
}
จากนั้นเลือกการทำแผนที่เฉพาะเมื่อจำเป็น
ไม่มีใครรู้ว่าเพราะเหตุใด Magento จึงเลือกmap:*
ใช้วิธีการสร้างสมนามเส้นทาง เช่น - คือความเข้าใจของฉันเกี่ยวกับความแตกต่างระหว่างmap
และpath
ไม่สมบูรณ์ - หรือเป็นหนึ่งในสิ่งเหล่านี้ "หกในหนึ่งครึ่งอีกครึ่งโหล" หรือมีพฤติกรรมเพิ่มเติมที่วีโอไอพีได้รับโดยการทำเช่นนี้
ไม่ขอให้แก้ปัญหาเฉพาะเจาะจงขอให้ชี้แจงความเข้าใจผิดเกี่ยวกับการใช้ RequireJS และ Magento ก่อนที่ฉันจะเริ่มเขียนเรื่องนี้ :)
path: {foo: 'bar'}
จะป้องกันคุณจากการกำหนดbar
อย่างชัดเจนและจะอนุญาตให้เข้าถึงได้โดยfoo
นามแฝง