【发布时间】:2021-01-27 03:47:31
【问题描述】:
我在 the documentation 中找不到它的引用,但 Vue 似乎会自动去除模板中的 <style> 标签。例如,如果您的组件位于 .js 文件中,例如...
export default {
template: (
`<section>
<style scoped>
header { color: blue; }
</style>
<header>Hello!</header>
...
</section>`
),
// data, methods, etc.
};
...那么你的标题不会是蓝色的;样式将随着警告"Tags with side effect (<script> and <style>) are ignored in client component templates." 消失而消失@
但是,如果您使用 .vue 文件和 vue cli,通常建议您使用三个部分 - <style scoped> 用于您的 CSS,<script> 用于您的 JavaScript,<template> 用于您的 HTML 模板。
除非有其他(未记录的?)方法通过组件的配置参数设置样式,否则有两种不同的范例——一种用于 js 中的组件,另一种用于 vue 组件。为什么是这样?非 vue-cli 用户是否有另一种方法可以将组件范围的样式添加到他们的 vue 应用程序中?
【问题讨论】:
-
可能是安全问题。两者都需要注射。
-
在模板字符串中这样做需要模板编译器比现在复杂得多。 非 vue-cli 用户是否有另一种方法可以将组件范围的样式添加到他们的 vue 应用程序中? - 请参阅 stackoverflow.com/questions/42765262/…。
-
另一种方法是将作用域委托给 CSS 模块加载器并使用生成的类名作为
:className="importedClassName",请参阅webpack.js.org/loaders/css-loader/#scope。这就是 React 通常的做法,medium.com/@0n3z3r0n3/…
标签: javascript css vue.js vuejs3