Vue核心语法

这篇具有很好参考价值的文章主要介绍了Vue核心语法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Vue核心语法

vue下载

我们以前都是用的框架来搭建的,省去了很多内容,今天我们从原始的方式来使用vue,下面是下载地址
Vue核心语法,Vue,vue.js,javascript,前端

响应式

未使用响应式

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatiable" content="IE=edge">
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id = "app"></div>
        <script src="vue.min.js"></script> <!--这里引入的就是我们下载下来的vue.main.js-->
        <script>
            let value = '这是内容'
            document.getElementById('app').textContent=value
            // value = '新内容'
            // document.getElementById('app').textContent=value
            const vm=new Vue({
            })
        </script>
    </body>
</html>

Vue核心语法,Vue,vue.js,javascript,前端
我们把注释去掉

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatiable" content="IE=edge">
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id = "app"></div>
        <script src="vue.min.js"></script> <!--这里引入的就是我们下载下来的vue.main.js-->
        <script>
            let value = '这是内容'
            document.getElementById('app').textContent=value
            value = '新内容'
            document.getElementById('app').textContent=value
            const vm=new Vue({
            })
        </script>
    </body>
</html>

Vue核心语法,Vue,vue.js,javascript,前端
从上面的演示可以看到,没有用响应式的时候,如果我们要变更元素,需要处理数据的逻辑,还需要再次操作一下DOM,很繁琐

let、var、const

const和let的关系

均不可重复声明

let声明的变量可以改变,值和类型都可以改变;const声明的常量不可以改变,这意味着,const一旦声明,就必须立即初始化,不能以后再赋值。

let 和 const 是值的修改问题

let和var的关系

var是函数作用域,而let是块作用域。在函数内声明了var,整个函数内都是有效的,在for循环内定义了一个var变量,实际上其在for循环以外也是可以访问的,而let由于是块作用域,所以如果在块作用域内(for循环内)定义的变量,在其外面是不可被访问的。

使用响应式

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatiable" content="IE=edge">
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id = "app"><!--1、先为元素定义一个id,后续这个元素会被定义为vue的生效位置-->
            <p>{{title}}</p> <!--4、这里的{{title}}即为插值表达式-->
            <p>{{content}}</p>
        </div> 
        <script src="vue.min.js"></script> <!--这里引入的就是我们下载下来的vue.main.js-->
        <script>
            const vm=new Vue({
                el: '#app' ,//2、 #号,即带选择器的使用方式,属性el,用于设置Vue的生效位置 ,选定了元素之后,它所有的响应式以及后续的语法功能,只会在app这个元素内部生效,在其他元素中编写的话,是没有效果的
                data(){    // 3、 固定写法,协商需要响应式的数据
                    return{
                        title: '这是标题文本',
                        content: '这是文本内容'
                    }
                }
            })
        </script>
    </body>
</html>

Vue核心语法,Vue,vue.js,javascript,前端
发现就展示出来了
还记得我们const vm=new Vue,那我们想要访问data里的数据,就可以通过这个vm实例来访问
Vue核心语法,Vue,vue.js,javascript,前端
我们也可以操作元素进行变更
Vue核心语法,Vue,vue.js,javascript,前端
这就是响应式编程了

这里绑定生效的位置,是不是让人想起了Vue脚手架创建的项目
Vue核心语法,Vue,vue.js,javascript,前端
Vue核心语法,Vue,vue.js,javascript,前端

methods属性

methods,顾名思义,是方法,里面就存放着我们定义的各种方法,比如说我要打印一写内容

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatiable" content="IE=edge">
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id = "app">
            <p>{{output()}}</p> <!--3、调用了output方法-->
        </div> 
        <script src="vue.min.js"></script> 
        <script>
            const vm=new Vue({
                el: '#app' ,
                data(){    
                    return{
                        title: '这是标题文本',
                        content: '这是文本内容'
                    }
                },
                // 1、methods属性,没有(),和data对比一下
                methods:{
                    output(){//2、这个就是带()的,定义的方法
                        console.log("methods方法执行了")
                        return '标题为:'+ this.title+',内容为:'+this.content
                    }
                }
            })
        </script>
    </body>
</html>

