初识 Vue.js 中的 *.Vue文件


Posted in Javascript onNovember 22, 2017

什么是Vue.js?

vue.js是一套构建用户界面的渐进式框架,它采用自底向上增量开发的设计。(自底向上设计方法是根据系统功能要求,从具体的器件、逻辑部件或者相似系统开始,凭借设计者熟练的技巧和丰富的经验,通过对其进行相互连接、修改和扩大,构成所要求的系统。)Vue 的核心库只关注视图层,它不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与单文件组件和Vue生态系统支持的库结合使用时,Vue 也完全能够为复杂的单页应用程序提供驱动。

什么是*.vue文件

首先,我们用 vue-cli 脚手架搭建的项目,里面我们已经遇到了很多,如 index.vue 或者 App.vue 这一的文件了。这到底是个什么东西?如果是初次接触 vue 开发的同学,可能之前没有见过这个东西。*.vue 文件,是一个自定义的文件类型,用类似HTML的语法描述一个Vue组件。每个.vue文件包含三种类型的顶级语言块 <template>, <script> 和 <style>。这三个部分分别代表了 html,js,css。

其中 <template> 和 <style> 是支持用预编译语言来写的。比如,在我们的项目中,我们就用了 scss 预编译,因此,我们是这样写的:

<style lang="scss">

html 也有自己的预编译语言, vue 也是支持的,不过一般来说,我们前端人员还是比较中意 html 原生语言,所以,我就不过多阐述了。

另外,我在 App.vue 文件中,已经用一句 @import "./style/style"; 将我们的样式给写到指定的地方去了。所以,在后面所有的我的文章中,是不会出现这个部分的内容的。所有样式,都会在 src/style/ 文件夹中对应的位置去写。我这样做的好处是,不需要重复的引入各种 scss 基础文件,并且做到了项目的样式代码的可管控。

*.vue 文件代码解析

首先,我们来简单看一下:

<template>
  <div>
    <Header></Header>
    <div class="article_list">
      <ul>
        <li></li>
      </ul>
    </div>
    <Footer></Footer>
  </div>
</template>
<script>
import Header from '../components/header.vue'
import Footer from '../components/footer.vue'
export default {
  components: { Header, Footer },
  data () {
    return {
      list: []
    }
  },
  created () {
    this.getData()
  },
  methods: {
    getData () {
      this.$api.get('topics', null, r => {
        console.log(r)
      })
    }
  }
}
</script>
<style>
  .article_list {margin: auto;}
</style>

以上就是一个简单的 *.vue 文件的基本结构。我们一部分一部分的来解释。

template 部分

以下,我不再称呼它为 *.vue 文件了。改成为 vue 组件。首先,一个 vue 组件,他的 template 则代表它的 html 结构,相信大家可以理解了。但是需要注意的是,我们不是说把代码包裹在 <template></template> 中就可以了,而是必须在里面方置一个 html 标签来包裹所有的代码。 本例子中,我们采用了 <div></div>标签。

大家看到 <Header></Header> 这个代码的时候肯定很奇怪,这是个什么玩意儿。其实,这是一个自定义组件。我们在其他地方写好了一个组件,然后就可以用这种方式引入进来。同样 <Footer></Footer> 也是一个组件。

script 部分

首先,我们需要两个自定义组件,我们先引用进来。如下格式,比较好理解吧。

import Header from '../components/header.vue'
import Footer from '../components/footer.vue'

其次,除了引用的文件,我们将所有的代码包裹于如下的代码中间:

export default {
  // 这里写你的代码,外面要包起来。
}

我们先引入了 Header 和 Footer 这两个组件的源文件,接下来,我们要把引用的组件给申明到 components 里面去。这样,我们就可以在 template 里面使用了。

components: { Header, Footer },

data是我们的数据。我们的演示代码,给了一个 list 的空数组数据。在 template 中,我们可以使用 this.list 来使用我们的数据。这个我们后面的文章中会讲到,这里不去深入,认识它就可以了。

data () {
  return {
    list: []
  }
},

created 表示当我们的组件加载完成时,需要执行的内容。比如这里,我们就让组件在加载完成时,执行一个叫 this.getData() 的函数。另外created是vuejs中的勾子函数之一。(具体的勾子函数请参考附录)

