Magento 2'nin view.xml dosyasındaki "hariç tut" Etiketi ne işe yarar?


17

Magento 2 "blank" teması aşağıdaki etiket hiyerarşisini içerir.

<exclude>
    <item type="file">Lib::jquery/jquery-ui-1.9.2.js</item>
    <item type="file">Lib::jquery/jquery.ba-hashchange.min.js</item>
    <item type="file">Lib::jquery/jquery.details.js</item>
    <item type="file">Lib::jquery/jquery.details.min.js</item>
    <item type="file">Lib::jquery/jquery.hoverIntent.js</item>
    <item type="file">Lib::jquery/jquery.min.js</item>
    <item type="file">Lib::mage/captcha.js</item>
    <item type="file">Lib::mage/dropdown_old.js</item>
    <item type="file">Lib::mage/list.js</item>
    <item type="file">Lib::mage/loader_old.js</item>
    <item type="file">Lib::mage/webapi.js</item>
    <item type="file">Lib::moment.js</item>
    <item type="file">Lib::requirejs/require.js</item>
    <item type="file">Lib::date-format-normalizer.js</item>
    <item type="file">Lib::legacy-build.min.js</item>
    <item type="directory">Lib::modernizr</item>
    <item type="directory">Lib::tiny_mce</item>
    <item type="directory">Lib::varien</item>
    <item type="directory">Lib::jquery/editableMultiselect</item>
    <item type="directory">Lib::jquery/jstree</item>
    <item type="directory">Lib::jquery/fileUploader</item>
    <item type="directory">Lib::css</item>
    <item type="directory">Lib::lib</item>
    <item type="directory">Lib::extjs</item>
    <item type="directory">Lib::prototype</item>
    <item type="directory">Lib::scriptaculous</item>
    <item type="directory">Lib::mage/requirejs</item>
    <item type="directory">Lib::mage/adminhtml</item>
    <item type="directory">Lib::mage/backend</item>
    <item type="directory">Magento_Swagger::swagger-ui</item>
</exclude>

Bu ne için burada. yani neyin dışında tutulan nedir? Magento 2 sistem kodu bu bilgilere nerede ve ne zaman erişiyor?


5
Sizi bu bilgilerden hariç tuttuğumuz yerde değerlendiriliyor Alan.
benmarks

6
@benmarks Belirli bir sistemin uygulama detaylarından hariç tutulmak beni Magento Inc. çalışanlarının çoğuna daha yakın hissettiriyor;)
Alan Storm

Yanıtlar:


10

Magento 2, js / html dosyalarının paketlenmesini destekledi. <exclude>düğüm, paketlenmemesi gereken kaynakların listesini tanımlar. bkz \Magento\Framework\View\Asset\Bundle\ManagerAyrıntılar için


2
Donatılacak? Bu ne anlama geliyor? Magento ruby ​​paket yöneticisini destekliyor mu?
Alan Storm

'Paketleme', birden fazla kaynağın tek bir pakette / dosyada birleştirilmesi anlamına gelir. Sunucuya istek miktarını azaltarak ön uç performans iyileştirmedir.
KAndy

Hariç tutulan paketler hangileri için geçerlidir? Magento'nun ön uç varlıklarını "bir araya getirdiği" birden fazla yer var gibi görünüyor.
Alan Storm

Bir .js dosyası olup olmadığını, bunu ayrı ayrı yükleyeceğini tahmin ediyorum. Dışlanmazsa, M1'deki JS Birleştirme seçeneğine alışık olduğumuz gibi bir JS dosyasında birleştirilir. Bir dizin hariç tutulursa, o dizindeki tüm dosyalar ayrı ayrı yüklenir.
Peter Jaap Blaakmeer

Güncelleme; bu yöntem şüphemi doğrular; github.com/magento/magento2/blob/…
Peter Jaap Blaakmeer

9

Komutu yürüttüğünüzde bu yapılandırmaya erişilir

bin/magento setup:static-content:deploy

İşlevde, \Magento\Deploy\Model\Deployer::deployFileaşağıdaki iki çağrı ilgi çekicidir:

$this->assetPublisher->publish($asset);
$this->bundleManager->addAsset($asset);

İlk çağrı varlık dosyasını dosya sistemine ekler. İkinci aramanın tam olarak ne yaptığından emin değilim. Burası kayboluyorum.

Bununla birlikte, bu ikinci çağrıyı takip ederseniz, sonuçta bazı doğrulama işlevlerini bulacaksınız.

// \Magento\Framework\Config\View

/**
 * Get excluded file list
 *
 * @return array
 */
public function getExcludedFiles()
{
    $items = $this->getItems();
    return isset($items['file']) ? $items['file'] : [];
}

/**
 * Get excluded directory list
 *
 * @return array
 */
public function getExcludedDir()
{
    $items = $this->getItems();
    return isset($items['directory']) ? $items['directory'] : [];
}

/**
 * Get a list of excludes
 *
 * @return array
 */
protected function getItems()
{
    $this->initData();
    return isset($this->data['exclude']) ? $this->data['exclude'] : [];
}

Ancak, burada birkaç sorun var.

İlk olarak, fonksiyon \Magento\Framework\Config\View::getItemsher zaman boş bir dizi döndürür.

İkincisi, işlev \Magento\Framework\View\Asset\Bundle\Manager::isExcludedFileher zaman geri dönecektirfalse

/**
 * Check if asset file is excluded
 *
 * @param string $filePath
 * @param LocalInterface $asset
 * @return bool
 */
protected function isExcludedFile($filePath, $asset)
{
    /** @var $asset LocalInterface */
    $filePathInfo = $this->splitPath($filePath);
    if ($filePathInfo && $this->compareModules($filePathInfo, $asset)) {
        return $asset->getSourceFile() == $filePathInfo['excludedPath'];
    }
    return false;
}

Çünkü $asset->getSourceFile()varlık dosyasına mutlak yol, $filePathInfo['excludedPath']göreceli yol ise.

Yani, gördüğüm kadarıyla <exclude>yapılandırma yine de çalışmaz. Ama eğer işe yarayacaksa, varlık \Magento\Framework\View\Asset\Bundle.

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.