mhsdesign / proposal-neos-ui-esm-plugin-loader
此包已被废弃,不再维护。未建议替代包。
允许在 Neos.Ui 中加载 ES-Module 插件
1.0.0
2022-09-07 09:29 UTC
Requires
- neos/neos-ui: ^7.0 || ^8.0
README
通过允许 <src type="module" />
加载 ES-Module 插件,在 Neos.Ui 中实现完全兼容
与使用 Esbuild 的 ESM Neos Ui 插件构建器
Neos.Ui 中存在的问题
使用方法
Neos.Neos.Ui.resources.javascript 和样式表可以使用建议的 attributes
数组。
Neos: Neos: Ui: resources: javascript: 'My.Cool:Plugin': resource: 'resource://My.Cool/Public/NeosUserInterface/Plugin.js' # legacy first level attribute 'defer' # defer: true # NEW Attributes! attributes: type: "module" defer: true any: "thing" stylesheets: 'My.Cool:Plugin': # NEW Attributes! attributes: any: "thing"
安装
composer require mhsdesign/proposal-neos-ui-esm-plugin-loader
实现
Neos.Ui 使用了一个 StyleAndJavascriptInclusionService,它读取 Neos.Neos.Ui.resources.javascript
并从中构建 html <src>
标签。
现在,在 Objects.yaml 中替换了此服务的一个版本,允许添加额外的属性。
(第 100 行)
- $defer = key_exists('defer', $element) && $element['defer'] ? 'defer ' : ''; - $result .= $builderForLine($finalUri, $defer); + $additionalAttributes = array_merge( + // legacy first level 'defer' attribute + isset($element['defer']) ? ['defer' => $element['defer']] : [], + $element['attributes'] ?? [] + ); + $result .= $builderForLine($finalUri, $this->htmlAttributesArrayToString($additionalAttributes));