实验1:Vue基础实验

Web前端开发技术实验报告

实验1Vue基础实验

一、实验目的:

  1. 掌握Vue实例的创建方法
  2. 理解并初步掌握Vue实例的生命周期及钩子函数的使用
  3. 掌握计算属性与侦听器使用方法

二、实验要求:

  1. 掌握Vue的基本语法及使用。
  2. 编写程序并调试,完成以下实验内容。
  3. 上交实验报告电子文档。文档包含源程序,以班级、学号后两位、姓名依次出现组成的字符串如“计算机20-1班01张三实验1” 标识。各班学委收齐本班本次实验后进行打包(打包文件为.rar或.zip类型),使用名称如“1班Web前端开发技术实验1”提交。

三、实验内容:

1、一个简单的一定范围内(如1~100)的猜数游戏。用户在一个输入框里输入所猜的数,如果输入的值不正确,就提示数猜大了或小了;如果输入正确时就祝贺用户猜对。(可分是否利用Vue生命周期钩子函数两种情况实现。)

2、定义一个对象,对象中有姓名和城市,在页面中显示自我介绍,例如“我叫什么,我来自哪个城市”。分别使用methods(方法)、computed(计算属性)和watch(侦听器)三种方式实现。其运行效果如图2所示。

3、定义一个数组,数组中有产品的名称、单价和购买的个数,使用三者中最优的方式计算购物车中产品的总价格。然后,修改产品的数量,重新计算总价格。,其运行效果如图3所示。

四、实验过程中遇到的问题及解决手段:

1.第一次打开页面,结构是空白如图1

                                                                      图1

解决方法:寻找了很久发现是代码没有保存如图2,保存后重新打开即可

                                                                      图2

2.在计算总价时的问题,出现NaN如图3

                                                               图3

解决问题:调试了很久发现变量名写错如图4,price写成prece,修改成price即可

                                                               图4

五、实验结果和源代码

(一).实验1

1.实验结果:如图4,图5

                                                               图4

                                                

                                                 图5(猜了5次三种情况的呈现效果图)

2.实验源代码

<html>

    <head>

              <meta charset="UTF-8" />

              <title>猜大小游戏</title>

              <!-- 引入Vue -->

              <script type="text/javascript" src="../js/vue.js"></script>

       </head>

    <body>

        <div id="guess">

            <h1>猜数游戏</h1>

            随机生成的数为{{num}}

            <br>

            {{info}}

            <br>

            <input v-model="num1" v-show="input_status" :disabled="isdisabled">

            <button @click="playGame" v-show="hidden_status">

                {{message}}

            </button>

            <ul>

                <li v-for="info_ in info_list">

                    第{{info_.id}}次猜数字,输入了<span>「{{info_.num}}」</span>,提示:{{info_.text}}

                </li>

            </ul>

        </div>

        <script src="index.js"></script>

    </body>

    <script>

        var item = 0;

var guess_num = new Vue({

        el: "#guess",

        data: {

            num: '',

            num1: '',

            info: "请按「开始游戏」开始猜数字游戏",

            hidden_status: true,

            input_status: false,

            message: '开始',

            isdisabled: false,

            info_list: []

        },

        watch: {

            num1: function (newNum1, oldNum1) {

                this.info = '开始比较';

                guess_num.changed_num()

            }

        },

        created: function () {

            this.num = Math.floor(Math.random() * 100 + 1);

        },

        methods: {

            changed_num: function () {

                var regNeg = /[0-9]*/;

                let flag = true;

                if (this.num1 == this.num) {

                    this.info = '你猜对了!';

                    this.hidden_status = true;

                    this.isdisabled = true;

                } else if (this.num1 == '') {

                    flag = false;

                    this.info = '请输入一个小于100整数';

                } else if (this.num1 > 100) {

                    this.info = '请输入一个小于100的值';

                } else if (this.num1 > this.num) {

                    this.info = '你输入的数字比要猜的数字大';

                } else if (!regNeg.test(self.num1)) {

                    this.info = '请输入一个整数数字';

                } else {

                    this.info = '你输入的数字比要猜的数字小';

                }

                //避免重复输入

                this.info_list.forEach(item => {

                    if (this.num1 == item.num) {

                        flag = false

                    }

                });

                if (flag) {

                    item++;

                    this.info_list.push({id: item, num: this.num1, text: this.info});

                }

            },

            playGame: function () {

                if((this.message)==("重新开始")){

                    this.num = Math.floor(Math.random() * 100 + 1);

                }

                this.message = "重新开始";

                this.hidden_status = false;

                this.input_status = true;

                this.isdisabled = false;

                this.num1 = '';

                item = 0;

                self.info = '请输入数字';

                this.info_list = [];

            

             

            }

        },

    })

