Vue简单使用
- Vue简单介绍
- Vue.js 是一套构建用户界面的渐进式框架。它产生的主要目的是为了开发大型单页面应用。
- 它还支持组件化,也就是可以将页面封装成若干个组件,采用积木式进行编程,这样使页面复用性达到最高(支持组件化)。
- MVVM框架设计结构
- M:Model负责数据存储
- V:View负责页面展示
- VM:View Model负责业务逻辑处理,对数据处理后交给视图层展示
下载
$ npm install vue- Vue官网 => 戳我!
首先引入vue模块
1import Vue from 'vue'创建Vue实例
|
|
- 全局组件
有局部组件,自然有全局组件,以全局组件为例,看下全局设置方法1234<div v-app="app"><!-- 父组件给子组件传值,绑定在一个属性上 --><my-button :title="abc"></my-button></div>
|
|
Vue指令
什么是Vue指令?
在html标签内部以v-形式表示的就是Vue指令三种展现数据的方式
- 插值表达式
插值表达式中除了null和undefined都可以展现在页面上,但是所有内容都是以字符串形式输出,插值表达式中可以进行简单的运算和使用一些不改变原数据的方法,js中的关键字不能再插值运算符中使用
- 插值表达式
|
|
后面事例共用下面的Vue实例,并且作用域都在body身上
- v-text=’a’
同插值表达式,插值表达式是v-text的缩写形式,他们唯一的不同之处是:
当数据传输慢时,插值闪烁问题
|
|
- v-html
可以使数据以html格式来展现到页面上,以此形式展现的数据会替换原有内容1<div v-html="b"></div>
v-on 事件绑定
v-on:可以缩写成@:12<button v-on:click="dothis()">点点点</button><button @:click="dothis()">点点点</button>v-bind 绑定属性
可以简写成 :属性 的形式123<input type="text" v-bind:value="a"><div :class="{classA, classB}" ></div><div :style="[styleA, {styleB, styleC}]"></div>v-model
双向数据绑定,作用于有value的标签,当页面数据变化时data中对应数据也变化,data中对应数据变化时,页面中数据也会发生变化1<input type="text" v-model="a">v-show
控制元素显示隐藏,其值是布尔值v-if v-else
可以实现切换显示v-for
可以实现渲染列表, 还要在v-for所在标签加上:key=”唯一值”,可以提高渲染性能123<ul v-for="item in list" :key="index"><li>{{ item }}</li></ul>特殊特性
- ref
如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件实例,使用$refs在父组件中获取1<p ref="p">hello</p>
- ref
路由
对于大多数单页应用,都推荐使用官方支持的vue-router库
- 安装
npm i vue-router - 官网=>戳我!
- 引入
import VueRouter from 'vue-router' - 引用组件
import home from '../components/Home/home.vue'
创建路由对象
1234567891011121314151617181920// jsconst User = {props: ['id'],template: '<div>{{ id }}</div>'}// 创建路由对象let router = new VueRouter({// 激活样式的类名为linkActiveClass: 'mui-active',// 配置路由routes:[// 路由重定向{path: '/', redirect: 'home'},// 路由可以设置名字,路径,meta 组件// $router.params.id可以获取/:后面id的值// props设置为true时他就会把$router.params下所有的属性挂载到组建的实例上,在需要应用的实例中设置props:['xxx']获取之后就可以使用了,这就是使用props 为组件和路由解耦{path: '/home', meta: {title: '首页'}, component: home},{name: 'buyDetail', path: '/buy/:id', component: buyDetail, props: true}]})在页面中渲染
12345<!-- html --><!-- 跳转页面 --><router-link to="/home">首页</router-link><!-- 渲染位置 --><router-view></router-view>
vue-router props解耦
在组件中使用$route会使之与其对应路由形成高度耦合,从而使组件只能在某些特定的url上使用,限制了其灵活性。
使用props将组件和路由解耦:12345678910111213141516const User = {props: ['id'],template: '<div>User {{ id }}</div>'}const router = new VueRouter({routes: [{ path: '/user/:id', component: User, props: true }// 对于包含命名视图的路由,你必须分别为每个命名视图添加props选项:{path: '/user/:id',components: { default: User, sidebar: Sidebar },props: { default: true, sidebar: false }}]})这样你便可以在任何地方使用该组件,使得该组件更易于重用和测试。
如果props被设置为true,route.params将会被设置为组件属性。
当跳转页面时,params可以传递 id 值