vue2+vuex+vue-router 快速入门(三) vue 实例介绍

vue 实例介绍

  vue 实例分两种,一种为组件实例,另外一种为根实例。组件实例负责创建个性化组件、而根实例负责把组件渲染到指定的真实的 DOM 结构中。并且 vue 为我们提供了一种特殊的文件格式 .vue 来创建 组件实例。.vue 文件格式如下:

*.vue

<template>
    ...
</template>

<script>
    export default {
        data(){
            return {}
        }
    }
</script>

<style lang="less" scoped>

</style>

通过上面的代码,我们可以看出,整个 .vue 文件分为三个部分:template(模板)、script(数据逻辑) 和 style(样式) 。

<template>

  template 部分为我们提供组件的视图模板,里面包含了当前组件所有的展示情况。vue 为我们提供了一套语法来帮助我们快速构建我们所需的模板。

模板语法

  Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解析器解析。 
  在底层的实现上, Vue 将模板编译成虚拟 DOM 渲染函数。结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。

插值

数据绑定最常见的形式就是使用 “Mustache” 语法(双大括号)的文本插值:

<span>Message:{{msg}}</span>

Mustache 标签将会被替代为对应数据对象上 msg 属性的值。无论何时,绑定的数据对象上 msg 属性发生了改变,插值处的内容都会更新。

双大括号会将数据解析为纯文本,而非 HTML。为了输出真正的 HTML,你需要使用 v-html 指令。

<div v-html="rawHtml"></div>
给 HTML 属性赋值

  给属性赋值需要使用 v-bind:attribute 指令,可简写为: :attribute

<div v-bind:id="idName"></div>
<!-- 简写 -->
<div :id="idName"></div>
添加事件监听

  可以用v-on:eventType指令监听 DOM 事件来触发一些 JavaScript 代码,简写为:@eventType

<div v-on:click="doSomething()"></div>
<!-- 简写 -->
<div @click="doSomething()"></div>
v-for 列表渲染

我们用 v-for 指令根据一个数组来渲染列表

<ul id="example">
    <li v-for="item in items">
        {{item.message}}
    </li>
</ul>

items 为数据源,item 为遍历对象。

对应数据结构

   var example1 = new Vue({
  el: ‘#example-1‘,
  data: {
    items: [
      {message: ‘Foo‘ },
      {message: ‘Bar‘ }
    ]
  }
})

结果

<ul id="example">
    <li>Foo</li>
    <li>Bar</li>
</ul>
v-if 条件渲染
<h1 v-if="ok">Yes</h1>
<h1 v-else>No</h1>

上面演示了,当个元素根据条件渲染,如果我们想同时控制多个元素时,就要借用 <template> 元素包裹起来,然后 v-if在作用其上。

<template v-if="ok">
  <h1>Title</h1>
  <p>Paragraph 1</p>
  <p>Paragraph 2</p>
</template>
v-show 展示隐藏

另一个用于根据条件展示元素的选项是 v-show 指令。

<h1 v-show="ok">Hello!</h1>

他和 v-if 的区别在于,v-if 会销毁元素,而 v-show 仅仅隐藏。

v-model 表单输入绑定
<input v-model="message" placeholder="edit me">

input 中的 value 会自动赋值给 message。

<script>

  <script> 类始于 MVC 模式中的 Controller。

数据选项

  数据选项直接面向 template(模版),模版数据直接来源也是唯一来源。

export default {
    data(){
         return {}
    },
    props:[],
    computed:{},
    methods:{},
    watch:{}
}
data

  vue 单向数据绑定最基础数据。组建内部自我定义,自我填充。

<div>{{msg}}</div>

以上模版中的 msg 对应一下数据

data(){
    return {
        msg:"you have a message"
    }
}
props

  组建内部自定义属性,最后数据由父组件填充。props 赋值方式有两种:

props:{
    prop1:{
          type:Boolean, // 类型,Boolean,String,Number ,Object 等
          require:true, // 是否必须
          default:false, // 默认值
     }
}
props:[‘prop1‘,‘prop2‘]

数组形式可以看做是一个简版

computed

  计算属性:对于复杂逻辑生成的数据,都应该放入计算属性中,比如:模板内的表达式是非常便利的,但是它们实际上只用于简单的运算。在模板中放入太多的逻辑会让模板过重且难以维护

