单文件组件

Vue.js是一个渐进式的js框架,在使用wewbpack构建Vue项目时,可以使用一种新的构建模式:

.vue单文件组件。

就是一个后缀名为.vue的文件,在webpack中使用vue-loader就可以对.vue格式的文件进行处理。

一个.vue文件一般包含3部分,即<template>、<script>和<style>

<template之间的代码就是该组件的模板HTML,style之间的是CSS样式。

安装插件

使用.vue文件需要先安装vue-loader、vue-style-loaer等加载器并做配置。如果要使用ES6的语法,还需要安装babel和babel-loader等加载器。

使用npm逐个安装:

npm install --save vuenpm install --save-dev vue-loadernpm install --save-dev vue-style-loadernpm install --save-dev vue-template-compilernpm install --save-dev vue-hot-reload-apinpm install --save-dev babelnpm install --save-dev babel-loadernpm install --save-dev babel-corenpm install --save-dev babel-plugin-transform-runtimenpm install --save-dev babel-preset-es2015npm install --save-dev babel-runtime

修改配置文件

安装完成后,修改配置文件webpack.config.js来支持对.vue文件以及ES6的解析:

var path = require('path');
var ExtractTextPlugin = require('extract-text-webpack-plugin');var config = {entry: {main: './main'},output: {path: path.join(__dirname, './dist'),publicPath: '/dist/',filename: 'main.js'},module: {rules: [{test: /\.vue$/,loader: 'vue-loader',options: {loaders: {css: ExtractTextPlugin.extract({use: 'css-loader',fallback: 'vue-style-loader'})}}},{test: /\.js$/,loader: 'babel-loader',exclude: /node_modules/},{test: /\.css$/,use: ExtractTextPlugin.extract({use: 'css-loader',fallback: 'style-loader'})}]},plugins: [new ExtractTextPlugin("main.css")]
};module.exports = config;

在项目目录下新建一个名为.babelrc的文件,并写入babel的配置,webpack会依赖此配置

文件来使用babel来编译ES6的的代码:

{"presets": ["es2015"],"plugins": ["transform-runtime"],"comments": false
}

使用.vue文件

配置好上面这些后,就可以使用.vue文件了,记住每个.vue文件代表一个组件,组件之间相互依赖。

在项目目录下新建一个app.vue的文件并写入以下内容:

<template><div><v-title title="Vue组件化"></v-title><v-button @click="handleClick">点击按钮</v-button><p><img src="./images/image.png" style="width: 200px;"></p></div>
</template>
<script>import vTitle from './title.vue';import vButton from './button.vue';export default {components: {vTitle,vButton},methods: {handleClick (e) {console.log(e);}}}
</script>

.vue的组件是没有名称的,在父组件使用时可以对它自定义。写好了组件,就可以在入口main.js中使用它了。

打开main.js文件,把内容替换为下面的代码:

import Vue from 'vue';
import App from './app.vue';new Vue({el: '#app',render: h => {return h(App)}
});

执行:

npm run dev

运行项目。

Vue单文件组件与vue-loader相关推荐

  1. Vue 单文件组件||Vue 单文件组件的基本用法||webpack 中配置 vue 组件的加载器|| 在 webpack 项目中使用 vue

    Vue 单文件组件 传统组件的问题和解决方案 1. 问题 1. 全局定义的组件必须保证组件的名称不重复 2. 字符串模板缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \ 3. 不支持 CS ...

  2. vue单文件组件导入导出

    目录分析 打开项目,依次分析下目录结构,项目目录结构如下 项目目录结构如下 单文件组件.vue 目完成后,我们看到src 目录下有一个componets 目录,里面有一个 HelloWorld.vue ...

  3. vue单文件props写法_详解Vue 单文件组件的三种写法

    详解Vue 单文件组件的三种写法 JS构造选项写法 export defaul { data, methods, ...} JS class写法 @Component export default c ...

  4. 什么Vue单文件组件(SFC)?

    介绍# Vue 的单文件组件 (即 *.vue 文件,英文 Single-File Component,简称 SFC) 是一种特殊的文件格式,使我们能够将一个 Vue 组件的模板.逻辑与样式封装在单个 ...

  5. Vue单文件组件环境配置

    单文件组件不能直接运行使用,需要依赖node项目对其进行解析打包,在使用之前需要先进行环境配置 安装node版本管理工具nvm curl -o- https://raw.githubuserconte ...

  6. Vue单文件组件的使用

    项目搭建完成后需要分别对 main.js , index.html , App.vue 文件进行编写代码 index.html <!DOCTYPE html> <html lang= ...

  7. Vue单文件组件基础模板

    背景 相信大家在使用Vue开发项目时,基本都是以单文件组件的形式开发组件的,这种方式好处多多: 1.代码集中,便于开发.管理和维护 2.可复用性高,直接将vue文件拷贝到新项目中 我暂时就想到这两点, ...

  8. 在Vue单文件组件的template标签上使用v-if不生效的原因

    今天晚上,我在某个组件里看到了这样一段代码,简化来讲,大概长这样: // Child.vue <template v-if="false"><div>Foo ...

  9. 【视频】vue单文件组件vue-cli

    P13vue单文件组件vue-cli https://www.bilibili.com/video/av91679349?p=13

最新文章

  1. Open3d学习计划—高级篇 5(RGBD融合)
  2. 空调能窃听插座能放火?物联网成了“危”联网
  3. Android 面试题目之 线程池
  4. python 实现文本自动翻译功能
  5. OpenCASCADE绘制测试线束:拓扑命令之复杂拓扑
  6. DCMTK:父元素处理的测试程序
  7. delphi——用线程创建一个窗体笔记
  8. altium designer 10哪个作者写的好 。
  9. python归并排序 分词_python实现归并排序,归并排序的详细分析
  10. [恢]hdu 1421
  11. 基于大数据的精准教学模式探究
  12. 在计算机中360云盘如何删除文件,如何在360云盘中检索已删除的文件
  13. Maxcompute Sql性能调优(1)
  14. cassandra cql解析
  15. js处理时间戳为各种格式/js判断公历/农历/周历节日和节气
  16. 【C++系列15】c++的正无穷和负无穷
  17. 协方差,协方差矩阵,矩阵特征值
  18. H5浙里办对接流程和问题记录
  19. 解决log4j.dtd 和系统中所有dtd文件都有红XX的问题
  20. 苹果cms v10 仿韩剧tv

热门文章

  1. 遍历Map的几种方式以及性能小结
  2. java中IO流用到了哪种设计模式
  3. securecrt 连接配置存放目录_SecureCRT 迁移到新环境,导出配置文件目录 转(示例代码)...
  4. android 加载动画效果_这效果炸了,网易云音乐“宇宙尘埃”特效
  5. signature=78718ebfda6f8d955fae3e9c9c284f5d,SKI SAFETY BINDING WITH SWIVELLING SOLE PLATE
  6. java注解编程_java 注解 基本原理 编程实现
  7. python中elif老是出错_python为什么会存在if执行了依然会执行elif的情况?
  8. python让用户输入字符串_当用户输入字符串而不是整数时,如何保护我的python代码?...
  9. 从sqlserver中数据写入mysql_[SQL Server]SQL Server数据库中如何返回INSERT INTO语句插入/写入数据后的记录值(比如ID等)?...
  10. python turtle画圆、循环法_实验与作业(Python)-03 Python程序实例解析(函数、循环、range、turtle)...