gpt4 book ai didi

vue.js - 如何限制 Vue.js 组件样式的范围?

转载 作者:搜寻专家 更新时间:2023-10-30 22:44:20 26 4
gpt4 key购买 nike

我正在尝试使用单个文件 .vue 组件,我的第一次成功构建让我对组件样式的范围感到惊讶。一般来说,我的印象是单个文件组件是自包含的,包括它们的组件范围。

组件.vue文件为

<template>
<div>
Hello {{who}}
</div>
</template>

<script>
module.exports = {
data: function () {
return {
who: "John"
}
}
}
</script>

<style>
div {
color: white;
background-color: blue;
}
</style>

它是通过 webpack 通过以下 webpack.config.js

构建的
module.exports = {
entry: './entry.js',
output: {
filename: 'bundle.js'
},
devServer: {
inline: true
},
module: {
rules: [{
test: /\.vue$/,
loader: 'vue-loader'
}]
}
}

entry.js

import Vue from 'vue/dist/vue.js'
import ComponentOne from './component1.vue'

//Vue.component('component-one', ComponentOne)
new Vue({
el: "#time",
data: {
greetings: "bonjour"
},
components: { ComponentOne }
})

绑定(bind)在一起的 HTML 文件是

<!DOCTYPE html>
<html lang="en">
<body>
Greetings:
<div id="time">
{{greetings}}
<component-one></component-one>
</div>
<script src='bundle.js'></script>
</body>
</html>

渲染结果为

enter image description here

component-onediv 的样式定义也应用于父级 div(id=时间)。这是预期的行为吗?样式不应该局限于组件吗?


注意:我可以在组件的 template 中为 div 分配一个 id 并因此包含样式 - 我的问题是为什么这种行为在组件自包含的上下文中是预期的。

最佳答案

样式的范围will not be limited到组件的范围,除非您使用 scoped 属性显式标记样式:

<style scoped>
div {
color: white;
background-color: blue;
}
</style>

此外,由于您使用 webpack 创建单个捆绑文件,因此浏览器无法将样式从一个组件分离到下一个组件,因为所有组件都将同时加载和解析。

如果您想减少一个组件对其他组件的占用空间,您需要确定样式的范围并利用代码拆分,尽管在您的情况下,只需标记样式就足够了。

关于vue.js - 如何限制 Vue.js 组件样式的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45306298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com