⭐佛系回答
scoped 原理?
不就是给那啥加一个特殊标识,然后样式就被唯一标记,就实现了样式隔离的作用。
⭐⭐普通回答
scoped 原理呀
当 style 标签加上 scoped 属性时,scoped 会在 DOM 结构及 css 样式上加上唯一性的标记 data-v-xxx 属性,从而达到样式私有化,不污染全局的作用;
⭐⭐⭐专业回答
嗯!
Scope CSSappointment 的本质是基于 HTM长沙师范学院L 和 CSS 属性选择器,即分别给 HTML 标签和 CSS 选择器添加data-v-xxx;
具体来说,它是 通过 vue-loader 实现 的,实现过程html个人网页完整代码大致分 3 步:
- 首先 vue-loader 会解析 .vue 组件,提取出template、html5script、style对应的代码块;
- 然后构造组件实例,在appreciate组件实例的选项上绑定 ScopedId;
- 最后对style的 CS仓鼠寿命S 代码进行appstore编译转化,应用 ScopedId 生成选择器的属性;
⭐⭐⭐⭐大师回答
Vue scoped,Webpack原理,涉及到 vue-loader 的处理策略:
一、首先呢,是 VueLoaderPlugin 策略:
VueLoaderPlugin 先获取了 webpack 原来的 rules( 即
compiler.option.module.rule
的比如test:/.vue$/
规则),然后创建了pitcher
规则,pitcher 中的 pitchehtml个人网页完整代码r-loader 可以通过 resourceQuery 识别引入文件的 query 带的关键字,进行 loader 解析;(pitcher-loader 提供了前置运行和熔断运行的机制)然后 VueLoaderPlugwebpack配置in 将进长生十万年行
clonedRule
( 即对 vueRule 以外的 ruappstorele 进行处理),具体是重写 resource 和 resourceQuery,使得 loader 最终能匹配上文件;举例:对于webpack热更新原理 vue+ts 的写法,会在 vue 的 script 标签中加上 lang=’ts’,重写后 fakhtml5eresourceQuery 文件路径为 xx.vue.ts,然后结合ts-loader 的 resource 过滤方法
/.tsx?$/
匹配上文件然后才webpack是什么来到:
vueRulewebpack环境变量配置
的 vue-loader 执行阶段;
这里简单理解:VueLoaderPlugin 就是来处理 rule 的,让 loader 能够和文件匹配。处理顺序:pitcher
⇒ clonedRule
⇒ vueRule
二、 有了上面的匹配文件,接着来到了 vue-lwebpack最多支持几个入口oader 处理环节,首先
@vue/component-compilwebpack打包流程er-utils
.parse
方法可以将 .htmlvue 文件按照 template/script/stylapplee 分成代码块webpack配置,此时会根据文件路径和文件内容生成hash
值,并赋给 id ,跟在文件参数后面;
// 形如 `id=7ba5bd90` :
// template
import {render,staticRenderFns} from "./App.vue?vue&type=template&id=7ba5bd90&scoped=true&";
// script
import script from "./App.vue?vue&type=script&lang=js&";
// style
import style0 from "./App.vue?vue&type=style&index=0&id=7ba5bd90&scoped=true&lang=css&";
三、对于 style 代码块,vue-loader 会在 css-loa仓鼠寿命der 前增加
styl陈思思ePostLoader
,stylePostLoader
正是 Vue scopewebpack热更新原理d 的原理核心之一,它会给每个选择器增加属性[data-v-hash]
,这里的 hash 值就是上面html个人网页完整代码的 id 值;四、同时,对于 template 的 render 块,v长沙市天气uHTMLe-loader 的
normalizeComponent
方法,判断如果 vue 文件中有 scoped 的 style,则其返回的options._ScopedId
为上面的 scopedId;在 vnode 渲染生成 DOM 的时候会在 dom元素上增增加 scopedId,也就是增加 data-v-hash。
这样,经过上面的过程,Vue scoped 实html代码现了 CSS 的模长沙师范学院块私有approve化。
⭐⭐webpack打包流程⭐⭐⭐ 王者回答
不知道。。。
不过,,,这影响我单手开法拉利吗?
OK,以上便是本篇分享。 觉得不错点个赞吧,您的鼓励,我的动力,坚持输出质量好文~~ 欢迎评论留言 我是安东尼,输出暴露输入,技术洞见生活。再会吧~~
发表回复
要发表评论,您必须先登录。