Vue 数据绑定 和 数据渲染

news/2024/7/19 14:54:55 标签: java, vue.js, vue, 前端框架, 后端, js

目录

一、Vue快速入门

        1.简介 :  

        2.MVVM : 

        3.准备工作 : 

二、数据绑定

        1.实例 : 

        2.验证 : 

三、数据渲染

        1.单向渲染 : 

        2.双向渲染 : 


一、Vue快速入门

        1.简介 :  

        (1) Vue[/vju/],是Vue.js的简称,是一个前端框架,常用于构建前端用户界面。

        (2) Vue的核心库只关注视图层,易于上手,且支持和其他类库结合使用,便于与第三方库或项目整合,在开发复杂的单页应用时非常方便。

        2.MVVM : 

                (1) MVVM分别指Model(模型,包括数据及对数据的操作), View(视图,页面渲染结果), ViewModel(模型与视图间的双向操作)
                (2) Vue即是一个MVVM结构的前端框架通过ViewModel中的Data Bingdings完成从M --> V的映射,通过ViewModel中的DOM Listeners完成从V --> M的事件监听
                (3) VM将DOM相关的操作封装起来,使开发人员只需要重点关注View 和 Model本身,而不需要关心View和Model之间具体是如何映射的,大大提高了开发效率
                其示意图如下 : 

        3.准备工作 : 

                首先需要到Vue官网下载vue.js>vue.js链接如下 : 
                https://v2.cn.vuejs.org/v2/guide/installation.html
                点击“开发版本”即可进行下载(以Vue2作为演示版本),如下图所示 : 

                还需要在IDEA的Settings-->Plugins中,搜索并下载Vue.js插件,以保证IDEA可以识别Vue代码。如下图所示 : 

                最后,在需要使用Vue的Project中,将官网下载的vue.js>vue.js文件拷贝到Project中,如下图所示 : 


二、数据绑定

        1.实例 : 

                first_vue.html代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue---1st demo</title>
    <!-- 导入vue.js>vue.js文件 -->
    <script type="text/javascript" src="../vue.js>vue.js"></script>
</head>
<body>
    <!--
        定义一个div标签, 该标签的定义要在创建Vue实例之前,
        否则Vue实例无法挂载成功。
    -->
    <div id="div01">
        <h1>Hello!{{preface}}</h1>
        <h1>My name is {{blogger}}</h1>
    </div>
    <script type="text/javascript">
        /*
            (1)创建一个Vue实例;
            (2)el:"#div01",---表示将创建好的Vue实例挂载到id = div01的元素上
            (3)data属性表示数据池,其中保存了很多以"key-value"形式存放的数据。
                //data中的key可以由程序员手动定义
            (4){{key}}表示插值表达式,其中的数据来自model中的data数据池,
                //代码执行过程中,会到data数据池中尝试匹配数据,若匹配成功则进行替换
                //若匹配失败则显示为空串
         */
        let vm = new Vue({
            el:"#div01",
            data:{
                preface:"This is the first time to try Vue.",
                blogger:"Cyan_RA9"
            }
        });
    </script>
</body>
</html>

                运行结果 : 

        2.验证 : 

                在控制台输出创建的Vue实例,查看对象的结构,如下图所示 : 

                可以在Vue实例中,找到它维护的数据池data(包装成了_data),如下图所示 : 

                还可以找到DOM Listeners的相关组件,如下图所示 : 

                此时,如果在控制台修改Model中数据的值,就会通过Data Bindings自动更新View中显示的内容,如下图所示 : 


三、数据渲染

        1.单向渲染 : 

                (1) 使用插值表达式引用data数据池中的数据适用于一个标签的起始标签和结束标签之间,而不能在标签元素的属性上引用
                (2) 若想在标签元素的属性上引用data数据池,需要用到v-bind;格式为 v-bind:property_name="value",有时亦可简写为 :property_name="value"
                以显示图片为例,one_way.html代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>One-way Rendering</title>
    <script type="text/javascript" src="../vue.js>vue.js"></script>
</head>
<body>
    <div id="app">
        <h1>{{heavenlyBody}}</h1>
        <!-- 插值表达式无法在标签的属性中起作用,如下 -->
        <img src="{{src}}"/>
        <!-- 此处应该使用v-bind进行单向数据渲染,如下 -->
        <img v-bind:src="img_src" v-bind:width="img_width"/>
        <img v-bind:src="img_src" v-bind:width="img_width"/>
        <!-- 简写 -->
        <img :src="img_src" :width="img_width"/>
    </div>

    <!-- 创建Vue实例,并将其挂载到id=app的div上 -->
    <script type="text/javascript">
        let vm = new Vue({
            el:"#app",
            data:{
                heavenlyBody:"Sun",
                img_src:"../sun.png",
                img_width:"300px",
            }
        });
    </script>
