一、Vue Loader介绍

  Vue Loader 是一个 webpack 的loader,它允许你以一种名为 单文件组件(SFCs)的格式撰写 Vue 组件。官方文档地址如下所示:

  Vue Loader v15及以上版本官方文档地址

  Vue Loader v14 或更早的版本官方文档地址

1、vue-loader 特性

  • 默认支持 ES2015;
  • 允许对Vue组件的组成部分使用其他 webpack loader,比如对<style> 使用Sass 和对 <template> 使用 Jade;
  • 将 <style> 和 <template> 中的静态资源当作模块来对待,并使用 webpack loader 进行处理;
  • 对每个组件模拟出 CSS 作用域;
  • 支持开发期组件的热重载。

  简言之,编写 Vue.js 应用程序时,组合使用 webpack 和 vue-loader 能带来一个现代、灵活并非常强大的前端工作流程。

二、项目示例

1、项目准备和组件安装

  将 webpack-dev-server 项目复制为 single-file,安装 vue-loader 组件:

$ npm install vue-loader@14.2.4 -D

  安装vue的模板解析器: vue-template-compiler,注意要安装对应的版本号,才能适配。

$ npm install vue-template-compiler@2.5. -D

2、在webpack中配置vue-loader

  这里是在webpack.dev.config.js中配置vue-loader:

// node.js中内容模块
var path = require('path'); module.exports = {
// entry入口
entry: {
main: './src/main.js'
},
// output出口
output: {
path:path.resolve('./dist'), // 相对转绝对
filename: './bundle.js'
},
watch:true,
// 模块中的loader
module:{
loaders:[
{
test:/\.css$/, // css结尾的
loader:'style-loader!css-loader' // 依次识别
},
{
test:/\.vue$/,
loader:'vue-loader'
}
]
}
}

3、Vue组件规格

  *.vue 文件是用户用 HTML-like 的语法编写的 Vue 组件。每个 *.vue 文件都包括三部分:组件结构(template—>html)业务逻辑(script—>js)组件样式(style—>css)

  vue-loader 是一个webpack的loader,可以将用上面*.vue格式编写的*.vue组件转换为 javascript 模块。

  将App.js改写为App.vue。

<template>
<!-- template里一定是闭合标签 -->
<div class="app">
<h3>{{ msg }}</h3>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</div>
</template> <script>
export default {
data () {
return {
msg: '学习单页组件!'
}
},
methods:{ },
computed:{ }
}
</script> <style>
h3 {
color: green;
}
.example {
color: red;
}
</style>

  执行npm run dev,自动打开浏览器:http://localhost:8081/ 就访问到刚刚写好的App.vue页面了。

  

3、创建并挂载子组件

(1)创建子组件header

<template>
<div>
<h3>{{att}}</h3>
</div>
</template> <script>
export default { // 组件抛出
name: "Header",
data() {
return {
att: "中美贸易战"
};
},
};
</script> <style lang="css" scoped> </style>

  组件创建完成后抛出。

(2)挂载子组件

  在App.vue文件中引入并挂载子组件:

<template>
<!-- template里一定是闭合标签 -->
<div class="app">
<h3>{{ msg }}</h3>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<Header/>
</div>
</template> <script>
// 1.导入组件
import Header from './Header.vue'
export default {
data () {
return {
msg: '学习单页组件!'
}
},
methods:{ },
computed:{ },
// 2.使用components挂载组件
components:{
Header
}
}
</script>
<style> /* 对全局样式起作用 */
h3 {
color: green;
}
.example {
color: red;
}
</style>

  显示效果如下所示:

  

  注意:vue组件中的style标签标有scoped属性时,表明style里的css只对当前组件的样式起作用

