概念:Vue(读音/vjuː/,类似于view)是一套构建用户界面的渐进式JavaScript框架
Vue 中的所有 API 都学完才能开发 Vue,可以学一点开发一点<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script><div id="app">
</div><script>
// 创建Vue应用
Vue.createApp({
// 入口函数
setup() {
// 准备数据
const msg = 'Hello World'
// 返回数据对象
return {
msg
}
}
}).mount('#app') // 内容渲染到 id=app 的盒子里
</script><div id="app">
<h1>{{ msg }}</h1>
</div>setup 函数是 Vue3 API 的入口函数
setup 函数是 Vue3 特有的选项,作为编写代码的起点setup 中声明并返回this 不是 Vue 实例,setup 中是不会用到 this 的刚刚通过 {{ msg }} 渲染出 Hello World,在 Vue3 中,{{ 表达式 }} 称之为插值表达式。
作用:把 表达式的结果 展示在 双标签 中
{{ 表达式 }},表达式指凡是有结果的操作/运算,前端中常见的表达式有:
script 下的 setup 中定义并返回初始数据template 中插值展示数据
<div id="app">
<!-- 1. 直接放变量 -->
<h1>{{ msg }}</h1>
<!-- 2. 对象.属性 -->
<p>我叫 {{ obj.name }}, 今年 {{ obj.age }} 岁</p>
<!-- 3. 三元表达式 -->
<p>{{ obj.age >= 18 ? '已成年' : '未成年' }}</p>
<!-- 3. 算数运算 -->
<p>来年我就 {{ obj.age + 1 }} 岁了</p>
<!-- 4. 函数的调用 -->
<p>fn的返回值是: {{ fn() }}</p>
<!-- 5. 方法的调用 -->
<p>{{ msg }} 中含有 {{ msg.split(' ').length }} 个单词</p>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
Vue.createApp({
setup() {
// 字符串
const msg = 'Hello World'
// 对象
const obj = {
name: '小vue',
age: 9
}
// 函数
function fn() {
return 100
}
// 返回
return {
msg,
obj,
fn
}
}
}).mount('#app')
</script>
安装之后,Chrome 进入开发者工具后,会看到多一个 Vue 的调试面板
简单的说:就是数据变了,视图跟着变
借助开发者工具,发现数据不可改,也就是说,默认声明的数据,不具备响应式特性;
换句话说,即使数据变了,视图也不会更新。
那如何才能实现数据响应式呢?
需要借助我们接下来学习的 reactive、ref 响应式函数
reactiveVue 中解构出 reactive 函数setup 函数中,使用 reactive 函数,传入一个普通对象,返回一个响应式数据对象setup 函数返回一个响应式对象,供模板使用💥注意:reactive 接收的参数是对象
<div id="app">
<p>我叫 {{ obj.name }}, 今年 {{ obj.age }} 岁</p>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
// 解构出 reactive 响应式函数
const { createApp, reactive } = Vue
createApp({
setup() {
// 接收一个对象作为参数
// 返回一个响应式对象(当对象的属性值变了, 视图会跟着变)
const obj = reactive({
name: '小vue',
age: 9
})
return {
obj
}
}
}).mount('#app')
</script>ref通常使用 ref 函数定义响应式数据,不限类型;但如果是对象,推荐使用 reactive
Vue 中解构出 ref 函数ref 传入指定类型的数据,得到一个响应式数据💥注意:操作 ref 创建的数据,js 中需要 .value,template 则不用 .value
<div id="app">
<!-- ref数据: 在 template 中使用不用 .value -->
<h3>{{ msg }}</h3>
<p>我叫 {{ obj.name }}, 今年 {{ obj.age }} 岁</p>
<button @click="onClick">修改ref数据</button>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
// 解构出 createApp, ref 函数
const { createApp, ref } = Vue
createApp({
setup () {
// ref 定义一个响应式字符串
const msg = ref('Hello Vue3')
// ref 定义一个响应式对象
const obj = ref({
name: '小vue',
age: 9
})
// 点击事件
const onClick = () => {
// 修改 msg
msg.value = '你好, Vue3'
// 修改 obj 的 name 和 age 属性
obj.value.name = 'Vue3'
obj.value.age = 10
}
return {
msg,
obj,
onClick
}
}
}).mount('#app')
</script>reactive 只接收对象作为参数,不支持简单数据类型。ref 既可以接收基本类型,也可以接收引用类型,但在操作的时候需要 .value。如果数据是对象、并且字段名称也确定,推荐使用 reactive 赋予数据响应式,其他一律使用 ref。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。