广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >Vue + Webpack + Vue-loader有什么用
  • 342
分享到

Vue + Webpack + Vue-loader有什么用

2024-04-02 19:04:59 342人浏览 八月长安
摘要

这篇文章主要介绍Vue + webpack + Vue-loader有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Vue-loader 是什么?vue-loader 是一个加

这篇文章主要介绍Vue + webpack + Vue-loader有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Vue-loader 是什么?

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

Vue + Webpack + Vue-loader有什么用

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

  1. ES2015默认可用;

  2. 在每个 Vue 组件内支持其他的 WEBpack 加载器,如用于<style>的 SASS 和用于<template> 的 Jade。

  3. 把 <style> 和 <template> 内引用的静态资源作为模块依赖项对待,并用Webpack 加载器处理。

  4. 对每个组件模拟有作用域的CSS

  5. 开发阶段支持组件的热加载。

简单来说,webpack 和 vue-loader 的组合为你创作Vue应用的一个更先进、更灵巧的极其强大的前端开发模式。

Webpack 是什么?

如果你熟悉 Webpack 那就跳过这部分吧,但对于那些新手们,请看下这个简单介绍吧:

Webpack 是一个模块打包工具。在开发中,它把一堆文件中每个都作为一个模块处理,找出它们间的依赖关系,并打包成待发布的静态资源。

Vue + Webpack + Vue-loader有什么用

列举一个基本例子,设想我们有一堆的 Commonjs 的引用。它们是不能在浏览器直接运行,所以需要把它们 捆绑 成 <script> 标记内的单一文件。Webpack 就能按照 require() 调用的依赖关系为我们做到这点。

实际上,Webpack 能做的更多,通过 "loaders" 我们能让 Webpack 按照我们想要的任何方式打包输出。例如:

  1. 编译 ES2015、CoffeeScript 或 typescript 模块成 ES5 CommonJS 的模块;

  2. 编译之前,可以通过 linter 校验源代码。

  3. 编译 Jade 模板成 html 并内联 JavaScript 字符串

  4. 编译 SASS 文件成 CSS,然后把生成的CSS插入到 <style> 标签内,然后再转译成 JavaScript 代码段。

  5. 处理在 HTML 或 CSS 文件中引用的图片文件,根据配置路径把它们移动到任意位置,根据 MD5 hash 命名。

  6. 如果你学会了Webpack,就会知道它有多么强大,它非常显著地改善你前端开发的效率。它主要的缺点是配置方式有点麻烦,但是有了我这份使用指南,那使用 Webpack + Vue + vue-loader 的时候,基本上就扫清了大多数障碍了。

Vue 组件规格

*.vue 文件是用户用 HTML-like 的语法编写的 Vue 组件。每个 *.vue 文件都包括三部分 <template>, <script> 和 <style>:

<template>
 <div class="example">{{ msg }}</div>
</template>
<script>
export default {
 data () {
 return {
 msg: 'Hello world!'
 }
 }
}
</script>
<style>
.example {
 color: red;
}
</style>

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

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

<style lang="sass">
 
</style>

更多细节查看 [使用预编译器]。

语言块

<template>

  • 默认语言:html 。

  • 每个 *.vue 文件几乎都包含一个 <template> 块。

  • <template> 内的内容字符串会被提取出来,用来编译进 Vue 组件内的 template 选项。

<script>

  • 默认语言:js(默认ES2015也会通过Babel支持)。

  • 每个 *.vue 文件几乎都包含一个 <script> 块。

  • 脚本就像在CommonJS的环境中一样被执行(就像通过WebPACK中捆绑一个正常的.js模块)。就是说你可以 require() 其他的依赖项。由于默认支持 ES2015 ,你也可以用 import 和 export 语法。

  • 该脚本必须导出一个 Vue.js 组件选项对象,也支持导出一个用 Vue.extend() 创建的扩展构造函数,但首先是导出普通对象。

<style>

  • 默认语言:css。

  • 每个 *.vue 文件支持多个 <style> 标签。

  • 默认,会通过 style-loader 把内容提取并加载到文档的 <head> 内的 <style> 标签内。这也是可以[通过配置 Webpack 使组件内所有样式提取到一个单一的CSS文件]。