vue-loader和单页组件介绍的更多相关文章

  1. vue-loader介绍和单页组件介绍

    $ \es6\sing-file>  npm install vue-loader@14.1.1 -D vue-template-compiler@2.5.17 -D npm install v ...

  2. vue中的单文件组件

    之前都是在html文件中写组件的css,组件的js,组件的模板来演示vue组件的语法,下面介绍以.vue结尾的单文件组件.vue-loader是一个Webpack的loader,可以将单文件组件转换为 ...

  3. 使用 Vuex + Vue.js 构建单页应用【新篇】

    使用 Vuex + Vue.js 构建单页应用[新篇] 在去年的七月六号的时候,发布了一篇 使用 Vuex + Vue.js 构建单页应用 的文章,文章主要是介绍 vuex 的基本使用方法,发现对大部 ...

  4. 基于VUE的SPA单页应用开发-加载性能篇

    1.基于异步数据的vue页面刷新 先看看基于异步数据的vue页面刷新后,都发生了啥- 如图所示: 图1 基于异步数据的vue页面刷新 网络请求图 步骤如下: step1:请求页面: step2:请求页 ...

  5. vue+vuex构建单页应用

    基本 构建工具: webpack 语言: ES6 分号:行首分号规则(行尾不加分好, [ , ( , / , + , - 开头时在行首加分号) 配套设施: webpack 全家桶, vue 全家桶 项 ...

  6. 使用 Vuex + Vue.js 构建单页应用

    鉴于该篇文章阅读量大,回复的同学也挺多的,特地抽空写了一篇 vue2.0 下的 vuex 使用方法,传送门:使用 Vuex + Vue.js 构建单页应用[新篇] ------------------ ...

  7. vue入门之单文件组件

    介绍 在很多 Vue 项目中,我们使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: '#container '}) 在每个页面内指定一个容器元素. 这种方式在很多 ...

  8. Vue -3:单文件组件

    在很多 Vue 项目中,我们使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: '#container '}) 在每个页面内指定一个容器元素. 这种方式在很多中小规 ...

  9. vue学习之用 Vue.js + Vue Router 创建单页应用的几个步骤

    通过vue学习一:新建或打开vue项目,创建好项目后,接下来的操作为: src目录重新规划——>新建几个页面——>配置这几个页面的路由——>给根实例注入路由配置 src目录重整 在项 ...

随机推荐

  1. cURL error 60: SSL certificate problem: unable to get local issuer certificate(转)【亲测】

    php5.6以上的版本会出现这种问题 解决办法: [开启拓展] extension=curl extension=openssl [配置证书] 访问https://curl.haxx.se/docs/ ...

  2. N!(hdu1042)

    N! Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! Input One N in one line, process ...

  3. Python中的passed by assignment与.NET中的passing by reference、passing by value

    Python文档中有一段话: Remember that arguments are passed by assignment in Python. Since assignment just cre ...

  4. 微软宣布.NET Native预览版 C#可编译为本地机器码【转】

    英文原文:Announcing .NET Native Preview 微软在 MSDN 博客上宣布了 .NET Native 的开发者预览版..NET Native 可以将 C# 代码编译成本地机器 ...

  5. kubernetes 之一些报错

    1.kubelet与docker的Cgroup Driver不一致导致的报错 7月 :: kubeadm-master kubelet[]: W0701 :: watcher.go:] Error w ...

  6. axios和fetch区别对比

    axios axios({ method: 'post', url: '/user/12345', data: { firstName: 'Fred', lastName: 'Flintstone' ...

  7. SkyWalking分布式链路追踪和监控-项目实战

    微服务框架落地后,分布式部署架构带来的问题就会迅速凸显出来.服务之间的相互调用过程中,如果业务出现错误或者异常,如何快速定位问题?如何跟踪业务调用链路?如何分析解决业务瓶颈?本专栏将引入Skywalk ...

  8. 【JS】---4用JS获取地址栏参数方法

    用JS获取地址栏参数方法 // 方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!) function GetQueryString(name) { var reg = new Reg ...

  9. c#编码注释

    1      目录 2       前言... 3 2.1        编写目的... 3 2.2        适用范围... 4 3       命名规范... 4 3.1        命名约 ...

  10. 如何优雅地使用腾讯云COS-.NET篇

    如何优雅地使用腾讯云COS-.NET篇 代码下载地址 https://github.com/whuanle/txypx20190809 前提 创建子账号 打开 https://console.clou ...