携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天
vue-loader 会解析文件,提取出每个语言块,如果有必要会通过其他 loader 处理,最后将他们组装成一个 commonjs 模块;module.exports 出一个 vue.js 组件对象;
一、< temlate>语言块
1.默认语言:html
2.每个.vue 文件最多包含一个< template>块
3.内容将被提取为字符串,将编译用作 VUE 组件的 template 选项;
二、script
1.默认语言:
JS(在监测到 babel-loader 或者 buble-loader 配置时,自动支持 ES2015)
2.每个.vue 文件最多包含一个script块
3.该脚本在类 CommonJS 环境中执行(就像通过 webpack打包的正常JS模块)。所以你可以 require()其他依赖。在 ES2015 支持下,也可以使用 import 跟 export 语法
4.脚本必须导出 Vue.js 组件对象,也可以导出由 VUE.extend()创建的扩展对象;但是普通对象是更好的选择;
三、style
默认语言:css
1.一个.vue 文件可以包含多个style标签
2.这个标签可以有 scoped 或者 module 属性来帮助你讲样式封装到当前组件;具有不同封装模式的多个< style>标签可以在同一个组件中混合使用
3.默认情况下,可以使用 style-loader 提取内容,并且通过style标签动态假如文档的head中,也可以配置 webpack 将所有的 styles 提取到单个CSS文件中;
四、自定义块
可以在.vue 文件中添加额外的自定义块来实现项目的特殊需求;例如docs块;vue.loader 将会使用标签名来查找对应的 webpack loaders 来应用到对应的模块上;webpack 需要在 vue-loader 的选项loaders 中指定;
vue-loader 支持使用非默认语言,比如 CSS 预处理器,预编译的 HTML 模板语言,通过设置语言块的lang 属性:
五、vue 中 key 值的作用
当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用“就地复用”策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。key 的作用主要是为了高效的更新虚拟 DOM。