@@ -185,11 +185,11 @@ defineCustomElement(MyComponent, {
185185})
186186```
187187
188- ### 将 SFC 编译为自定义元素 {#sfc-as-custom-element}
188+ ### 将单文件组件编译为自定义元素 {#sfc-as-custom-element}
189189
190- ` defineCustomElement ` 也可以搭配 Vue 单文件组件 (SFC) 使用。但是,根据默认的工具链配置,SFC 中的 ` <style> ` 在生产环境构建时仍然会被抽取和合并到一个单独的 CSS 文件中。当正在使用 SFC 编写自定义元素时 ,通常需要改为注入 ` <style> ` 标签到自定义元素的 shadow root 上。
190+ ` defineCustomElement ` 也可以搭配 Vue 单文件组件 (SFC) 使用。但是,根据默认的工具链配置,SFC 中的 ` <style> ` 在生产环境构建时仍然会被抽取和合并到一个单独的 CSS 文件中。当正在使用单文件组件编写自定义元素时 ,通常需要改为注入 ` <style> ` 标签到自定义元素的 shadow root 上。
191191
192- 官方的 SFC 工具链支持以 “自定义元素模式”导入 SFC (需要 ` @vitejs/plugin-vue@^1.4.0 ` 或 ` vue-loader@^16.5.0 ` )。一个以自定义元素模式加载的 SFC 将会内联其 ` <style> ` 标签为 CSS 字符串,并将其暴露为组件的 ` styles ` 选项。这会被 ` defineCustomElement ` 提取使用,并在初始化时注入到元素的 shadow root 上。
192+ 官方的单文件组件工具链支持以 “自定义元素模式”导入单文件组件 (需要 ` @vitejs/plugin-vue@^1.4.0 ` 或 ` vue-loader@^16.5.0 ` )。一个以自定义元素模式加载的单文件组件将会内联其 ` <style> ` 标签为 CSS 字符串,并将其暴露为组件的 ` styles ` 选项。这会被 ` defineCustomElement ` 提取使用,并在初始化时注入到元素的 shadow root 上。
193193
194194要开启这个模式,只需要将你的组件文件以 ` .ce.vue ` 结尾即可:
195195
@@ -206,7 +206,7 @@ const ExampleElement = defineCustomElement(Example)
206206customElements .define (' my-example' , ExampleElement)
207207```
208208
209- 如果你想要自定义如何判断是否将文件作为自定义元素导入 (例如将所有的 SFC 都视为用作自定义元素 ),你可以通过给构建插件传递相应插件的 ` customElement ` 选项来实现:
209+ 如果你想要自定义如何判断是否将文件作为自定义元素导入 (例如将所有的单文件组件都视为用作自定义元素 ),你可以通过给构建插件传递相应插件的 ` customElement ` 选项来实现:
210210
211211- [ @vitejs/plugin-vue ] ( https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#using-vue-sfcs-as-custom-elements )
212212- [ vue-loader] ( https://github.com/vuejs/vue-loader/tree/next#v16-only-options )
@@ -283,6 +283,6 @@ Vue 的组件模型在设计时同时兼顾了这些需求,因此是一个更
283283
284284- 贪婪 (eager) 的插槽求值会阻碍组件之间的可组合性。Vue 的[ 作用域插槽] ( /guide/components/slots#scoped-slots ) 是一套强大的组件组合机制,而由于原生插槽的贪婪求值性质,自定义元素无法支持这样的设计。贪婪求值的插槽也意味着接收组件时不能控制何时或是否创建插槽内容的节点。
285285
286- - 在当下要想使用 shadow DOM 书写局部作用域的 CSS,必须将样式嵌入到 JavaScript 中才可以在运行时将其注入到 shadow root 上。这也导致了 SSR 场景下需要渲染大量重复的样式标签。虽然有一些[ 平台功能] ( https://github.com/whatwg/html/pull/4898/ ) 在尝试解决这一领域的问题,但是直到现在还没有达到通用支持的状态,而且仍有生产性能 / SSR 方面的问题需要解决。可与此同时,Vue 的 SFC 本身就提供了 [ CSS 局域化机制] ( /api/sfc-css-features ) ,并支持抽取样式到纯 CSS 文件中。
286+ - 在当下要想使用 shadow DOM 书写局部作用域的 CSS,必须将样式嵌入到 JavaScript 中才可以在运行时将其注入到 shadow root 上。这也导致了 SSR 场景下需要渲染大量重复的样式标签。虽然有一些[ 平台功能] ( https://github.com/whatwg/html/pull/4898/ ) 在尝试解决这一领域的问题,但是直到现在还没有达到通用支持的状态,而且仍有生产性能 / SSR 方面的问题需要解决。可与此同时,Vue 的单文件组件本身就提供了 [ CSS 局域化机制] ( /api/sfc-css-features ) ,并支持抽取样式到纯 CSS 文件中。
287287
288288Vue 将始终紧跟 Web 平台的最新标准,如果平台的新功能能让我们的工作变得更简单,我们将非常乐于利用它们。但是,我们的目标是提供“好用,且现在就能用”的解决方案。这意味着我们在采用新的原生功能时需要保持客观、批判性的态度,并在原生功能完成度不足的时候选择更适当的解决方案。
0 commit comments