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

【Vue3入门1】01-Vue3的基础 + ref reactive

首先确保已经有了ES6的基础

本文介绍 vue 的基础使用以及 两种响应数据的方式。

目录

1. 创建一个vue应用程序

2. Vue模块化开发

3. ref 和 reactive 的区别


1. 创建一个vue应用程序

所需的两个文件:

https://unpkg.com/vue@3/dist/vue.global.js

https://unpkg.com/vue@3/dist/vue.esm-browser.js

打开对应网页后右键另存为保存到桌面上

创建一个vue文件夹,文件夹内再创建一个demo文件夹

将 “vue.global.js” 文件复制进demo文件夹,并将此文件夹在vscode中打开

打开后,在demo文件夹中再创建一个demo.html

在head标签内创建一个script标签 src="vue.global.js"

效果如图:

现在开始创建 一个vue应用程序

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="vue.global.js"></script>
</head>
<body>
    <!-- 创建一个id为app的div元素 -->
    <div id="app">
        {{ msg }}     
        <!-- 7.{{ }} 插值表达式:可以将vue中定义的数据进行渲染 -->
        <!-- 8.获取到return的msg -->
        
        <!-- 10.获取新的复杂数据 -->
        <h2>{{ web.title }}</h2>
        <h2>{{ web.url }}</h2>
    </div>
    <script>
        // 11.如果想要去掉 createApp和reactive前的Vue 可以利用解构,效果不变
        // const {createApp,reactive} = Vue

            // 1.开始创建一个vue应用程序
            // 2.Vue.createApp({ })
            Vue.createApp({
                // 3.setup选项 设置响应的数据和响应方法
                setup(){
                    // 9.msg是简单的数据,复杂的可以使用reactive({})
                    const web = Vue.reactive({
                        // 自己定义属性和属性值
                        title:'zzz',
                        url:'baidu.com'
                    })


                    // 4.设置一个return语句返回数据
                    return {
                        msg:'success',
                        // 返回定义的复杂的数据
                        web
                    }

                }
            }).mount("#app")    // 5.将vue应用程序挂载到app上
            // 6.#app如何获取到return的msg值 回到div内
    </script>
</body>
</html>


2. Vue模块化开发

首先将在第一步保存在桌面的 vue.esm-browser.js 复制到 demo 文件夹中

回到刚刚的代码中删除第一个创建的script标签

并在 body 里的 script 标签添加 type = "module" 属性

并进行解构方式的修改

将传统开发方式修改为模块化开发方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <div id="app">
        {{ msg }}     

        <h2>{{ web.title }}</h2>
        <h2>{{ web.url }}</h2>

    </div>
    <script type="module">
        // 修改为模块化开发方式
        import {createApp,reactive} from './vue.esm-browser.js'
            createApp({
                setup(){
                    const web = reactive({
                        title:'zzz',
                        url:'baidu.com'
                    })

                    return {
                        msg:'success',
                        web
                    }

                }
            }).mount("#app")
    </script>
</body>
</html>

注意这里要使用 live server 打开后才能看到信息

和前面介绍的传统方式的效果一样


3. ref 和 reactive 的区别

前面介绍的 reactive 创建了响应式对象 web

它是用于存储复杂数据类型的数据 如对象和数据

ref 是用于存储单个基本类型的数据 如数字、字符串等

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <div id="app">
        {{ msg }}     

        <h2>{{ web.title }}</h2>
        <h2>{{ web.url }}</h2>

        <!-- 4.显示number -->
        <h3>{{ number }}</h3>

    </div>
    <script type="module">
        // 1.导入 ref 
        import {createApp,reactive,ref} from './vue.esm-browser.js'
            createApp({
                setup(){
                    // 2.定义常量number 用ref 引用类型
                    const number = ref(10);
                    // 5.如果想要修改number值
                    number.value = 20;

                    const web = reactive({
                        title:'zzz',
                        url:'baidu.com'
                    })
                    // 6.但如果想要修改reactive里的内容,可以直接修改 不用 .value
                    web.url = 'www.baidu.com';

                    return {
                        msg:'success',
                        web,
                        // 3.返回number
                        number
                    }

                }
            }).mount("#app")
    </script>
</body>
</html>

前面说 ref 只能存储单个的数字 字符串,但实际上也能存储数组

<body>
    <div id="app">
        {{ msg }}     

        <h2>{{ web.title }}</h2>
        <h2>{{ web.url }}</h2>

        <!-- 4.显示number -->
        <h3>{{ number }}</h3>

        <!-- 8.num1 -->
        <h3>{{ num1 }}</h3>
    </div>
    <script type="module">
        // 1.导入 ref 
        import {createApp,reactive,ref} from './vue.esm-browser.js'
            createApp({
                setup(){
                    // 2.定义常量number 用ref 引用类型
                    const number = ref(10);
                    // 7.ref定义数组
                    const num1 = ref([1,2,3]);

                    // 5.如果想要修改number值
                    number.value = 20;

                    const web = reactive({
                        title:'zzz',
                        url:'baidu.com'
                    })
                    // 6.但如果想要修改reactive里的内容,可以直接修改 不用 .value
                    web.url = 'www.baidu.com';

                    return {
                        msg:'success',
                        web,
                        // 3.返回number
                        number,
                        num1
                    }
                }
            }).mount("#app")
    </script>
</body>


本文介绍 vue 的基础使用以及 两种响应数据的方式。

相关文章:

  • 什么是 DAO?
  • 深入解析libsunrpc:构建分布式系统的核心RPC库
  • [Windows] AI智能音频分离软件SpleeterGui v2.9.5.0【官方中文版】
  • 基于BERT的序列到序列(Seq2Seq)模型,生成文本摘要或标题
  • vue3,element-plus 表格搜索过滤数据
  • 高效团队开发的工具与方法 引言
  • MySQL是怎么保障ACID特性的
  • Docker 容器基础技术:namespace
  • Python----计算机视觉处理(Opencv:直方图均衡化)
  • 本周安全速报(2025.3.18~3.24)
  • GeoServer与MapServer:两款常用的开源地理空间服务器
  • 通过 ECNWP 洋流、海浪可视化开发的方法和架构
  • 破局AI落地困局 亚信科技“四位一体手术刀“切开产业智能三重枷锁
  • 【嵌入式学习2】内存管理
  • Android Compose 框架的 ViewModel 委托深入剖析(二十)
  • 小试牛刀-Turbine数据分发
  • FPGA_YOLO(二)
  • Python Web 框架之 Flask
  • 全文通读:126页华为IPD集成产品开发与DFX实战【文末附可编辑PPT下载链接】
  • spring+k8s 功能说明
  • 王毅会见俄罗斯外长拉夫罗夫
  • “上报集团文化助力区域高质量发展赋能平台”揭牌
  • 挤占学生伙食费、公务考察到景区旅游……青岛通报5起违规典型问题
  • 人民时评:投资于人,促高质量充分就业
  • 体坛联播|皇马上演罢赛闹剧,杨瀚森宣布参加NBA选秀
  • 中法共创《海底两万里》,演员保剑锋重回戏剧舞台演船长