Vue + Webpack + Vue-loader学习教程之相关配置篇


Posted in Javascript onMarch 14, 2017

前言

之前已经介绍过了Vue + Webpack + Vue-loader的相关功能介绍,大家可以点击这篇文章了解详情。下面就来看看相关配置篇,感兴趣的可以参考学习。

使用预处理器

在 Webpack 中,所有的预处理器需要和一个相应的加载器一同使用。vue-loader 允许你用其它的 Webpack 加载器去处理 Vue 组件一部分代码。它会根据 lang 属性自动用适当的加载器去处理。

CSS

例如,我们编译用 SASS 编译 <style> 标签:

npm install sass-loader node-sass --save-dev
<style lang="sass">
 /* 这里写一些 sass 代码 */
</style>

在引擎内,首先,<style> 标签内的内容会被 sass-loader 编译,然后再被进一步处理。

JavaScript

默认情况下,Vue 组件内的所有 JavaScript 会被 babel-loader 处理。当然,你也可以更改:

npm install coffee-loader --save-dev
<script lang="coffee">
 # 这里写一些 coffeescript!
</script>

Templates

处理模板的过程有点不同,因为大多 Webpack 模板加载器(比如 jade-loader )会返回一个模板处理函数,而不是被编译过的 HTML 字符串。我们只要安装 jade ,而不是 jade-loader :

npm install jade --save-dev
<template lang="jade">
div
 h1 Hello world!
</template>

重要提示: 如果你使用 vue-loader@<8.2.0, 你也需要安装 template-html-loader.

内联加载请求

在 lang 属性上,你能使用 Webpack loader requests :

<style lang="sass?outputStyle=expanded">
 /* use sass here with expanded output */
</style>

但是,注意这样只适用特定的 Webpack,并不兼容 Browserify 和 vueify。 如果你想让你的 Vue 组件发布成一个第三方组件的话,避免这样使用

URL资源处理

默认情况,vue-loader 是自动用 css-loader 和 Vue 组件编译器来处理样式和模板文件的。在处理过程中,所有的资源 URL 比如<img src="..."> , background: url(...) 和 CSS @import 都是被当做依赖的模块来处理。

例如,url(./image.png) 被转译成 require('./image.png')

<img src="../image.png">

如上会被再转译成:

createElement('img', { attrs: { src: require('../image.png') }})

因为 .png 并不是个 JavaScript 文件,你需要配置 Webpack 使用 file-loader 或者 url-loader 处理它们。项目脚手架工具 vue-cli 也能帮你配置这些。

这样做的好处是:

  1. file-loader 允许你指定在哪里复制和存放静态资源文件 ,以及用版本哈希值命名从而更好利用缓存。 这意味着,可以把图片放到 *.vue 文件旁边,可使用相对路径,而不需要担心发布时候的 URL。使用适当的配置,Webpack 在打包输出的时候,会自动把文件路径转为正确的 URL。
  2. url-loader 允许你内联 base-64 数据格式的URL资源,如果小于设定的阈值。这样可以减少 HTTP 请求小文件的数量。如果文件大于这个阈值。会自动it automatically falls back to file-loader.

加载器高级配置

若你想自定义载器的配置,不要 vue-loader 来推断。 或你只想覆盖加载器内置的配置。 那就这样做,在你 Webpack 配置文件里,添加一个 vue 块,并指定 loaders 选项:

Webpack 1.x Example:

// webpack.config.js
module.exports = {
 // other options...
 module: {
 loaders: [
  {
  test: /\.vue$/,
  loader: 'vue'
  }
 ]
 },
 // vue-loader 配置
 vue: {
 // ... 其他 vue 选项
 loaders: {
  // 用 coffee-loader 加载所有没有 "lang" 属性的 <script> 
  js: 'coffee',
  // 直接把 <template> 作为 HTML 字符串来加载,不需先用 vue-html-loader 处理。
  html: 'raw'
 }
 }
}

Webpack 2.x (^2.1.0-beta.25):

module.exports = {
 // 其他选项...
 module: {
 // module.rules 是和版本1.x中的 module.loaders 是相同的
 rules: [
  {
  test: /\.vue$/,
  loader: 'vue',
  // vue-loader 选项在这里配置
  options: {
   loaders: {
   // ...
   }
  }
  }
 ]
 }
}