</body>
</html>

                运行结果 : 

        2.双向渲染 : 

                数据双向渲染需要用到v-model指令.
                以文本框的相互影响为例,two_way.html代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Two-way Rendering</title>
    <script type="text/javascript" src="../vue.js>vue.js"></script>
</head>
<body>
    <div id="app">
        <!-- 使用插值表达式取出data数据池中的数据 -->
        <h2>{{preface}} ---{{blogger}}</h2>
        <h3>Please input your fond color in the text bow below:</h3>
        <div>
            <!--
                (1)第一个input标签使用双向渲染,即Model -- View之间互相映射的实现。
                (2)当第一个input标签中的value改变时,会通过v-model双向渲染
                    修改data数据池中color属性的值,进而,下面的第二个input标签
                    以及p标签中都使用了v-bind:单向渲染,可以同步data中color数据的更新。
             -->
            <input type="text" name="color1" v-model="color"/>
        </div>
        <div>
            <!--
                第二个input标签使用单向渲染,使得data中的color变化时,
                能够反应到该input标签中。即Model到View的映射实现
             -->
            <input type="text" name="color2" v-bind:value="color"/>
        </div>
        <p><font v-bind:color="color">The color you like is: {{color}}</font></p>
    </div>

    <script type="text/javascript">
        let vm = new Vue({
            el: "#app",
            data: {
                preface: "Test two-way data Rendering~",
                blogger: "Cyan_RA9",
                color: "pink"
            }
        })
    </script>
</body>
</html>

                运行效果 : (如下GIF图)

        System.out.println("END------------------------------------------------------------");


http://www.niftyadmin.cn/n/5136635.html

相关文章

C++ 自引用指针this(整理)

使用例子&#xff1a; #include <iostream> #include <Windows.h> using namespace std; class A { public:A(int x1){x x1;}void disp(){cout<<"this"<<this<<" when x"<<this->x<<endl;} private:int x;…

文件改名,轻松添加前缀顺序编号,文件改名更高效!

您是否曾经需要批量修改文件名&#xff0c;并希望在文件名中添加特定的前缀或顺序编号&#xff1f;现在&#xff0c;我们为您带来了一款全新的文件改名工具&#xff0c;帮助您轻松解决这个问题&#xff01; 第一步&#xff0c;进入文件批量改名高手主页面&#xff0c;在板块栏…

docker搭建halo个人博客

docker run -it -d --name halo -p 9090:8090 -v /usr/local/halo2:/root/.halo2 halohub/halo:2.10halo个人网站搭建效果 提供皮肤市场 编辑界面 自定义菜单

Netty 心跳机制详解

1、什么是心跳机制 在 TCP 保持长连接的过程中&#xff0c;客户端与服务端之间如果长时间没有交互的话&#xff0c;无法发现对方是否已经掉线。为了确保客户端与服务端是否都还正常工作&#xff0c;客户端和服务端需要定期发送心跳包来维护连接。其核心实现依赖的是 IdleState…

(13)PC端自动化测试-C#微信接收消息并自动回复

本篇文章实现了微信自动接收最新的实时聊天信息&#xff0c;并对当前实时的聊天信息做出对应的回复。 可以自行接入人工智能或者结合自己的业务来做出自动回复。 下面视频是软件实际效果 自动接收消息并回复 实现的逻辑是实时监控微信的聊天面板中UI对象来判断是否有最新的消…

Mac电脑矢量编辑必备:Sketch 最新中文 for mac

Sketch是一款专门为Mac设计的矢量图形绘制软件&#xff0c;广泛应用于UI/UX设计领域。它拥有丰富的设计工具和功能&#xff0c;使得设计师可以轻松创建高质量的界面设计和交互原型。Sketch基于矢量图形&#xff0c;可以无损放大和缩小&#xff0c;保证设计的清晰度和质量。它还…

数据结构Demo——简单计算器

简单计算器 一、项目介绍二、技术使用三、具体代码实现1.前端部分2.后端部分 一、项目介绍 本项目实现了一个通过网页访问的简单计算器&#xff0c;它可以对带括号的加减乘除表达式进行计算并将计算结果返回给用户&#xff0c;并且可以对用户输入的表达式进行合法性判断&#…

vue3学习(十五)--- Pinia状态管理器

文章目录 安装引入初始化仓库Store页面使用state1. 直接修改state2. 批量修改State的值 $patch对象形式3. 批量修改State的值 $patch函数形式4. 通过actions修改 使用方法直接在实例调用解构store gettersactions 同步和异步同步异步 常见API$reset()$subscribe$onAction pinia…