Magento 2 neden `` path '' yerine RequireJS `map` kullanıyor?


18

Magento 2'nin RequireJS uygulamasında, birçok çekirdek modül böyle bir yapılandırma kullanır

map: {
    '*': {
        editTrigger:   'mage/edit-trigger',
        addClass:      'Magento_Translation/add-class'
    }
}

RequireJS'de, mapyapılandırma yönergesi geliştiricilerin RequireJS'ye

X modülünü yüklediğinizde ve Y modülünü kullandığınızda, Y modülünü Z modülüyle değiştirin - ancak yalnızca X Modülü için

Veya kodda

map: {
    'modulex':{
        'moduley':'modulez'
    }
}

Bu mapözellik temel olarak modül tanımlarını yapılandırma yoluyla değiştirmenize izin verir - Magento'da javascript için bir modül yeniden yazma özelliğidir.

Benim için açık olmayan şey ise Magento'nun mülkün *anahtarı olarak ağır kullanımı map.

map: {
    '*': {
        editTrigger:   'mage/edit-trigger',
        addClass:      'Magento_Translation/add-class'
    }
}

Temel *olarak * bu eşlemeyi tüm modüller için yap diyor ve kullanım amacı , daha spesifik modüller için değiştirilebilen bir temel modül takma adı sağlamaktır .

Ancak, Magento için bir yedek olarak kullanmak için görünür RequireJS en pathsmülkiyet . Yani Magento aşağıdakilerle aynı şeyi başarabilirdi

paths: {
    'editTrigger': 'mage/edit-trigger',
    'addClass':    'Magento_Translation/add-class',
}

ve sonra gerektiğinde seçmeli eşleme yapar.

Magento'nun neden map:*yol yumuşatma yöntemi olarak seçtiğini bilen var mı ? yani - benim farkım mapve patheksikliğim konusundaki anlayışım - ya da bu "biri altı, yarım düzine diğeri" şeylerden biri. Ya da Magento'nun bu şekilde yaparak ek davranışları var mı?

Belirli bir sorunu çözmek istemiyorum, bu konuda yoğun bir şekilde yazmaya başlamadan önce RequireJS ve Magento'nun uygulanışındaki yanlış anlamaları açıklığa kavuşturmak istemiyorum :)

Yanıtlar:


24

Bunu biraz daha araştırdıktan sonra, mapve arasında büyük bir fark buldum path. Magento çekirdek ekibinin bunu kasıtlı olarak kullanıp kullanmadığından emin değilim, ancak bir yapılandırma tanımladığınızda bu Yığın Taşması yanıtı başına map, aslında eşlemeler için bir önek tanımlarsınız . yani bu sadece

map: {
    '*': {
        editTrigger:   'mage/edit-trigger',
    }
}

yükleme sağlamak editTriggermodül aslında yükleyen mage/edit-triggermodülü, aynı zamanda bu editTrigger/fooyük olur mage/edit-trigger/foomodülü.

pathsYönerge bir önek haritalama değildir. Basit bire bir eşleme.


1
Ayrıca, doğru bir şekilde hatırlarsam, açıkça path: {foo: 'bar'}gerekli olmasını engeller barve yalnızca footakma adla erişime izin verir .
mms27
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.