Vue核心语法,Vue,vue.js,javascript,前端

计算属性

那如果我要执行三次呢
复制两遍

<p>{{output()}}</p> <!--3、调用了output方法-->

Vue核心语法,Vue,vue.js,javascript,前端
问题是我什么都没变,还是调用了三次,是消耗资源的,这就引申出了计算属性这个概念

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatiable" content="IE=edge">
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id = "app">
            <p>{{output()}}</p>
            <p>{{output()}}</p>
            <p>{{output()}}</p> 
            <p>{{returnContent}}</p>  <!--3、多次执行计算属性中的方法,记住:这个计算属性调用的时候不能带()-->
            <p>{{returnContent}}</p> 
            <p>{{returnContent}}</p> 
        </div> 
        <script src="vue.min.js"></script> 
        <script>
            const vm=new Vue({
                el: '#app' ,
                data(){    
                    return{
                        title: '这是标题文本',
                        content: '这是文本内容'
                    }
                },
                methods:{
                    output(){
                        console.log("methods方法执行了")
                        return '标题为:'+ this.title+',内容为:'+this.content
                    }
                },
                computed: { //1、计算属性
                    returnContent(){ //2、计算属性中定义方法
                        console.log("computed方法执行了")
                        return '标题为:'+ this.title+',内容为:'+this.content
                    }
                }
            })
        </script>
    </body>
</html>

Vue核心语法,Vue,vue.js,javascript,前端
我们发现明明写了三行

<p>{{returnContent}}</p>

但是只执行了一次,这就是计算属性的特点:具有缓存性

有意思

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatiable" content="IE=edge">
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id = "app">
            <p>{{output()}}</p>
            <p>{{output()}}</p>
            <p>{{output()}}</p> 
            <p>{{returnContent}}</p>  <!--3、多次执行计算属性中的方法,记住:这个计算属性调用的时候不能带()-->
            <p>{{returnContent}}</p> 
            <p>{{returnContent}}</p> 
            <p>{{updateTitle()}}</p>  <!--4、修改一下data信息-->
        </div> 
        <script src="vue.min.js"></script> 
        <script>
            const vm=new Vue({
                el: '#app' ,
                data(){    
                    return{
                        title: '这是标题文本',
                        content: '这是文本内容'
                    }
                },
                methods:{
                    output(){
                        console.log("methods方法执行了")
                        return '标题为:'+ this.title+',内容为:'+this.content
                    },
                    updateTitle(){
                        this.title='new title'
                        console.log("updateTitle方法执行了")
                    }
                },
                computed: { //1、计算属性
                    returnContent(){ //2、计算属性中定义方法
                        console.log("computed方法执行了")
                        return '标题为:'+ this.title+',内容为:'+this.content
                    }
                }
            })
        </script>
    </body>
</html>

Vue核心语法,Vue,vue.js,javascript,前端
说明元素变更后,所有的页面上的涉及了这个元素变更的位置,绑定的方法都执行了一遍,甚至包括元素变更的方法自己

侦听器

监听你某个数据有没有变化,比如说某个data里的数据变化了,并不是只想变更页面元素,还想做点其他的东西,类似于一个钩子函数,而且,侦听的一定是响应式的数据哈,不是响应性的数据是不可以的

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatiable" content="IE=edge">
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id = "app">
            <p>{{title}}</p> <!--3、元素展示,便于观察-->
        </div> 
        <script src="vue.min.js"></script> 
        <script>
            const vm=new Vue({
                el: '#app' ,
                data(){    
                    return{
                        title: '这是标题文本',
                        content: '这是文本内容'
                    }
                },
                watch:{ //1、监听属性,也就是侦听器
                    title(newValue,oldValue){ //2、定义方法,这个title就是方法名,也等于响应式数据的key,里面有两个参数,一个是新值一个是旧值
                        console.log(newValue,oldValue)
                    }
                }
            })
        </script>
    </body>
</html>

Vue核心语法,Vue,vue.js,javascript,前端
它的作用就是监听元素的变化,实际工作中,如果某个元素有变化,你可以发起网络请求或者修改数据库,随需求变化

指令

渲染指令