<div id="example">
     {{ message.split(‘‘).reverse().join(‘‘) }}
</div>

改为 computed 计算属性:

<div>Computed resversed message: "{{reversedMessage}}"</div>
computed: {
    // a computed getter
    reversedMessage: function () {
      // `this` points to the vm instance
      return this.message.split(‘‘).reverse().join(‘‘)
    }
  }

在这种情况下,模板不再简单和清晰。在意识到这是反向显示message之前,你不得不再次确认第二遍。当你想要在模板中多次反向显示 message 的时候,问题会变得更糟糕。这就是对于任何复杂逻辑,你都应当使用计算属性的原因。

methods

  方法合集:事件处理函数等,都放这儿

methods:{
    methodName: function(params){
                //doSomething
    }
}
watch
  • 类型 { [key: string]: string | Function | Object }
  • 详情 
      一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每一个属性。 
      数据监听,当监听对象发生变化,执行后面的语句。

生命周期钩子

  每个 Vue 实例在被创建之前都要经过一系列的初始化过程。例如,实例需要配置数据观测(data observer)、编译模版、挂载实例到 DOM ,然后在数据变化时更新 DOM 。在这个过程中,实例也会调用一些 生命周期钩子 ,这就给我们提供了执行自定义逻辑的机会。例如,created 这个钩子在实例被创建之后被调用:

var vm = new Vue({
  data: {
    a: 1
  },
  created: function () {
    // `this` 指向 vm 实例
    console.log(‘a is: ‘ + this.a)
  }
})
// -> "a is: 1"

也有一些其它的钩子,在实例生命周期的不同阶段调用,如 mounted、updated、destroyed。 
Lifecycle

components 组件声明注册

  父组件,在使用子组件之前,必须先注册声明。指出需要引用哪些组件,并且对其命名。

申明

import aComponent from ‘./aComponent‘
export default {
  name: ‘hello‘,
  data () {
    return {
      msg: ‘Welcome to Your Vue.js App‘
    }
  },
  components:{
    childName:aComponent
  }
}

使用

<div>
    <child-name></child-name>
</div>

在声明子组件的时候,名字采取的是驼峰规则,而在调用的时候,遵循**规则,使用 - 分隔。

<style>

<style lang="less" scoped>
    .message {
            color:red;
            h3{

            }
     }
<style>

lang 指出 style 的语言,可以 css 、less 、sass 等。scoped 属性,说明这段样式,为此组件的内部样式,不再整个工程中共享。相反,如果没有 socped 属性,那么里面的样式规则,会匹配整个项目。

根实例

  上面我们提到了组件实例的创建,如果想把组件实例展示到真实的 DOM 结构中,我们需要借助根实例的帮助。创建根实例,我们并不需要特殊的 .vue 格式,而是使用 .js 文件。

import Vue from ‘vue‘
import App from ‘./App‘
import router from ‘./router‘

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: ‘#app‘,
  router,
  template: ‘<App/>‘,
  components: { App }
})
  • el:指定真实 DOM 结构中的位置,vue 组件将会被渲染到此处
  • router:指定 vue 项目的路由情况
  • template:vue 组件树根节点模版
  • components:vue 根实例中声明注册的 vue 组件。

原文地址:https://www.cnblogs.com/catbrother/p/9396325.html

时间: 2024-11-08 19:14:43

vue2+vuex+vue-router 快速入门(三) vue 实例介绍的相关文章

Vue.js——快速入门Vuex

一. 什么是Vuex? Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化. 上图中绿色虚线包裹起来的部分就是Vuex的核心, state中保存的就是公共状态, 改变state的唯一方式就是通过mutations进行更改. 可能你现在看这张图有点不明白, 等经过本文的解释和案例演示, 再回来看这张图, 相信你会有更好的理解. 二. 为什么要使用Vuex? 试想这样的场景, 比如一个Vue的根实例

Vue.js快速入门

