当前位置: 首页 > article >正文

Vue基础语法

文章目录

  • 1 下载vue.js
  • 2 挂载点、模板和实例
  • 3 数据、事件和方法
  • 4 属性绑定和双向数据绑定
  • 5 计算属性和侦听器
  • 6 v-if、v-show和v-for指令

1 下载vue.js

Vue.js官网:https://v2.cn.vuejs.org/v2/guide/,将下载好的vue.js文件放入Vue文件夹(自定义名字)下即可。
在这里插入图片描述

2 挂载点、模板和实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>挂载点、模板和实例</title>
    <script src="./vue.js"></script>
</head>
<body>
    <!--挂载点、模板、实例之间的关系-->
    <div id="root"> <!--挂载点-->
        <!--模板就是挂载点内的内容-->
    </div>
    <script>
        /*实例*/
        new Vue({
            el: "#root",
            template: '<h1>{{msg}}</h1>',
            data:{
                msg: "world"
            }
        })
    </script>
</body>
</html>

3 数据、事件和方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数据、事件和方法</title>
    <script src="./vue.js"></script>
</head>
<body>
    <div id="root"> 
        <h1>{{number}}</h1><!--number插入到h1中:插值表达式-->
        <h1 v-text="content"></h1><!--会转义:<h1>hello</h1>-->
        <h1 v-html="content"></h1><!--不会转义:hello-->
        <div v-on:click="handleClick">{{content}}</div><!--点击事件-->
        <div @click="handleClick">{{content}}</div><!--v-on:简写形式@-->
    </div>
    <script>
        new Vue({
            el: "#root",
            template: '',
            data:{
                msg: "world",
                number: 123,
                content: "<h1>hello</h1>"
            }, 
            methods:{
                handleClick:function(){
                    this.content = "world"
                }
            }
        })
    </script>
</body>
</html>

4 属性绑定和双向数据绑定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>属性绑定和双向数据绑定</title>
    <script src="./vue.js"></script>
</head>
<body>
    <div id="root">
        <div v-bind:title="'del li' + title">hello world</div><!--属性和title数据项绑定。模板指令的等号后面跟的内容就是js表达式-->
        <div :title="'del li' + title">hello world</div><!--v-bind缩写:-->
        <input :value="content"/><!--单项绑定-->
        <input v-model="content"/><!--双向数据绑定,框内内容改变,content也变化-->
        <div>{{content}}</div>
    </div>
    <script>
        new Vue({
            el: "#root",
            data:{
                title:"this is hello world",
                content: "this is content"
            }
        })
    </script>
</body>
</html>

5 计算属性和侦听器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>计算属性和侦听器</title>
    <script src="./vue.js"></script>
</head>
<body>
    <div id="root"> 
        姓:<input v-model="firstName"/>
        名:<input v-model="lastName"/>
        <div>{{firstName}}{{lastName}}</div>
        <div>{{fullName}}</div><!--fullName是姓+名-->
        <div>{{count}}</div>
    </div>
    <script>
        new Vue({
            el: "#root",
            data:{
                firstName: '',
                lastName: '',
                count: 0
            },
            /*计算属性,如果firstName和lastName没有变化,可以使用上一次的缓存值*/
            computed:{
                fullName: function(){
                    return this.firstName + ' ' + this.lastName
                }
            },
            /*侦听器,监听某个数据的变化,一点发生变化,就会在监听器中做业务逻辑*/
            watch:{
                /*firstName:function(){
                    this.count ++
                },
                lastName:function(){
                    this.count ++
                },*/
                fullName: function(){
                    this.count ++
                }
            }
        })
    </script>
</body>
</html>

6 v-if、v-show和v-for指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>v-if、v-show和v-for指令</title>
    <script src="./vue.js"></script>
</head>
<body>
    <div id="root"> 
        <div v-if="show">hello world</div><!--从DOM中删除标签(如果只需要一次操作,该方法更好)-->
        <div v-show="show">hello world</div><!--加了个属性值display:none;隐藏标签(更好的选择,性能更高)-->
        <button @click="handleClick">toggle</button>
        <ul>
            <li v-for="item of list" :key="item">{{item}}</li><!--数据做循环展示(li标签)。:key提升每一项渲染的性能,要求每一次循环key值不相同-->
            <li v-for="(item, index) of list" :key="index">{{item}}</li><!--如果index改变(排序)就存在问题了-->
        </ul>
    </div>
    <script>
        new Vue({
            el: "#root",
            data:{
                show: true,
                list: [1, 2, 3]
            },
            methods:{
                handleClick: function(){
                    this.show = !this.show;
                }
            }
        })
    </script>
</body>
</html>

http://www.kler.cn/a/289934.html

相关文章:

  • 速盾:高防 CDN 和 CDN 的缓存机制都一样吗?
  • QQ 小程序已发布,但无法被搜索的解决方案
  • C语言 | Leetcode C语言题解之第556题下一个更大元素III
  • flutter下拉刷新上拉加载的简单实现方式三
  • qt QKeySequence详解
  • 设计模式之责任链模式(Chain Of Responsibility)
  • ai聊天软件哪个好用?分享5款实用的智能聊天软件
  • Linux云计算学习笔记11 (计划任务)
  • SpringBoot 大学生体质测试管理系统
  • 记录k8s的pod生命周期笔记
  • 巨魔商店2安装教程,支持最新iOS 17.0的所有型号
  • Spring6梳理5——基于XML管理Bean环境搭建
  • 【系统分析师】-面向对象方法
  • 【优质源码】3D多人在线游戏,前端ThreeJS,后端NodeJS
  • 使用 nuxi generate 进行预渲染和部署
  • Unity本地化id查找器,luaparser函数参数查找
  • CAS带来的ABA问题以及解决方案
  • 微小目标检测
  • 排查SQL Server中的内存不足及其他疑难问题
  • 力扣3272.统计好整数的数目
  • Ansible的脚本:playbook
  • 获取4字节数据中比特为 1 的总数的方法
  • 线性代数教材书籍推荐
  • 前端面试:分类算法列一下有多少种应用场景?
  • Automatic Trim Implementation
  • 过滤器Filter(JavaEE有三大组件: servlet filter linstener)