Src Imports

如果你喜欢把你的 *.vue 组件拆分成多个文件,那么你可以用 src 属性导入外部文件,代码如下:

<template src="./template.html"></template>
<style src="./style.css"></style>
<script src="./script.js"></script>

需要注意的是 src 导入要遵循和 CommonJS 的 require() 调用一样的路径解析规则,这就是说你需要用以 ./ 开头的相对路径,并且你可以直接从已安装的 NPM 包内导入资源,例如:

<!-- 从已安装的 "todomvc-app-css" NPM 包内导入文件 -->
<style src="todomvc-app-css/index.css">

语法高亮显示

开发中的第一件事,你可能想让 *.vue 组件能高亮显示。现阶段,在 Sublime Text , Atom , Vim , Visual Studio Code , Brackets ,和 JetBrains products (WebStORMPHPStorm,等)都有支持语法高亮显示的插件。如果在 Vue 组件内没有使用任何预编译器,那么编辑器就把 *.vue 文件当成普通的 HTML 文件一样。

注释

在每个代码块内,注释的时候,需要使用各自语言的注释语法去注释(HTML、CSS、JavaScript、Jade 等)。在文件最顶部注释的时候用HTML的注释语法:<!— 在这里写注释的内容 --> 。

项目设置

语法高亮

开发中的第一件事,你可能想让 *.vue 组件能高亮显示。现阶段,在 Sublime Text , Atom , Vim , Visual Studio Code , Brackets ,和 JetBrains products (WebStorm,phpStorm,等)都有支持语法高亮显示的插件。如果在 Vue 组件内没有使用任何预编译器,那么编辑器就把 *.vue 文件当成普通的 HTML 文件一样。

使用 vue-cli

创建项目的时候推荐使用脚手架工具,可以用 vue-loader 和 vue-cli,命令行如下:

npm install -g vue-cli
vue init webpack-simple hello-vue
cd hello-vue
npm install
npm run dev # 一切就绪!

ES2015

当 vue-loader 检测到 babel-loader 或者 buble-loader 在项目中存在的时候,将会用它们去处理所有 *.vue 文件的 <script> 部分,所以我们就可以在 Vue 组件中用 ES2015 。 如果你还不熟悉这个新语言的话,最好去学一下:

  • Babel - Learn ES2015

  • es6 Features

  • Exploring ES6 (book)

这里是一个引用其他 Vue 组件的典型模式,

<script>
import ComponentA from './ComponentA.vue'
import ComponentB from './ComponentB.vue'

export default {
 components: {
 ComponentA,
 ComponentB
 }
}
</script>

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

转译正常的 .js 文件

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

用 .babelrc 文件来配置 Babel

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

Scoped CSS

当 <style> 标签有 scoped 属性的时候,它的 CSS 就只能作用于当前的组件。这就像样式被封装在 Shadow DOM 内。这是用 PostCSS 转译实现的。如下:

<style scoped>
.example {
 color: red;
}
</style>

<template>
 <div class="example">hi</div>
</template>

转换成:

<style>
.example[_v-f3f3eg9] {
 color: red;
}
</style>

<template>
 <div class="example" _v-f3f3eg9>hi</div>
</template>

注意

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

<style>
 
</style>

<style scoped>
 
</style>
  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 中的用法如下:

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

Webpack 2.x 中的用法:

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

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

  • 返回值是插件数组的方法;

  • 包含被传递到PostCSS处理器选项的对象。当你的项目依赖于自定义解析器或编译器的时候,这就会很有用。

 postcss: {
 plugins: [...], // list of plugins
 options: {
  parser: sugarss // use sugarss parser
 }
 }

热加载

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

Vue + Webpack + Vue-loader有什么用 

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

以上是“Vue + Webpack + Vue-loader有什么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网node.js频道!

--结束END--

本文标题: Vue + Webpack + Vue-loader有什么用