这里是个实际的加载器配置高级用法的实例 提取组件内的 CSS 到单独文件。

提取CSS到单独文件

如下是提取所有程序的 Vue 组件中的 CSS 到一个单独的 CSS 文件的配置:

Webpack 1.x

npm install extract-text-webpack-plugin --save-dev
// webpack.config.js
var ExtractTextPlugin = require("extract-text-webpack-plugin")

module.exports = {
 // other options...
 module: {
 loaders: [
  {
  test: /\.vue$/,
  loader: 'vue'
  },
 ]
 },
 vue: {
 loaders: {
  css: ExtractTextPlugin.extract("css"),
  // 你也能包含 <style lang="less"> 或其他语言
  less: ExtractTextPlugin.extract("css!less")
 }
 },
 plugins: [
 new ExtractTextPlugin("style.css")
 ]
}

Webpack 2.x (^2.1.0-beta.25)

npm install extract-text-webpack-plugin@2.x --save-dev
// webpack.config.js
var ExtractTextPlugin = require("extract-text-webpack-plugin")

module.exports = {
 // 其他选项...
 module: {
 rules: [
  {
  test: /\.vue$/,
  loader: 'vue',
  options: {
   loaders: {
   css: ExtractTextPlugin.extract({
    loader: 'css-loader',
    fallbackLoader: 'vue-style-loader' // <- this is a dep of vue-loader, so no need to explicitly install if using npm3
   })
   }
  }
  }
 ]
 },
 plugins: [
 new ExtractTextPlugin("style.css")
 ]
}

总结

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

Javascript 相关文章推荐
JavaScript脚本性能的优化方法
Feb 02 Javascript
JS中数组Array的用法示例介绍
Feb 20 Javascript
jQuery ajax调用WCF服务实例
Jul 16 Javascript
JSON与XML优缺点对比分析
Jul 17 Javascript
不得不分享的JavaScript常用方法函数集(下)
Dec 25 Javascript
基于javascript实现根据身份证号码识别性别和年龄
Jan 22 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
Dec 20 Javascript
JS实现移动端实时监听输入框变化的实例代码
Apr 12 Javascript
javascript函数的节流[throttle]与防抖[debounce]
Nov 15 Javascript
layui表格数据复选框回显设置方法
Sep 13 Javascript
详解vue修改elementUI的分页组件视图没更新问题
Nov 13 Javascript
原生js实现放大镜组件
Jan 22 Javascript
canvas实现刮刮卡效果
Mar 14 #Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
Mar 14 #Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
Mar 14 #Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
Mar 14 #Javascript
前端框架学习总结之Angular、React与Vue的比较详解
Mar 14 #Javascript
jQuery ajax实现省市县三级联动
Mar 07 #Javascript
Javascript前端经典的面试题及答案
Mar 14 #Javascript
You might like
PHP版国家代码、缩写查询函数代码
2011/08/14 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
使用PHP实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
2011/10/09 PHP
使用PHP json_decode可能遇到的坑与解决方法
2017/08/03 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
Laravel实现搜索的时候分页并携带参数
2019/10/15 PHP
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
2010/03/16 Javascript
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
JS实现可点击展开与关闭的左侧广告代码
2015/09/02 Javascript
全面理解JavaScript中的闭包
2016/05/12 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
2016/08/25 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
Angular学习笔记之集成三方UI框架、控件的示例
2018/03/23 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
react native 仿微信聊天室实例代码
2019/09/17 Javascript
vue实现在线预览pdf文件和下载(pdf.js)
2019/11/26 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
详解JavaScript原型与原型链
2020/11/16 Javascript
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
[12:29]《一刀刀一天》之DOTA全时刻19:蝙蝠骑士田伯光再度不举
2014/06/10 DOTA
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
调试Python程序代码的几种方法总结
2015/04/28 Python
Python查询阿里巴巴关键字排名的方法
2015/07/08 Python
python中enumerate函数遍历元素用法分析
2016/03/11 Python
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
Python实现SQL注入检测插件实例代码
2019/02/02 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
Python基础之字典常见操作经典实例详解
2020/02/26 Python
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
工程采购员岗位职责
2014/03/09 职场文书
2014年行政部工作总结
2014/11/19 职场文书
土建技术员岗位职责
2015/04/11 职场文书
工作一年自我鉴定
2019/06/20 职场文书