;

    </script>

</html>

(二).实验2

1.实验结果,如图6,图7

                                                                      图6

                                                               图7

2.实验源代码

<!DOCTYPE html>

<html>

       <head>

              <meta charset="UTF-8" />

              <title>1_2</title>

              <!-- 引入Vue -->

              <script type="text/javascript" src="../js/vue.js"></script>

       </head>

       <body>

              <!-- 准备好一个容器-->

              <div id="root">

            名字:<input type="text" v-model="person.name"> <br/><br/>

                     城市:<input type="text" v-model="person.city"> <br/><br/>

            <!-- methods()方法实现  -->

                     <!-- 自我介绍:<span>{{showpage()}}</span> -->

            <!-- computed和watch方法实现 -->

            自我介绍:<span>{{showpage}}</span>

              </div>

       </body>

       <script type="text/javascript">

              Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。

              const vm = new Vue({

                     el:'#root',

                     data:{

                person:{name:"佩奇",city:"茂名"},

                // whatch实现方法

                showpage:"我叫佩奇来自茂名"

           

                     },

            // methods:{

            //     showpage(){

                   

            //         return "我叫"+this.person.name + "来自" + this.person.city;

            //     }

            // },

                     // computed:{

                     //    showpage(){

                     //           return "我叫"+this.person.name + "来自" + this.person.city;

                     //    }

                     // }

            watch:{

                            'person.name'(val){

                                          this.showpage ="我叫"+val + "来自" + this.person.city;

                            },

                            'person.city'(val){

                                   this.showpage ="我叫"+this.person.name + "来自" + val;

                            }

                     }

              })

       </script>

</html>

(三).实验3

1.实验结果,如图8,图9

                                                                                    图8

                                                                      图9

2.实验源代码

<!DOCTYPE html>

<html>

       <head>

              <meta charset="UTF-8" />

              <title>1_3</title>

              <!-- 引入Vue -->

              <script type="text/javascript" src="../js/vue.js"></script>

       </head>

       <body>

              <!-- 准备好一个容器-->

              <div id="root">

            <li v-for="store_ in store">

                <input  type="checkbox" :checked="store_.j" @change="handleCheck(store_.id)"/>

                <span>{{store_.name}}</span>

                单价:{{store_.price}}

                数量:{{store_.count}}

                <button @click="store_.count++">+1</button>

            </li>

          

            总价: <span>{{allPrice}}</span>

              </div>

       </body>

       <script type="text/javascript">

              Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。

              const vm = new Vue({

                     el:'#root',

                     data:{

               store:[

                                   {id:1,name:'小猪',price:100,count:0,j:false},

                    {id:2,name:'佩奇',price:50,count:0,j:false},

           

                            ]

           

                     },

            methods:{

                handleCheck(id){

                    console.log('@---p')

                    this.store.forEach((s)=>{

                        if(s.id===id)

                        s.j=!s.j;

                    })

                }

            },

            computed:{

                            allPrice(){

                    var p=0;

                                    this.store.forEach((s)=>{

                         if(s.j) p=p+s.price*s.count;

                     

                       

                    })

                    return p;

                            },

                     }

              })

       </script>

</html>

六、本次实验的体会(结论):

通过这次实验,我掌握了Vue实例的创建方法,理解并初步掌握了Vue实例的生命周期及钩子函数的使用,掌握了计算属性与侦听器使用方。同时发现自己还有很多不足,整体的代码结构还是不够熟练,日后会加强练习,花更多的时间去学习,努力掌握老师教过的知识,不断提示自己。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36662.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud 服务监控 - Sleuth + Zipkin 全链路追踪实战

