Trong triển khai RequireJS của Magento 2, nhiều mô-đun cốt lõi sử dụng cấu hình giống như thế này
map: {
'*': {
editTrigger: 'mage/edit-trigger',
addClass: 'Magento_Translation/add-class'
}
}
Trong RequireJS, map
chỉ thị cấu hình cho phép các nhà phát triển nói với RequireJS
Khi bạn tải mô-đun X và nó sử dụng mô-đun Y, thay thế mô-đun Y bằng mô-đun Z - nhưng chỉ cho Mô-đun X
Hoặc, trong mã
map: {
'modulex':{
'moduley':'modulez'
}
}
Các map
tính năng cơ bản cho phép bạn trao đổi trên định nghĩa mô-đun thông qua cấu hình - trong Magento nói chuyện, đó là một tính năng mô-đun viết lại cho javascript.
Điều không rõ ràng với tôi là việc Magento sử dụng rất nhiều *
làm chìa khóa cho map
tài sản.
map: {
'*': {
editTrigger: 'mage/edit-trigger',
addClass: 'Magento_Translation/add-class'
}
}
Các *
cơ bản nói * làm bản đồ này cho tất cả các mô-đun, và trường hợp mục đích sử dụng của nó là là cung cấp một răng cưa mô-đun cơ sở có thể được thay đổi để biết thêm module cụ thể.
Tuy nhiên, Magento dường như sử dụng nó để thay thế cho tài sản của RequireJSpaths
. tức là có vẻ như Magento có thể đạt được điều tương tự với những điều sau đây
paths: {
'editTrigger': 'mage/edit-trigger',
'addClass': 'Magento_Translation/add-class',
}
và sau đó chọn lọc làm ánh xạ cụ thể khi cần thiết.
Có ai biết tại sao Magento chọn map:*
làm phương pháp cho bí danh đường dẫn không? tức là - là sự hiểu biết của tôi về sự khác biệt giữa map
và path
không đầy đủ - hoặc đây là một trong những điều "Sáu của một, một nửa tá những thứ khác". Hoặc có một số hành vi bổ sung mà Magento có được bằng cách thực hiện theo cách này.
Không yêu cầu giải quyết một vấn đề cụ thể, yêu cầu làm rõ mọi hiểu lầm về việc triển khai RequireJS và Magento trước khi tôi bắt đầu viết nhiều về nó :)
path: {foo: 'bar'}
sẽ chặn bạn yêu cầubar
rõ ràng và sẽ chỉ cho phép truy cập nó bằngfoo
bí danh.