Vue-loader 是什么?

vue-loader 是一个加载器,能把如下格式的 Vue 组件转化成JavaScript模块。
vue-loader 提供了一些非常酷炫的特性:
简单来说,webpack 和 vue-loader 的组合为你创作Vue应用的一个更先进、更灵巧的极其强大的前端开发模式。
Webpack 是什么?
如果你熟悉 Webpack 那就跳过这部分吧,但对于那些新手们,请看下这个简单介绍吧:
Webpack 是一个模块打包工具。在开发中,它把一堆文件中每个都作为一个模块处理,找出它们间的依赖关系,并打包成待发布的静态资源。
列举一个基本例子,设想我们有一堆的 CommonJS 的引用。它们是不能在浏览器直接运行,所以需要把它们 捆绑 成 <script> 标记内的单一文件。Webpack 就能按照 require() 调用的依赖关系为我们做到这点。
实际上,Webpack 能做的更多,通过 "loaders" 我们能让 Webpack 按照我们想要的任何方式打包输出。例如:
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"> /* 编写 SASS! */ </style>
更多细节查看 [使用预编译器]。
语言块
<template>
<script>
<style>
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 (WebStorm,PhpStorm,等)都有支持语法高亮显示的插件。如果在 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 。 如果你还不熟悉这个新语言的话,最好去学一下:
这里是一个引用其他 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> /* global styles */ </style> <style scoped> /* local styles */ </style>
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: {
plugins: [...], // list of plugins
options: {
parser: sugarss // use sugarss parser
}
}
热加载
“热加载” 不只是当你修改了文件简单地重新加载下页面。当启用了热加载功能,编写完 *.vue 文件后,组件的所有的实例对象被替换,而页面并没有重新加载。仍然保持应用原有的状态。这在你调整模板或修改组件样式的时候,大大改善了开发体验。
当使用项目的脚手架工具 vue-cli ,热加载自动启用。
总结
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# webpack
# vue
# loader
# vue.js
# webpack2
# 详解vue-loader在项目中是如何配置的
# vue2.0安装style/css loader的方法
# Vue2.0结合webuploader实现文件分片上传功能
# Vue的移动端多图上传插件vue-easy-uploader的示例代码
# vue webuploader 文件上传组件开发
# Vue上传组件vue Simple Uploader的用法示例
# 深入理解vue-loader如何使用
# Vue + Webpack + Vue-loader学习教程之相关配置篇
# vue的.vue文件是怎么run起来的(vue-loader)
# 加载
# 你可以
# 可以用
# 是一个
# 自定义
# 递归
# 选择器
# 如果你
# 都有
# 就像
# 就能
# 多个
# 其他的
# 能在
# 就把
# 想让
# 编辑器
# 第一件事
# 的是
# 这是
相关文章:
,石家庄四十八中学官网?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
制作证书网站有哪些,全国城建培训中心证书查询官网?
如何快速查询网址的建站时间与历史轨迹?
宿州网站制作公司兴策,安徽省低保查询网站?
如何在云主机上快速搭建网站?
如何通过远程VPS快速搭建个人网站?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
网站代码制作软件有哪些,如何生成自己网站的代码?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
常州自助建站工具推荐:低成本搭建与模板选择技巧
定制建站方案优化指南:企业官网开发与建站费用解析
建站之星如何取消后台验证码生成?
建站主机选购指南:核心配置优化与品牌推荐方案
如何制作一个表白网站视频,关于勇敢表白的小标题?
定制建站流程步骤详解:一站式方案设计与开发指南
大型企业网站制作流程,做网站需要注册公司吗?
如何通过cPanel快速搭建网站?
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
如何选择高效可靠的多用户建站源码资源?
如何配置FTP站点权限与安全设置?
北京网站制作的公司有哪些,北京白云观官方网站?
如何打造高效商业网站?建站目的决定转化率
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
如何解决ASP生成WAP建站中文乱码问题?
建站之星各版本价格是多少?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
如何批量查询域名的建站时间记录?
大连 网站制作,大连天途有线官网?
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
如何选择高性价比服务器搭建个人网站?
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
c# 在ASP.NET Core中管理和取消后台任务
如何实现建站之星域名转发设置?
常州企业建站如何选择最佳模板?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
*请认真填写需求信息,我们会在24小时内与您取得联系。