v-for
v-html
v-text
v-if //控制是否显示
v-show //也是控制是否显示,但是就算不显示,元素也不会销毁,只是不展示出来而已,而v-if则是直接销毁,元素的创建与销毁的成本是非常高的
v-for
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatiable" content="IE=edge">
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id = "app">
            <p v-for="item in obj">{{item}}</p>
            <p v-for="(item,key,index) in obj">{{item}}:{{key}}:{{index}}</p>
        </div> 
        <script src="vue.min.js"></script> 
        <script>
            const vm=new Vue({
                el: '#app' ,
                data(){    
                    return{
                        obj: {a:10,b:20,c:30}
                    }
                }
            })
        </script>
    </body>
</html>

Vue核心语法,Vue,vue.js,javascript,前端

属性指令

v-bind
v-bind
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatiable" content="IE=edge">
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id = "app">
            <p title="就像鼠标放在图片上才显示出来的小字一样">这是原生的</p>
            <!--现在想要这个title不写死了,而是和响应式数据title绑定在一起-->
            <p v-bind:title = "title">这是使用v-bind:</p>
            <p :title = "title">这是使用:</p>
        </div> 
        <script src="vue.min.js"></script> 
        <script>
            const vm=new Vue({
                el: '#app' ,
                data(){    
                    return{
                        title: 'hello'
                    }
                }
            })
        </script>
    </body>
</html>

Vue核心语法,Vue,vue.js,javascript,前端
Vue核心语法,Vue,vue.js,javascript,前端
Vue核心语法,Vue,vue.js,javascript,前端

事件指令

v-on
v-on:click
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatiable" content="IE=edge">
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id = "app">
            <button v-on:click="output">按钮绑定点击方法</button>
            <button @click="output2">注意不能用:来简写,要用@符号</button>
        </div> 
        <script src="vue.min.js"></script> 
        <script>
            const vm=new Vue({
                el: '#app' ,
                data(){    
                    return{
                    }
                },
                methods:{
                    output(){
                        console.log("methods方法执行了")
                    },
                    output2(){
                        console.log("2methods方法执行了")
                    }
                }
            })
        </script>
    </body>
</html>

Vue核心语法,Vue,vue.js,javascript,前端

表单指令

怎么理解这个表单的意思,我的理解就是页面上可操作可变化的元素就是表单,例如:输入框

v-model
v-model

只能用于表单的双向绑定,双向的意思就比如页面上的一个输入框里的内容绑定了一个响应式数据,那有人操作了页面上输入框的内容,那响应式数据就也变更了

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatiable" content="IE=edge">
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id = "app">
            <!--通过v-model:的方式绑定了响应式数据-->
            <input type="text" v-model="inputValue">
            <!--只是用来展示,方便观察数据的变化-->
            <p v-text="inputValue"></p>
        </div> 
        <script src="vue.min.js"></script> 
        <script>
            const vm=new Vue({
                el: '#app' ,
                data(){    
                    return{
                        inputValue: '默认内容'
                    }
                }
            })
        </script>
    </body>
</html>

Vue核心语法,Vue,vue.js,javascript,前端

修饰符

什么是修饰符,修饰符是用来修饰指令的

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatiable" content="IE=edge">
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id = "app">
            <input type="text" v-model="inputValue">
            <p v-text="inputValue"></p>
            <!--通过trim修饰的v-model,就可以去除掉两边的空格-->
            <input type="text" v-model.trim="inputValue">            
        </div> 
        <script src="vue.min.js"></script> 
        <script>
            const vm=new Vue({
                el: '#app' ,
                data(){    
                    return{
                        inputValue: '默认内容'
                    }
                }
            })
        </script>
    </body>
</html>

在第一个输入框内输入空格
Vue核心语法,Vue,vue.js,javascript,前端
在第二个输入框内输入空格
Vue核心语法,Vue,vue.js,javascript,前端文章来源地址https://www.toymoban.com/news/detail-533139.html

