Vue总结 - 基本用法

一、简介

vue是一个构建用户界面的框架、一个轻量级MVVM。官网

二、起步

2.1 下载vue.js

vue2.0和1.0相比,最大的变化就是引入了Virtual DOM(虚拟DOM),页面更新效率更高,速度更快。
cnpm使用

# 查看历史版本
$ cnpm view vue versions

# cd 到对应目录
# 安装最新版vue
$ cnpm install vue

vue使用正式版本vue.min.js。

2.2 安装vue-devtools

方式一:翻墙在chrome拓展程序里寻找安装
方式二:Git 地址下载,解压后拖进chrome拓展程序页面

会在chrome检查中增加vue工具
在这里插入图片描述

2.3 Hello world

示例:hello world

            var vm = new Vue({
                //指定关联的元素
                el: "#itany",
                //存储数据
                data: {
                    msg: "hello world"
                }
            });
<div id="itany">
    <!-- 两对大括号{{}}称为模板,用来进行数据的绑定显示在页面中 -->
    {{msg}}
</div>

2.4 配置非开发环境

            //配置是否允许vue-devtools检查代码,方便调试,生产环境中需要设置为false
            Vue.config.devtools = false;
            //阻止vue启动时生成生产消息
            Vue.config.productionTip = false;

2.5 注意

引用script的时候路径前面不能有“/"

<script src="js/vue.js"></script> 正确
<script src="/js/vue.js"></script> 错误

三、模板和指令

3.1 简介

Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据

3.2 常用指令

赋值 (v­-model、{{}})

a.双向绑定 v­-model
b.单向绑定
​ 方式1:使用两对大括号{{}},可能会出现闪烁的问题,可以使用v-­cloak解决
​ 方式2:使用v­-text、v-­html
示例:v-model

            var vm = new Vue({
                el: "#itany",
                data: {
                    name: "4444",
                    msg: "111111",
                    msg2: "<mark>22222</mark>",
                },
            });
        /* 必须配置css样式,否则不生效 */
        [v-cloak] {
            display: none;
        }
	<input type="text" v-model="name">
    <!--隐藏未编译的 Mustache 标签直到实例准备完毕-->
    <h3>aaa<span v-cloak>{{msg}}</span></h3>

    <!--v-text-->
    <h3 v-text="msg2"></h3>

    <!--v-html 可以识别html-->
    <h3 v-html="msg2"></h3>
v-for

对数组或对象进行循环操作。
示例:v-for

            var vm = new Vue({
                el: "#itany",
                data: {
                    aar:[12,33,332,23,12],
                    user:{"id":988,"name":"fdffd"},
                    users:[
                        {"id":988,"name":"搪玻璃"},
                        {"id":988,"name":"范德萨"},
                        {"id":988,"name":"你还能还"}
                    ]
                }
            });
<!--普通循环-->
    <!--数组-->
    <ul->
        <li v-for="value in aar">{{value}}</li>
    </ul->
    <br>
    <ul->
        <!--绑定key,可以重用元素,提高渲染时的效率-->
        <li v-for="(v,k) in aar" :key="k">{{k}}={{v}}</li>
    </ul->
    <br>
    <!--对象-->
    <ul->
        <li v-for="value in user">{{value}}</li>
    </ul->
    <br>
    <ul->
        <li v-for="(user,index) in users">
            {{index}},{{user.id}},{{user.name}}
        </li>
    </ul->
v­-on

用来绑定事件,用法:v­-on:事件=“函数”
示例:v-on

            var vm = new Vue({
                el: "#itany",
                data: {
                    arr:[12,34,32]
                },
                methods:{
                    show:function () {
                        console.log("show");
                    },
                    add(){
                        //this就是这个Vue实例
                        this.arr.push(77);
                    }
                }
            });
    <button v-on:click="show()">点我</button>
    <!--没有入参可以不加括号-->
    <button v-on:click="add">添加数组</button>
v-show/v-if

用来显示或隐藏元素,v­show是通过display实现,v­if是每次删除后再重新创建。
示例:v-show/v-if demo

    <!--通过display实现-->
    <div v-show="true">欢迎你</div>
    <!--删除后再重新创建-->
    <div v-if="flag">欢迎你2</div>
v­-once

数据只绑定一次。
示例:v­-once

            var vm = new Vue({
                el: "#itany",
                data: {
                    name: "4444",
                }
            });
    <!--v-once 只会绑定一次-->
    <p v-once>{{name}}</p>
v­-pre

不编译,直接原样显示。
示例:v­-pre

    <!--v-pre 不编译,直接原样显示-->
    <p v-pre>{{name}}</p>

四、事件

示例:event

4.1 简写

v­-on:click="" 简写方式 @click=""

4.2 事件对象$event

包含事件相关信息。相当于onclick中的事件

<button @click="showEvent($event)">event</button>

4.3 阻止事件冒泡

事件会向上传递
a) 原生js方式,依赖于事件对象

event.stopPropagation();

b) vue方式,不依赖于事件对象

<button @click.stop="print3()">阻止冒泡Vue</button>

4.4 阻止默认修饰符

链接点击会拼接字符。
a) 原生js方式,依赖于事件对象

event.preventDefault();

b) vue方式,不依赖于事件对象

<a href="#" @click.prevent="show3()">阻止修饰符Vue</a>

4.5 键盘事件

@keydown、@keypress、@keyup
1、可以方法返回event。

<input type="text" @keydown="showKey($event)">

2、可以使用系统定义的按键

<input type="text" @keydown.enter="showKey()">

3、可以自定义按键

//自定义按键
Vue.config.keyCodes={
    a:65
}
<input type="text" @keydown.a="showKey()">

