如何在 Magento 2 的 javascript 文件中获取静态图像文件的 url?

How to get url for static image file in Magento 2's javascript files?

我需要从 javascript 文件 (payment.js) 中为存储在我的主题 (app/design/frontend/MyVendor/MyTheme/web/images/image.png) 中的图像获取 URL。

在PHP我可以这样做:

<?php echo $block->getViewFileUrl('images/image.png') ?>

如何在 JavaScript 中执行此操作?

我通过从 *.phtml 文件向 window 添加变量来做到这一点:

<script>
    window.imgpath = '<?php echo $block->getViewFileUrl('images/image.png') ?>';
</script>

并从 *.js 中的 window 中读取该变量:

function someFunction() {
    var imgPath = window.imgpath;
}

实际上,在 Magento 核心文件中我看到了这样的例子。

更好的方法是:

.phtml 文件

<script type="text/x-magento-init">
    {
        "*": {
            "Module/js/example":"<?php echo "test" ?>"
        }
    }        
</script>

.js 文件

define([], function () {
    var mageJsComponent = function(config)
    {
        console.log(config);
    };

    return mageJsComponent;
});

文档:http://devdocs.magento.com/guides/v2.0/javascript-dev-guide/javascript/custom_js.html

在 JavaScript 中可用于 require.toUrl('images/image.png')