一、为何需要全链路追踪&#xff1f; 在微服务架构中&#xff0c;用户请求通常涉及多个服务的交互&#xff08;如订单→支付→库存&#xff09;。这使得性能瓶颈和故障排查变得更加复杂。传统的日志分析面临两大核心挑战&#xff1a; • 性能瓶颈模糊&#xff1a;当响应延迟增…

数据类设计_图片类设计之6_矩阵图形类设计(前端架构)

前言 学的东西多了,要想办法用出来.C和C是偏向底层的语言,直接与数据打交道.尝试做一些和数据方面相关的内容 引入 接续上一篇,讨论矩阵图形类设计 方法论-现在能做什么 这段属于聊天内容---有句话是这么说的&#xff1a;不要只埋头拉车&#xff0c;还要抬头看路。写代码也是…

OpenCV图像拼接(1)概述

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 此图说明了在Stitcher类中实现的拼接模块流程。使用该类&#xff0c;可以配置/移除某些步骤&#xff0c;即根据特定需求调整拼接流程。流程中的所…

【开原宝藏】30天学会CSS - DAY1 第一课

下面提供一个由浅入深、按步骤拆解的示例教程&#xff0c;让你能从零开始&#xff0c;逐步理解并实现带有旋转及悬停动画的社交图标效果。为了更简单明了&#xff0c;以下示例仅创建四个图标&#xff08;Facebook、Twitter、Google、LinkedIn&#xff09;&#xff0c;并在每一步…

【pytest框架源码分析五】pytest插件的注册流程