created () {
  this.getData()
},

methods是我们的这个组件的方法,也可以说是函数。比如,上面的代码就表示,我们的组件自定义了一个叫 getData() 的方法函数。

methods: {
  getData () {
    this.$api.get('topics', null, r => {
      console.log(r)
    })
  }
}

更多关于vue的语法解释请参见:https://cn.vuejs.org/v2/guide/syntax.html

style 部分

这里比较简单,就是针对我们的 template 里内容出现的 html 元素写一些样式。如下,我的代码:

<style>
.article_list {margin: auto;}
</style>

到这里,我们应该对 vue 组件文件有了一定的认知。后面的博文中,将会涉及到比较多的各种写法,因此,建议在阅读完本文后,花比较多的时间,去查看 vue 的官方文档。虽然文档你不一定能全部看懂,但要有一个大概的认识,否则下面的学习将会比较困难。

附录

勾子,可以理解为vuejs的生命周期,而函数则是生命周期内各个阶段的事件方法。如下图

 初识 Vue.js 中的 *.Vue文件

总结

以上所述是小编给大家介绍的初识 Vue.js 中的 *.Vue文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript或asp实现的判断身份证号码是否正确两种验证方法
Nov 26 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
May 07 Javascript
JavaScript中length属性的使用方法
Jun 05 Javascript
JavaScript中Boolean对象的属性解析
Oct 21 Javascript
JS使用eval解析JSON的注意事项分析
Nov 14 Javascript
AngularJS自定义服务与fliter的混合使用
Nov 24 Javascript
jQuery源码分析之sizzle选择器详解
Feb 13 Javascript
Angular2开发环境搭建教程之VS Code
Dec 15 Javascript
js实现手机web图片左右滑动效果
Dec 29 Javascript
vue element中axios下载文件(后端Python)
May 10 Javascript
JS函数基本定义与用法示例
Jan 15 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
Jul 20 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
Nov 22 #Javascript
基于JavaScript实现表格滚动分页
Nov 22 #Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
Nov 22 #Javascript
Vue官方文档梳理之全局配置
Nov 22 #Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
Nov 22 #Javascript
vue在使用ECharts时的异步更新和数据加载详解
Nov 22 #Javascript
echarts学习笔记之箱线图的分析与绘制详解
Nov 22 #Javascript
You might like
php根据一个给定范围和步进生成数组的方法
2015/06/19 PHP
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
web网页按比例显示图片实现原理及js代码
2013/08/09 Javascript
js数组循环遍历数组内所有元素的方法
2014/01/18 Javascript
js获取当前页面的url网址信息
2014/06/12 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
JS+CSS实现的蓝色table选项卡效果
2015/10/08 Javascript
浅谈javascript中replace()方法
2015/11/10 Javascript
详解AngularJS实现表单验证
2015/12/10 Javascript
js仿百度登录页实现拖动窗口效果
2016/03/11 Javascript
Node.js如何自动审核团队的代码
2016/07/20 Javascript
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
vue created钩子函数与mounted钩子函数的用法区别
2020/11/05 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
2021/01/29 Javascript
[03:02]安得倚天剑,跨海斩长鲸——中国军团出征DOTA2国际邀请赛
2018/08/14 DOTA
举例详解Python中循环语句的嵌套使用
2015/05/14 Python
听歌识曲--用python实现一个音乐检索器的功能
2016/11/15 Python
python使用正则表达式匹配字符串开头并打印示例
2017/01/11 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
python实现redis三种cas事务操作
2017/12/19 Python
Python检查 云备份进程是否正常运行代码实例
2019/08/22 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
Python数据结构dict常用操作代码实例
2020/03/12 Python
Python爬虫requests库多种用法实例
2020/05/28 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
css3 中实现炫酷的loading效果
2019/04/26 HTML / CSS
html5应用缓存_动力节点Java学院整理
2017/07/13 HTML / CSS
Expedia西班牙:预订酒店、机票、旅行和廉价度假套餐
2019/04/10 全球购物
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
升职自荐信
2013/11/28 职场文书
三年级评语大全
2014/04/23 职场文书
web前端之css水平居中代码解析
2021/05/20 HTML / CSS