4.6 事件修饰符

一些常用修饰符

  • .stop 阻止单击事件继续传播
  • .prevent 提交事件不再重载页面
  • .capture 即内部元素触发的事件先在此处理,然后才交由内部元素进行处理
  • .self 只当在 event.target 是当前元素自身时触发处理函数,即事件不是从内部元素触发的
  • .once 点击事件将只会触发一次
  • .passive 滚动事件的默认行为 (即滚动行为) 将会立即触发,而不会等待 onScroll 完成
<!-- 阻止单击事件继续传播 -->
<a v-on:click.stop="doThis"></a>

<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>

<!-- 添加事件监听器时使用事件捕获模式 -->
<!-- 即内部元素触发的事件先在此处理,然后才交由内部元素进行处理 -->
<div v-on:click.capture="doThis">...</div>

<!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
<!-- 即事件不是从内部元素触发的 -->
<div v-on:click.self="doThat">...</div>

<!-- 点击事件将只会触发一次 -->
<a v-on:click.once="doThis"></a>

<!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 -->
<!-- 而不会等待 `onScroll` 完成  -->
<!-- 这其中包含 `event.preventDefault()` 的情况 -->
<div v-on:scroll.passive="onScroll">...</div>

修饰字符串某些不冲突情况下可以串联

<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a>

<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>

注意: 不要把 .passive.prevent 一起使用

五、属性

示例:v-bind

5.1 简介

v-­bind 用于属性绑定, v­-bind:属性=""
v­-bind:src="" 简写为 :src=""

5.2 class和style的几种使用方式

var vm = new Vue({
    el: "#itany",
    data: {
        url:"https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png",
        w:"200px",
        h:"100px",
        bb:'aa',
        dd:'cc',
        flag:true,
        num:-2,
        hello:{aa:true,cc:true},
        xx:{color:'blue',fontSize:'30px'},
        yy:{backgroundColor:'#ff7300'}
    },
    methods:{
    }
});
<style>
    .aa{
        color:red;
        font-size:20px;
    }
    .cc{
        background-color:#ccc;
    }
</style>
<img :src="url" :width="w" :height="h">

<!-- 方式1:变量形式 -->
 <p :class="bb">南京南京</p>

<!-- 方式2:数组形式,同时引用多个 -->
<p :class="[bb,dd]">南京南京</p>

<!-- 方式3:json形式,常用!!! -->
 <p :class="{aa:true,cc:flag}">南京南京</p>
 <p :class="{aa:num>0}">南京南京</p>

<!-- 方式4:变量引用json形式 -->
 <p :class="hello">南京南京</p>

<!-- style属性 -->
<p :style="[xx,yy]">itany</p>

六、过滤器

6.1简介

用来过滤模型数据,在显示之前进行数据处理和筛选

语法:{{ data | filter1(参数) | filter2(参数)}}

6.2 内置过滤器或者三方过滤器

Vue2.0将内置过滤器都废除了,所以可以通过使用三方过滤器或者自定义过滤器使用。
常用三方过滤器:
lodash:一些常用的数据处理
data-fns:日期格式化
accounting.js:货币格式化

6.3 自定义过滤器

示例:自定义过滤器 filter

6.3.1 全局过滤器

定义(全局定义):

        Vue.filter("number1", (data, n) => {
            return data.toFixed(n);
        });

使用:

<h3>{{1.2345|number1(2)}}</h3>
6.3.2 局部过滤器

定义(在vue中):

filters: {
    number2: (data, n) => {
        return data.toFixed(n);
    }
}

使用:

<h3>{{2.3456|number2(2)}}</h3>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vuexy – Vuejs + HTML 管理仪表板模板 – 是基于 Vue CLI、Vuex 和 Vuexy 组件框架的对开发人员最友好且高度可定制的 VueJS + HTML 管理仪表板模板。 演示地址:https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/landing/ 更新日志: 反应【添加】 ----基于 Ul/UX 原则的全新设计 ----基于 React 17.x ----基于 Hooks 和功能组件 ----使用 Reactstrap 框架构建 ----可扩展布局 ----新的边框和深色布局 ----新的电子商务仪表板 ----新的小部件和卡片(带有新的游戏化卡片、分析卡片) ----带有完整日历的日历应用 ----发票应用 ----身份验证页面(2 种类型,带有 SVG 插图) ----带有实际使用示例的表格和图表 ----定价页面 ----博客页面(列表、详细信息、编辑页面) ----添加了布局选项 --------盒装布局 --------无菜单 ----评级组件 ----传单地图 ----甜蜜警报 ----烘烤 ----滑块 ----一般错误页面 ----SVG 和字体图标支持 ----有据可查 更新 ----JWT 认证 ----将所有库更新到最新版本 ----改进的组件和扩展 ----改进的小部件和卡片(带有新的游戏化卡片、分析卡片) ----ACL(更新到 CASL 库) ----自动建议 ----更新的待办事项应用程序 ----更新的用户应用程序 ----更新的身份验证页面(2 种类型,带有 SVG 插图) ----更新帐户设置 ----更新的常见问题 ----更新的知识库 ----带有实际使用示例的改进表 ----使用新组件改进表单 ----改进的图表 ----更新的杂项页面 ----改进的文档以更好地理解和使用 已弃用 ----带有基于类的组件的旧版本(我们计划从未来的更新中删除此版本) 已移除 ----农业网格 ----火力基地,Auth0 ----删除了内容页面并移至文档 ----树组件 ----资料清单 ----谷歌地图 ----搜索页面 ----锁屏页面 ----500页
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值