到了这里,关于Vue核心语法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 〖大前端 - 基础入门三大核心之JS篇㉔〗- JavaScript 的数组的常用方法 (一)

    当前子专栏 基础入门三大核心篇 是免费开放阶段 。 推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 大前端全栈架构白宝书专栏, 目前阶段免费开放 , 购买任意白宝书体系化专栏可加入 TFS-CLUB 私域社区。 福利:除了通过订阅\\\"白宝书系列专

    2024年02月07日
    浏览(56)
  • 〖大前端 - 基础入门三大核心之JS篇⑰〗- JavaScript的流程控制语句「while循环语句」

    当前子专栏 基础入门三大核心篇 是免费开放阶段 。 推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 大前端全栈架构白宝书专栏, 目前阶段免费开放 , 购买任意白宝书体系化专栏可加入 TFS-CLUB 私域社区。 福利:除了通过订阅\\\"白宝书系列专

    2024年02月04日
    浏览(94)
  • [GN] Vue3.2 快速上手 ---- 核心语法2

    用在普通 DOM 标签上,获取的是 DOM 节点。 用在组件标签上,获取的是组件实例对象。 用在普通 DOM 标签上: 用在组件标签上: 父组件App使用子组件Person Person组件标签上使用ref 可以获取组件实例 但需要子组件代码中 使用defineExpose暴露内容 App.vue是父组件,Person是子组件 父

    2024年01月21日
    浏览(60)
  • 〖大前端 - 基础入门三大核心之JS篇⑱〗- JavaScript的流程控制语句「break 和 continue语句」

    当前子专栏 基础入门三大核心篇 是免费开放阶段 。 推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 大前端全栈架构白宝书专栏, 目前阶段免费开放 , 购买任意白宝书体系化专栏可加入 TFS-CLUB 私域社区。 福利:除了通过订阅\\\"白宝书系列专

    2024年02月05日
    浏览(57)
  • 〖大前端 - 基础入门三大核心之JS篇⑯〗- JavaScript的流程控制语句「for循环语句及算法题」

    当前子专栏 基础入门三大核心篇 是免费开放阶段 。 推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 大前端全栈架构白宝书专栏, 目前阶段免费开放 , 购买任意白宝书体系化专栏可加入 TFS-CLUB 私域社区。 福利:除了通过订阅\\\"白宝书系列专

    2024年02月07日
    浏览(51)
  • Vue | Vue.js 高级语法系列

    🖥️ Vue.js专栏:Vue.js 高级语法系列 🧑‍💼 个人简介:一个不甘平庸的平凡人🍬 ✨ 个人主页:CoderHing的个人主页 🍀 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️ 👉 你的一键三连是我更新的最大动力❤️ 目录 一、Vue中自定义指令 认识自定义指令 指令的生命周期

    2024年01月21日
    浏览(39)
  • 前端框架Vue-Vue核心

    目录 第1章 Vue核心 1.1 Vue简介 1.1.2 Vue的特点 1.1.3 与其它 JS 框架的关联 1.1.4 学习Vue之前要掌握的JavaScript基础知识 1.1.5 Vue官网 1.1.6 Vue周边库 1.3 模块语法 1.3.1 模板的理解 1.3.2 插值语法 1.3.3 指令语法 1.4 数据绑定 1.4.1. 单向数据绑定 1.4.2. 双向数据绑定 1.4.3 el与data的两种写法

    2024年02月13日
    浏览(70)
  • Vue.js的核心概念

    Vue.js 是一个流行的 JavaScript 框架,用于构建交互式的 web 界面。 它的核心概念包括: 1. 响应式系统 :Vue 使用响应式系统来确保 UI 与 underlying data 保持同步。当数据变化时,视图自动更新。 2. 组件系统 :Vue 应用由可复用的组件构成。每个组件都有自己的视图、业务逻辑和样

    2024年01月18日
    浏览(51)
  • 前端技术学习第八讲:VUE基础语法---初识VUE

    Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时

    2023年04月27日
    浏览(48)
  • 前端系列-Vue3基本语法

    # 插值操作 1、插值:{{}} 2、指令:v-     在{{}}和v-指令进行数据绑定时,支持js单个表达式     p v-once{{msg}}/p 数据只第一次时显示,不响应式     p v-pre{{msg}}/p 内容原封不动的展示     p v-text=\\\'msg\\\'/p 相当于插值表达式的功能     p v-html=\\\'title\\\'/p 可以解析标签     # 绑定属

    2024年02月09日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包