Vue + Webpack + Vue-loader学习教程之功能介绍篇

Vue-loader 是什么?

vue-loader 是一个加载器,能把如下格式的 Vue 组件转化成JavaScript模块。

vue-loader 提供了一些非常酷炫的特性:

  1. ES2015认可用;
  2. 在每个 Vue 组件内支持其他的 Webpack 加载器,如用于

vue-loader 解析文件提取每个语言块,让他们通过需要的其他 loaders ,最后组装起来,放回 Commonjs 的模块,此模块的 module.exports 就是个 Vue.js 组件对象。

vue-loader 认用没有用语言编译器,想CSS 预编译和HTML模板编译语言等,如果想用这些功能,需要设置 lang 属性的来实现。例如,你可以在组件的样式中这样用 SASS :

rush:xhtml;">

在这里用的就是 ES2015 精简的语法定义个子组件。{ ComponentA } 是指 { ComponentA: ComponentA } 。Vue会被自动转为 component-a, 所以你就能在模板中引入组件

转译正常的 .js 文件

由于 vue-loader 只能处理 *.vue 文件,你需要在配置文件中告诉 Webpack 用 babel-loader 或者 buble-loader 。这点,可以用项目脚手架工具 vue-cli 。

用 .babelrc 文件来配置 Babel

.babelrc 可以控制 babel-loader ,并推荐这种方式来配置 Babel 预设插件

Scoped CSS

转换成:

rush:xhtml;">

注意

在同一组件内,你能同时用有作用域和无作用域的样式:

rush:xhtml;">
  1. 父组件的有作用域的CSS和子组件的有作用域的CSS将同时影响子组件。
  2. 有作用域的样式对其他部分没有影响。
  3. 有作用域限定的样式不排除类的需要. 由于浏览器渲染方式支持多种不同的CSS选择器,加了作用域的 p { color: red } 会慢好多倍 (即,和属性选择器组合时候的时候)。如果你用类或者id选择器,比如 .example { color: red } ,你就能消除性能损失。这里有个练习场 ,你可以比较测试下其中的差异。
  4. 在递归组件中小心后代选择器! 对于 CSS 规则的选择器 .a .b,如果匹配 .a 的元素内包含一个递归子组件,那么子组件中所有包含 .b 的元素都会被匹配到。

PostCSS

任何通过 vue-loader 处理过的 CSS 都再用 PostCSS重写有作用域限制的 CSS 部分。你也能添加自定义的 PostCSS 插件处理,例如, autoprefixer 或 CSSNext。

在 Webpack 1.x 中的用法如下:

rush:js;"> // webpack.config.js module.exports = { // 其他配置... vue: { // 使用用户自定义的 postcss 插件 postcss: [require('postcss-cssnext')()] } }

Webpack 2.x 中的用法:

rush:js;"> // webpack.config.js module.exports = { // 其他配置... plugins: [ new webpack.LoaderOptionsPlugin({ vue: { // 使用用户自定义插件 postcss: [require('postcss-cssnext')()] } }) ] }

除了接受插件的数组,postcss 选项也接受:

  • 返回值是插件数组的方法
  • 包含被传递到PostCSS处理器选项的对象。当你的项目依赖于自定义解析器或编译器的时候,这就会很有用。
rush:js;"> postcss: { plugins: [...],// list of plugins options: { parser: sugaRSS // use sugaRSS parser } }

热加载

“热加载” 不只是当你修改文件简单地重新加载下页面。当启用了热加载功能,编写完 *.vue 文件后,组件的所有的实例对象被替换,而页面并没有重新加载。仍然保持应用原有的状态。这在你调整模板或修改组件样式的时候,大大改善了开发体验。

当使用项目的脚手架工具 vue-cli ,热加载自动启用。

总结

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程之家的支持

相关文章

可以通过min-width属性来设置el-table-column的最小宽度。以...
yarn dev,当文件变动后,会自动重启。 yanr start不会自动重...
ref 用于创建一个对值的响应式引用。这个值可以是原始值(如...
通过修改 getWK005 函数来实现这一点。这里的 query 参数就是...
<el-form-item label="入库类型" ...
API 变动 样式类名变化: 一些组件的样式类名有所变动,可能需...