Vue.js简介 了解Vue.js Vue.js是一个轻巧.高性能.可组件化的MVVM库,同时拥有非常容易上手的API.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件,它不仅易于上手,还便于与第三方库或既有项目整合. Vue.js安装 下载Vue.js:https://github.com/vuejs/vue (我们现在使用的版本是2.5.16) 快速入门 声明式渲染 我们现在做个最简单的小例子,演示如何使用Vue.js实现声明式渲染. 创建Vue_1.htm

Vue -- ES6 快速入门,Vue初识

一.ES6快速入门 let和const let ES6新增了let命令,用于声明变量.其用法类似var,但是声明的变量只在let命令所在的代码块内有效. { let x = 10; var y = 20; } x // ReferenceError: x is not defined y // 20 效果如下: var声明变量存在变量提升.也就是在声明变量之前就可以使用该变量. console.log(x) // undefined,var声明变量之前可以使用该变量 var x = 10; 刷新

vue router路由(三)

当环境搭建及Vue语法与指令都有所了解,该说下router. build目录是打包配置文件 (不建议动) config是vue项目基本配置文件 dist是构建后文件 js 手动创建 (根据需要) node_modules 根据package.json 安装依赖模块 src资源文件,基本文件都会放在这里 app.vue  父组件 main.js 入口文件 static构建好的文件会在这个目录 index.html 主页 1.首先安装路由通过npm: npm install vue-router 在

AS3多线程快速入门(三):NAPE物理引擎+Starling[译]

原文链接:http://esdot.ca/site/2012/intro-to-as3-workers-part-3-nape-physics-starling [更新]Adobe在11.4正式发布的最后一刻移除了ByteArray.shareable功能的支持,推迟到11.5版本再发布.为了解决这个问题,源码已经被我更新过了.但这里还是留下完整的示例代码,因为它能最终会正常运行的. 在<AS3多线程快速入门>系列教程的第一部分中,我们研究了AS3 Worker的基本原理,包括多种通信方式,还

AngularJS快速入门指南02:介绍

AngularJS是一个JavaScript框架.它可以通过<script>标记被添加到HTML页面中. AngularJS通过指令对HTML属性进行了扩展,然后通过表达式将数据绑定到HTML元素中. AngularJS是一个JavaScript框架 AngularJS是一个JavaScript框架,它是由JavaScript语言编写的类库. AngularJS以JavaScript文件的形式进行发布,我们可以通过script标记将它添加到web页面中: <script src=&quo

vue.js快速入门(三)~组件入门~

组件系统是vue的一个重要的概念.他可以让我们使用独立的,可复用的小组件来构建大的复杂的应用,任何应用都可以看作是组件树.组件可以看做是自定义的Html代码.可扩展的html,封装可重用的html. 使用组件的使用分为三步 创建组件构造器,调用Vue.extend()创建,这是Vue构造器的扩展.他有个选项对象.选项对象有个template属性,定义组件要渲染的html 注册组件 ,Vue.compontent()注册 使用组件(在Vue实例的作用范围内使用组件,必须挂载在实例下,否则不生效)

Vue.js——快速入门

Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得我们能够快速地上手并使用Vue.js. 本文摘自:http://www.cnblogs.com/keepfool/p/5619070.html 如果你之前已经习惯了用jQuery操作DOM,学习Vue.js时请先抛开手动操作DOM的思维,因为Vue.js是数据驱动的,你无需手动操作DOM.它通过一些特殊的HTML语法,将

Vue.js—快速入门

Vue.js是什么 Vue.js 是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,它不仅易于上手,还便于与第三方库或既有项目整合. Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件. Vue 的一些语法和 AngularJS 的很相似 (例如 v-if vs ng-if).因为 AngularJS 是 Vue 早期开发的灵感来源.然而,AngularJS 中存在的许多问题,在 Vue 中已经得

Vue.js—组件快速入门以及Vue路由实例应用

上次我们学习了Vue.js的基础,并且通过综合的小实例进一步的熟悉了Vue.js的基础应用.今天我们就继续讲讲Vue.js的组件,更加深入的了解Vue,js的使用.首先我们先了解一下什么是Vue.js的组件,组件其实就是页面组成的一部分,它是一个具有独立的逻辑和功能或页面,组件可以扩展 HTML 元素,封装可重用的代码.组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树,如下图: 接下来我们就仔细讲讲组件的使用吧. 1 全局组件 以下就是我们注册