本文链接: https://www.lsjlt.com/news/72236.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue + Webpack + Vue-loader有什么用
    这篇文章主要介绍Vue + Webpack + Vue-loader有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Vue-loader 是什么?vue-loader 是一个加...
    99+
    2022-10-19
  • Vue+Webpack+Vue-loader的示例分析
    小编给大家分享一下Vue+Webpack+Vue-loader的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用预处理...
    99+
    2022-10-19
  • webpack中loader有什么用
    这篇文章主要介绍webpack中loader有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、loaders之 预处理css-loader 处理css中路径引用等问题styl...
    99+
    2022-10-19
  • vue cli3配置image-webpack-loader方式
    目录vue cli3配置image-webpack-loader使用image-webpack-loader压缩图片报错vue cli3配置image-webpack-loader ...
    99+
    2022-11-13
  • Webpack loader之file-loader怎么用
    这篇文章主要为大家展示了“Webpack loader之file-loader怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Webpack loader之...
    99+
    2022-10-19
  • webpack的loader和plugin有什么区别
    Webpack的loader和plugin是两个不同的概念,分别用于处理不同的任务。1. Loader(加载器):Loader用于对...
    99+
    2023-10-11
    webpack
  • vue中loader的作用是什么
    vue中loader可以用来解析和转换.vue文件,提取出每个语言块,有必要的情况下会分别把他们交给对应的loader去处理,它还能够在.vue文件中添加额外的自定义块来实现项目的特殊需求。...
    99+
    2022-10-12
  • vue如何使用vue-loader
    这篇文章主要介绍vue如何使用vue-loader,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!vue-loader小技巧vue-loader 是处理 *.vue 文件的 webpa...
    99+
    2022-10-19
  • Vue-loader使用教程
    目录简介Vue-loader是什么简介 说明 本文介绍vue-loader的作用及其用法。 官网网址 https://vue-loader.vuejs.org/zh/ Vue-loa...
    99+
    2022-11-13
    Vue-loader使用教程 Vue-loader使用
  • vue-loader和webpack项目配置及npm错误问题的解决
    目录vue-loader和webpack项目配置及npm错误解决vue-loader webpack版本出现的问题问题描述解决方法vue-loader和webpack项目配置及npm...
    99+
    2022-11-13
  • Webpack中Loader和Plugin的区别是什么
    这篇文章主要介绍“Webpack中Loader和Plugin的区别是什么”,在日常操作中,相信很多人在Webpack中Loader和Plugin的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用...
    99+
    2022-10-19
  • Vue loader的相关知识有哪些
    本篇内容介绍了“Vue loader的相关知识有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、处理资源路径当 Vue Loader ...
    99+
    2023-07-05
  • vue中的webpack怎么安装
    今天小编给大家分享一下vue中的webpack怎么安装的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了...
    99+
    2022-10-19
  • vue中如何使用webpack require.ensure
    这篇文章主要为大家展示了“vue中如何使用webpack require.ensure”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue中如何使用webpac...
    99+
    2022-10-19
  • Vue中webpack的使用详解
    目录1、什么是Webpack2、模块化的演进AMDCMDES6模块3、安装Webpack4、使用webpack总结1、什么是Webpack 本质上, webpack是一个现代Java...
    99+
    2022-11-13
  • 为什么webpack的loader的执行顺序是从后往前
    一、原因 这设计的原因是为了处理代码转换和加载过程中的依赖关系。由于Webpack的模块打包过程是从入口开始递归地解析和加载依赖,然后再进行代码转换,Loader的执行顺序也要与此过程保持一致。 当Webpack遇到需要转换的模块时,它会按...
    99+
    2023-10-29
    是从 顺序 webpack
  • vue中auto-vue-file包有什么用
    这篇文章主要介绍vue中auto-vue-file包有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!auto-vue-fileauto create .vue file by ...
    99+
    2022-10-19
  • vue webpack可打包的文件有哪些
    本篇内容主要讲解“vue webpack可打包的文件有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue webpack可打包的文件有哪些”吧!在vue中,webpack可以将js、css...
    99+
    2023-07-04
  • vue+webpack+express中间件接口怎么用
    这篇文章主要介绍vue+webpack+express中间件接口怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!环境:vue 2.9.3; webpack目的:接口的调用跨域方式...
    99+
    2022-10-19
  • vue-router有什么用
    这篇文章主要介绍了vue-router有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。vue-router 快速入门配置路由$&nbs...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作