Magento 2 के view.xml फ़ाइल में "बहिष्कृत" टैग क्या करता है


17

Magento 2 "रिक्त" विषय में निम्न टैग पदानुक्रम शामिल है।

<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>

इसके लिए यहां क्या है यानी किस चीज से बाहर रखा गया है? Magento 2 सिस्टम कोड इस जानकारी को कहाँ और कब एक्सेस करता है?


5
इसका मूल्यांकन उसी स्थान पर किया जाता है, जहां हमने आपको इस जानकारी से बाहर रखा था, एलन।
21

6
@ चिह्न एक विशेष प्रणाली के कार्यान्वयन विवरण से बाहर रखा जा रहा है मुझे Magento इंक के अधिकांश कर्मचारियों के करीब महसूस करता है;)
एलन स्टॉर्म

जवाबों:


10

Magento 2 ने js / html फ़ाइलों के बंडलिंग का समर्थन किया। <exclude>नोड उन संसाधनों की सूची को परिभाषित करता है जिन्हें बंडल नहीं किया जाना चाहिए। देख \Magento\Framework\View\Asset\Bundle\Managerजानकारी के लिए


2
Bundling? इसका क्या मतलब है? Magento एक माणिक पैकेज प्रबंधक का समर्थन करता है?
एलन स्टॉर्म

'बंडलिंग' का अर्थ है एक पैकेज / फ़ाइल में कई संसाधनों का संयोजन। यह सर्वर के लिए अनुरोध की मात्रा कम करके प्रदर्शन में सुधार है।
कांडी १५'१६ को १०:१२

कौन सी बंडलिंग पर लागू नहीं होती है? प्रतीत होता है कि कई जगह मैगेंटो "बंडल्स" फ्रंटएंड एसेट्स हैं।
एलन स्टॉर्म

मैं अनुमान लगा रहा हूँ कि यह एक .js फ़ाइल है, यह व्यक्तिगत रूप से लोड होगा। यदि इसे बाहर नहीं किया जाता है, तो इसे जेएस फ़ाइल में मिला दिया जाएगा, जैसे कि हम एम 1 में जेएस मर्ज विकल्प के साथ उपयोग करते हैं। यदि एक dir को बाहर रखा गया है, तो उस dir की सभी फाइलें व्यक्तिगत रूप से लोड की जाएंगी।
पीटर जाप ब्लाकेमिर

अपडेट करें; यह विधि मेरे संदेह की पुष्टि करती है; github.com/magento/magento2/blob/…
पीटर जाप ब्लैकेमर

9

जब आप कमांड निष्पादित करते हैं तो यह कॉन्फ़िगरेशन एक्सेस किया जाता है

bin/magento setup:static-content:deploy

फ़ंक्शन में \Magento\Deploy\Model\Deployer::deployFile, निम्नलिखित दो कॉल रुचि के हैं:

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

पहला कॉल फ़ाइल फ़ाइल सिस्टम में एसेट फ़ाइल जोड़ देगा। मुझे यकीन नहीं है कि दूसरा कॉल वास्तव में क्या करता है। यहीं से मेरी हार हो रही है।

हालाँकि, यदि आप इस दूसरी कॉल का अनुसरण करते हैं, तो आपको कुछ सत्यापन कार्य मिलेंगे, जो अंततः हो सकते हैं

// \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'] : [];
}

लेकिन, यहां कुछ मुद्दे हैं।

सबसे पहले, फ़ंक्शन \Magento\Framework\Config\View::getItemsहमेशा एक खाली सरणी लौटाता है।

दूसरा, फ़ंक्शन \Magento\Framework\View\Asset\Bundle\Manager::isExcludedFileहमेशा वापस आ जाएगाfalse

/**
 * 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;
}

क्योंकि $asset->getSourceFile()संपत्ति फ़ाइल के लिए पूर्ण पथ है, जबकि $filePathInfo['excludedPath']एक सापेक्ष पथ है।

इसलिए, जहां तक ​​मैं देख सकता हूं कि <exclude>कॉन्फ़िगरेशन वैसे भी काम नहीं करेगा। लेकिन अगर यह काम करेगा तो परिसंपत्ति को इससे बाहर रखा जाएगा \Magento\Framework\View\Asset\Bundle

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.