前文介绍到pytest整体是运用插件来实现其运行流程的。这里仔细介绍下具体过程。 首先进入main方法 def main(args: list[str] | os.PathLike[str] | None None,plugins: Sequence[str | _PluggyPlugin] | None None, ) -> int | ExitCode:"""Perform an i…

谷歌or-tools开源库入门

1.命令行编译程序 这里要说明下&#xff0c;直接用qt或者VS2022打开cmake工程&#xff0c;编译没有成功。所以&#xff0c;老老实实的按照官方教程来&#xff0c;使用命令行编译。 &#xff08;1&#xff09;准备 1&#xff09;安装cmake&#xff0c;版本3.18以上&#xff0…

Python实现WYY音乐下载

一、需求背景 WYY音乐作为国内主流音乐平台,其歌曲资源丰富但下载接口存在多重加密保护。本文将通过Python结合JS逆向技术,解析其核心加密逻辑,实现免费歌曲的下载功能。 二、技术难点分析 1. 接口加密机制 通过抓包分析可知,网易云核心接口使用两次加密: 第一次:获取…

拥抱健康生活,开启养生之旅

在快节奏的现代生活中&#xff0c;健康养生愈发重要&#xff0c;它不仅能让我们保持良好状态&#xff0c;更是享受美好生活的基石。​ 饮食养生是健康的关键。我们应秉持均衡原则&#xff0c;一日三餐合理搭配。多摄入新鲜蔬果&#xff0c;它们富含维生素、矿物质与膳食纤维&a…

《Waf 火绒终端防护绕过实战:系统程序副本+Certutil木马下载技术详解》

目录 绕过火绒终端安全软件的详细方法 方法一&#xff1a;利用系统程序副本绕过命令监控 方法二&#xff1a;结合certutil.exe副本下载并执行上线木马 注意事项 总结 实际案例解决方案 前提条件 详细操作步骤 1. 攻击主机&#xff08;VPS&#xff09;上的准备工作 2.…

机器学习概要

文章目录 一、什么是机器学习 二、机器学习的种类 1. 有监督学习 2. 无监督学习 3.强化学习 三、机器学习的应用 四、机器学习的步骤 1. 数据的重要性 2. 数据和学习的种类 3. 可视化 一、什么是机器学习 机器学习指的是计算机根据给定的问题、课题或环境进行学习&a…

C# Winform 实现换肤,并自定义皮肤功能

具体实现原理详见 SkinHelp.cs类&#xff0c;实现了对原有控件的重绘&#xff0c;详见源码 public abstract class SkinHelp{private static SkinColor _currentSkinColor SkinColor.Default;private static BackgroundStripe _currentStripe BackgroundStripe.Default;priva…

基于FPGA的3U机箱模拟量高速采样板ADI板卡,应用于轨道交通/电力储能等

板卡简介&#xff1a; 本板为模拟量高速采样板&#xff08;ADI&#xff09;&#xff0c;主要用于电机转速和相电流检测&#xff0c;以实现电机闭环控制。 性能规格&#xff1a; 电源&#xff1a;DC5V&#xff0c;DC3.3V&#xff0c;DC15V&#xff0c;DC24V FPGA&#xff1a;…

python爬虫概述

0x00 python爬虫概述 以豆瓣的选电影模块为例&#xff0c;当查看源代码搜索猫猫的奇幻漂流瓶是搜不到的 这时服务器的工作方式应该是这样的 客户端浏览器第一次访问其实服务器端是返回的一个框架(html代码) 当客户端浏览器第二次通过脚本等方式进行访问时服务器端才返回的数据…

win10 如何用我的笔记本 接网线 远程控制 台式机

1.查看笔记本ip&#xff0c;台式机ip。确保在同一网段 可以ping通 1.1 ip在同一网段&#xff0c;但是ping不通 1.解决&#xff1a;把双方防火墙关闭 2.解决&#xff1a;当前网口&#xff0c;先禁用再启用 以上两台电脑就可以ping通了 2.设置双方电脑 启动远程控制 此电脑-》…

给管理商场消防安全搭建消防安全培训小程序全过程

一、需求沟通 “我是管理商场消防安全的嘛&#xff0c;做这个的作用呢&#xff0c;1是商场的所有商户员工可以看平面或者视频随时自学&#xff0c; 2是我们定期培训必修课程、考试&#xff0c;这个需要留存他们的手签字的签到表确认我们讲给他们听了&#xff08;免责很重要&am…

可视化图解算法:链表中倒数(最后)k个结点

1. 题目 描述 输入一个长度为 n 的链表&#xff0c;设链表中的元素的值为ai &#xff0c;返回该链表中倒数第k个节点。 如果该链表长度小于k&#xff0c;请返回一个长度为 0 的链表。 数据范围&#xff1a;0≤n≤105&#xff0c;0 ≤ai≤109&#xff0c;0 ≤k≤109 要求&am…

Quartz知识点总结

简单说明 简单的定时任务使用Timer或者ScheduledExecutorService quartz支持复杂的定时执行功能。支持ram存储&#xff08;内存存储&#xff09;和持久化存储。quartz有分布式和集群能力 简单使用 获取任务调度器Schedule。任务调度器可以管理任务。创建任务实例。使用JobB…

C语言每日一练——day_12(最后一天)

引言 针对初学者&#xff0c;每日练习几个题&#xff0c;快速上手C语言。第十二天。&#xff08;最后一天&#xff0c;完结散花啦&#xff09; 采用在线OJ的形式 什么是在线OJ&#xff1f; 在线判题系统&#xff08;英语&#xff1a;Online Judge&#xff0c;缩写OJ&#xff0…

【宇宙回响】从Canvas到MySQL:飞机大战的全栈交响曲【附演示视频与源码】

&#x1f31f; 这是星际大战系列的第三篇送福利文章&#xff0c;感谢一路以来支持和关注这个项目的每一位朋友&#xff01; &#x1f4a1; 文章力求严谨&#xff0c;但难免有疏漏之处&#xff0c;欢迎各位朋友指出&#xff0c;让我们一起在交流中进步。 &#x1f381; 项目代码…

数据结构知识点1

目录 一、时间复杂度和空间复杂度 1.1时间复杂度&#xff1a; 1.2空间复杂度&#xff1a; 二、装箱和拆箱 三、泛型 3.1泛型类的使用&#xff1a; 3.2泛型的上界&#xff1a; 3.3泛型方法&#xff1a; 一、时间复杂度和空间复杂度 1.1时间复杂度&#xff1a; 时间复杂…