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

作者:Terry√ 时间:2024-04-29 13:10:40 

前言

之前已经介绍过了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")
]
}

总结

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

来源:http://www.cnblogs.com/lvyongbo/p/5964501.html

标签:webpack,vue,Vue-loader
0
投稿

猜你喜欢

  • Python Flask搭建yolov3目标检测系统详解流程

    2023-07-07 12:40:05
  • python冒泡排序简单实现方法

    2022-09-27 12:28:57
  • Python 反转输出正整数的操作

    2021-05-04 18:37:16
  • JS FormData对象使用方法实例详解

    2024-02-25 04:54:46
  • python列表切片和嵌套列表取值操作详解

    2021-07-23 21:54:30
  • vue中渐进过渡效果实现

    2024-04-10 10:32:54
  • python 使用tkinter+you-get实现视频下载器

    2023-08-15 18:40:25
  • python 动态调用函数实例解析

    2021-03-11 09:31:41
  • python枚举类型定义与使用讲解

    2021-04-11 08:55:42
  • Python pandas DataFrame操作的实现代码

    2021-07-24 00:49:43
  • PyTorch 对应点相乘、矩阵相乘实例

    2021-10-23 16:33:29
  • python openCV实现摄像头获取人脸图片

    2021-08-16 08:21:03
  • python操作日期和时间的方法

    2021-08-29 18:32:59
  • Python中用pyinstaller打包时的图标问题及解决方法

    2021-11-10 01:41:33
  • Vue不能watch数组和对象变化解决方案

    2024-04-30 10:41:06
  • js判断undefined类型,undefined,null, 的区别详细解析

    2024-05-09 10:34:26
  • python错误提示:Errno 2] No such file or directory的解决方法

    2022-03-30 10:46:26
  • Python批量修改文本文件内容的方法

    2022-07-16 08:37:43
  • mysql 将列值转变为列的方法

    2024-01-18 21:27:38
  • Python NLP开发之实现聊天机器人

    2021-12-21 18:04:48
  • asp之家 网络编程 m.aspxhome.com