不是吧,阿sir,还有人不会制作影院订票系统前端页面吗?(拿来就用)

news2025/1/20 21:49:27

影院订票系统前端页面

  • 🎉案例分析
  • 🎉详细设计
    • ✨座位数据与样式定义
    • ✨座位的事件处理及相关的代码
    • ✨监听与数据格式化
    • ✨电影信息展示
  • 🎉动态操作演示图
  • 🎉源码(附图片素材)

引言:
  大家好,欢迎来到我的博客。五一假期就快到了,你们准备怎么安排假期活动呢?要不去看一场电影来缓解一下枯燥的学习生活?😝说起电影,就离不开中国内地电影票房冠军《长津湖》。那么今天,我们就来制作一个影院订票系统前端页面,如有错误之处,欢迎大家指正。😊

在这里插入图片描述

🎉案例分析

在这里插入图片描述

  影院订票系统是电影院进行电影票销售非常重要的一个环节,直接影响到用户的操作是否方便、界面是否直观。该系统包括用户注册、影片信息管理、订票信息管理、站内新闻管理等模块。本节仅对其中的订票前端页面进行阐述,目的是让读者能对本书前期学习的知识进行综合运用,本节完成的前端页面如图1所示,可点击效果动图查看完成效果。

在这里插入图片描述

图1 效果图

  该页面要求用图形方式进行座位的选择,也就是能够单击图1左边的可选座位来选中想购买的座位,单击可选座位之后,该座位会变成已选座位状态;单击已选座位后,该座位会重新回到可选座位状态;图中灰色的座位表示已是售出座位的状态。
  另外,选中或取消某一个座位之后,在图1的右边会自动显示出已选座位是“几排几号”,并能根据用户所选择的电影票张数,自动计算出本次购票的总价,同时还能限制用户最多一次只能购买五张电影票,当票数达到上限时,动态提示用户,此时不能再选择新的可选座位,但可以取消已选座位。
  由图1可以看出该页面分为左右两个部分,采用Bootstrap栅格布局实现,即左右各占12等份的一半,其中左半部分又分成两行(座位行和座位提示行),右半部分也分成两行(电影信息行和影票购买信息行),其实现代码如下所示:
在这里插入图片描述

<div  class="container" id="app">
    <div  class="row">
        <div  class="col-md-6">
             <div  class="row">
                <!--左上半部分:座位行-->
             </div>
             <div class="row">
                 <!--左下半部分:座位提示行-->
             </div>
    </div>
    <div class="col-md-6  sceenRight">
        <div class="row">
            <!--右上半部分:电影信息行-->
        </div>
        <div class="row">
             <!--右下半部分:影票购买信息行-->
        </div>
    </div>
  </div>
</div>

🎉详细设计

✨座位数据与样式定义

  座位数据是通过在<li></li>标记中使用背景图片,背景图片有四种座位样式:无座位(空白)、可选座位(白色)、选中座位(红色)、售出座位(灰色),在数组中定义的数值如下:

-1:无座位0:可选座位1:选中座位2:售出座位

  例如,在Vue.js中定义一个11行10列的座位,每个座位用一个数字来表示,数字含义如上所示,定义的数组语句如下所示(其在浏览器中对应如图1左上半部分的座位图):
在这里插入图片描述

seatflag:[
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 2, 2, 0, 0, 0, 0,
		0, 0, 0, 2, 2, 0, 2, 2, 0, 0,
		-1, 0, 0, 0, 0, 0, 0, 0, 0, -1,
		-1, -1, 0, 0, 0, 0, 0, 0, -1, -1,
	]

  从定义的seatfage数组可以看出这是一维数组,让其变成能够显示行列的二维数组的方法是:定义一行有多少座位的数据seatCol,用户单击某一个座位后,在程序中可以得到该座位在数组中的序号,该序号整除seatCol得到的商就是行号,对seatCol取余数就是相对应的列号。
在CSS中对座位<li>元素的样式定义是通过四个座位的背景图(如图2所示)完成,通过上下移动该背景图使用户在<li>元素的窗口中看到不同的座位样式,其样式定义如下所示:

在这里插入图片描述

图2 订票系统座位背景图
.seat{
			float: left;
			width: 30px;
			height: 30px;
			background-color: bisque;
			margin: 5px 10px;
			cursor: pointer;
			list-style: none;
		}
.seatActive{
			background: url(img/bg.png) 1px 0px;
		}
.seatSpace{
			background: url(img/bg.png) 1px -29px;
		}
.seatNoUse{
			background: url(img/bg.png) 1px -56px;
		}
.noSeat{
			background: url(img/bg.png) 1px -84px;
		}

  使用Vue中的v-for命令对上面的数据动态生成多个座位的<li>元素。每个座位都有“seat”样式类,然后根据每个座位对应的数据来显示其对应的样式图片,当对应座位的数据是-1时,添加“noSeat”样式类,即没有该座位;当对应座位数据是0时,添加“seatSpace”样式类,即该座位是可选座位;当对应座位数据是1时,添加“ seatActive ”样式类,即该座位是已选座位;当对应座位数据是2时,添加“seatNoUse”样式类,即该座位是售出座位。HTML中的语句如下所示:

<li class="seat seatSpace" v-for="(item,index) in seatflag"
							:key="index" 
		   :class="{'noSeat':seatflag[index]==-1,
							'seatActive':seatflag[index]==1,
							'seatSpace':seatflag[index]==0,
							'seatNoUse':seatflag[index]==2,
							}",
							@click="handleClick(index)"
							></li>

  行和列是由单击座位对应序号和数据seatCol来确定的,但在浏览器中的显示是由<li>的父级元素来确定的,也就是<ul>元素的宽度,这些数据以后都可以通过后台服务器动态获取。该<ul>元素的样式定义如下所示:

 #app ul{
		list-style: none;/*去除列表样式*/
		width: 550px;/*设定宽度,目的是一行显示多少座位,其他座位另起新行*/
  }

✨座位的事件处理及相关的代码

  用户单击某个座位后,会执行相应座位的单击事件处理函数handleClick(index),处理函数的入口参数index是用户单击某个座位在一维数组seatflag中的位置值,利用Vue中的数据绑定,当用户修改了数组seatflag的数据值,会自动刷新相对应的座位图片。该函数的实现方式如下所示:

handleClick:function(index){
					if (vm.seatflag[index]==1){
						vm.$set(vm.seatflag,index,0);
						//console.log(this.curSeat.findIndex(item=>item.id===index));
						this.curSeat.splice(this.curSeat.findIndex(item=>item===index),1);
					}
					else
					if (vm.seatflag[index]==0 && this.count<5){
						vm.$set(vm.seatflag,index,1);
						this.curSeat.push(index);
					}
					//设置当前选中的座位
					this.curSeatDisp=[];
					for(let item of this.curSeat){
						this.curSeatDisp.push((Math.floor(item/this.seatCol)+1)+"行"+(item%this.seatCol+1)+"列");
					}
					//计数已经选择了多少个座位
					var mySeat=vm.seatflag.filter(item=>{//item为数组当前的元素
						return item==1;
					})
					this.count=mySeat.length;
					//判断达到购买上限,设置数据maxFlag,并显示提示语句,并显示提示语句“您一次最多仅能买五张票”
					if (this.count>=5)this.maxFlag=true;
					else this.maxFlag=false;
				}

  说明如下:

  (1)显示已选座位“几排几列”是根据 curSeatDisp 数组确定,在HTML中通过v-for指令实现,其代码如下所示:

 <p id="seatSelect">
    座位:
    <span v-for="(item,index) in curSeatDisp" :key="index">
    {{item}}
    </span>
 </p>

  (2)显示已选择多少个座位是根据count数据确定,在HTML中的实现代码如下所示:

<p>已选择
      <strong style="color: red;">{{count}}</strong>个座位,
 </p>

  (3)判断达到购买票数上限后,是否显示“您一次最多仅能买五张票”的提示语句,通过数据maxFlag的值确定。在HTML中的语句如下所示:

<strong style="color: red;">再次单击座位可取消。
		<span v-if="maxFlag">您一次最多只能买五张票!</span>
</strong>

✨监听与数据格式化

  在Vue中通过监听count数据的变化,可以重新计算总价。在Vue实例中的语句如下所示:

computed:{
		totalPrice:function(){
		return this.count * this.filmInfo.unitPrice;
	}
},

  显示电影票单价和总价通过Vue的全局过滤器实现,让其保留两位小数点,并在金额前面加上人民币符号。在Vue实例中的语句如下所示:

Vue.filter('numberFormat',function(value){
			return '¥'+value.toFixed(2)
		})

  在HTML中使用过滤器是通过管道符实现的,其代码如下所示:

<p>单价:
       <strong>{{filmInfo.unitPrice|numberFormat}}</strong>
</p>
<p>总价:
      <strong style="color: red;">{{totalPrice|numberFormat}}</strong>
 </p>

✨电影信息展示

  图1的右上半部分是电影海报和电影的部分相关信息,这部分是通过调用Vue实例的filmInfo对象中的相关数据来显示信息。flmInfo对象在Vue的data中的定义如下:

fileInfo:{
			name:'长津湖',
			nameEnglish:'The Battle at Lake Changjin',
			copyRight:'中文2D',
			filmImg:'img/1.png',
			storyType:'历史、战争',
			place:'中国大陆',
			timeLength:'176 分钟',
			timeShow:'2021年9月30日',
			cinema:'万达影城',
			room:'1号影厅',
			time:'2021年9月30日  20:00',
			unitPrice:38,
				}

  此处HTML的实现方式是使用Bootstrap提供的媒体对象组件,代码如下所示:

:可在bootstrap官网直接映入媒体对象组件。操作方式:打开bootstrap官网(https://www.bootcss.com/),点击页面最中心Bootstrap3中文文档(v3.4.1),选择右侧列表中的“媒体对象”,复制代码即可。

<div class="row">
		            <!--右上半部分:电影信息行-->
					<div class="media">
					  <div class="media-left">
					    <a href="#">
					      <img class="media-object" :src="filmInfo.filmImg" alt="..."  height="200px">
					    </a>
					  </div>
					  <div class="media-body">
					    <h4 class="media-heading">中文名:<strong>{{filmInfo.name}}</strong></h4>
						<h4 class="media-heading">英文名:<strong>{{filmInfo.nameEnglish}}</strong></h4>
						<p>剧情:{{filmInfo.storyType}}</p>
						<p>版本:{{filmInfo.copyType}}</p>
						<p>{{filmInfo.place}}/{{filmInfo.timeLength}}</p>
						<p>{{filmInfo.timeShow}}</p>
					  </div>
					</div>
		        </div>

  这里在HTML中进行数据绑定时使用了两种方式,一种是双大括号的数据绑定方式,即“{{数据}}”;另一种是属性绑定方式,
即“:src='filmInfo.film Img”


🎉动态操作演示图

在这里插入图片描述

动态操作演示

  总结:本章主要讲解了影院订票系统前端页面的综合案例,重点是使用Vue. js的特性结合Bootstrap的排版功能实现,该案例要求具有较高的 JavaScript 程序的编程能力和对Vue. js进行网页行为的控制能力。通过这个案例的学习,读者不仅可以更进一步、更深刻地理解前面章节学过的所有知识,而且能够体会到最新前端框架Vue. js的数据渲染、事件触发响应、监听属性、计算属性、各种指令等在实际项目中的灵活应用,以及Bootstrap的简便布局排版能力。

🎉源码(附图片素材)

在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<link href="./css/bootstrap.min.css" rel="stylesheet">
		<script src="js/vue.min.js"> </script>
		<style>
		#app{
			margin: 50px auto;
		}
		#app ul{
			list-style: none;
			width: 550px;
		}
		#app ul #screen{
			text-align: center;
			letter-spacing: 30px;
		}
		.seat{
			float: left;
			width: 30px;
			height: 30px;
			background-color: bisque;
			margin: 5px 10px;
			cursor: pointer;
			list-style: none;
		}
		.seatActive{
			background: url(img/bg.png) 1px 0px;
		}
		.seatSpace{
			background: url(img/bg.png) 1px -29px;
		}
		.seatNoUse{
			background: url(img/bg.png) 1px -56px;
		}
		.noSeat{
			background: url(img/bg.png) 1px -84px;
		}
		.notice{
			float: left;
			height: 30px;
			line-height: 30px;
			margin-right: 70px;
		}
		</style>
	</head>
	<body>
		<div  class="container" id="app">
		    <div  class="row">
		        <div  class="col-md-6">
		             <div  class="row">
		                <!--左上半部分:座位行-->
						<ul>
							<li id="screen">
								<h1>屏幕</h1>
							</li>
							<hr>
							<!--<li class="seat seatActive"></li>-->
							<li class="seat seatSpace" v-for="(item,index) in seatflag"
							:key="index" :class="{'noSeat':seatflag[index]==-1,
							'seatActive':seatflag[index]==1,
							'seatSpace':seatflag[index]==0,
							'seatNoUse':seatflag[index]==2,
							}",@click="handleClick(index)"
							></li>
							<!--<li class="seat seatNoUse"></li>-->
							<!--<li class="seat noSeat" ></li>-->
						</ul>
		             </div>
		             <div class="row">
		                 <!--左下半部分:座位提示行-->
						 <hr>
						 <li class="seat seatActive"></li>
						 <span class="notice">已选座位</span>
						 <li class="seat seatSpace"></li>
						 <span class="notice">可选座位</span>
						 <li class="seat seatNoUse"></li>
						 <span class="notice">售出座位</span>
		             </div>
		    </div>
		    <div class="col-md-6  sceenRight">
		        <div class="row">
		            <!--右上半部分:电影信息行-->
					<div class="media">
					  <div class="media-left">
					    <a href="#">
					      <img class="media-object" :src="filmInfo.filmImg" alt="..."  height="200px">
					    </a>
					  </div>
					  <div class="media-body">
					    <h4 class="media-heading">中文名:<strong>{{filmInfo.name}}</strong></h4>
						<h4 class="media-heading">英文名:<strong>{{filmInfo.nameEnglish}}</strong></h4>
						<p>剧情:{{filmInfo.storyType}}</p>
						<p>版本:{{filmInfo.copyType}}</p>
						<p>{{filmInfo.place}}/{{filmInfo.timeLength}}</p>
						<p>{{filmInfo.timeShow}}</p>
					  </div>
					</div>
		        </div>
		        <div class="row">
		             <!--右下半部分:影票购买信息行-->
					 <p>影院:<strong>{{filmInfo.ciname}}</strong></p>
					 <p>影厅:<strong>{{filmInfo.room}}</strong></p>
					 <p>场次:<strong>{{filmInfo.time}}</strong></p>
					 <p id="seatSelect">座位:<span v-for="(item,index) in curSeatDisp" :key="index">{{item}}</span></p>
					 <p>已选择<strong style="color: red;">{{count}}</strong>个座位,<strong style="color: red;">再次单击座位可取消。
					 <span v-if="maxFlag">您一次最多只能买五张票!</span></strong></p>
					 <hr>
					 <p>单价:<strong>{{filmInfo.unitPrice|numberFormat}}</strong></p>
					 <p>总价:<strong style="color: red;">{{totalPrice|numberFormat}}</strong></p>
					 <hr>
					 <button type="button" class="btn btn-success" style="margin: 0 200px;"
					 @click="filmSubmit">确认信息,下单</button>
		        </div>
		    </div>
		  </div>
		</div>
		<script>
		Vue.filter('numberFormat',function(value){
			return '¥'+value.toFixed(2)
		})
		var vm=new  Vue({
			el:'#app',
			data:{
				curSeat:[],//选中座位数组
				curSeatDisp:[],//选中座位展示数组
				count:0,//当前已选中票的个数
				maxLength:5,//一次最多可购买的张数
				maxFlag:false,//是否允许再选择票数
				seatCol:10,//一行的座位列数,当前是10列
				seatflag:[
				     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
				     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
				     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
				     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
				     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
				     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
				     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
				     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
				     0, 0, 0, 0, 2, 2, 0, 0, 0, 0,
				     0, 0, 0, 2, 2, 0, 2, 2, 0, 0,
				     -1, 0, 0, 0, 0, 0, 0, 0, 0, -1,
				     -1, -1, 0, 0, 0, 0, 0, 0, -1, -1,
				],
				filmInfo:{
					name:'长津湖',
					nameEnglish:'The Battle at Lake Changjin',
					copyRight:'中文2D',
					filmImg:'img/1.png',
					storyType:'历史、战争',
					place:'中国大陆',
					timeLength:'176 分钟',
					timeShow:'2021年9月30日',
					cinema:'万达影城',
					room:'1号影厅',
					time:'2021年9月30日  20:00',
					unitPrice:38,
				}
			},
			computed:{
				totalPrice:function(){
					return this.count * this.filmInfo.unitPrice;
				}
			},
			methods:{
				handleClick:function(index){
					if (vm.seatflag[index]==1){
						vm.$set(vm.seatflag,index,0);
						//console.log(this.curSeat.findIndex(item=>item.id===index));
						this.curSeat.splice(this.curSeat.findIndex(item=>item===index),1);
					}
					else
					if (vm.seatflag[index]==0 && this.count<5){
						vm.$set(vm.seatflag,index,1);
						this.curSeat.push(index);
					}
					//设置当前选中的座位
					this.curSeatDisp=[];
					for(let item of this.curSeat){
						this.curSeatDisp.push((Math.floor(item/this.seatCol)+1)+"行"+(item%this.seatCol+1)+"列");
					}
					//计数已经选择了多少个座位
					var mySeat=vm.seatflag.filter(item=>{//item为数组当前的元素
						return item==1;
					})
					this.count=mySeat.length;
					//判断达到购买上限,设置数据maxFlag,并显示提示语句,并显示提示语句“您一次最多仅能买五张票”
					if (this.count>=5)this.maxFlag=true;
					else this.maxFlag=false;
				}
			}
		})
		</script>
	</body>
</html>

图片:

在这里插入图片描述

bg.png

谢谢大家,请多多支持!
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

npm和cnpm下载安装及VUE的创建

npm和cnpm下载安装及VUE的创建 1. node.js下载 node.js官网&#xff1a; http://nodejs.cn/download/ 下载安装后cmd输入以下命令查看版本 2. 配置npm 打开node.js的安装目录&#xff0c;我这里是D:\nodejs&#xff0c;在此目录下创建两个文件夹”node_global“和”node_ca…

【申请加入New Bing遇到的问题:当前无法使用此页面,cn.bing.com 重定向次数过多】

目录一.前言二.问题描述三.解决方案解决方案1:解决方案2:四.总结一.前言 前面的文章我们详细的讲解了如何加入New Bing&#xff0c;之前我们直接加入还可以直接访问&#xff0c;但是现在访问过多就会出现当前无法使用此页面&#xff0c;cn.bing.com 重定向次数过多的问题&…

eslint常见报错及解决

eslint常见报错问题1&#xff1a;Component name "index" should always be multi-word问题2&#xff1a;Newline required at end of file but not found问题3&#xff1a;Strings must use singlequote问题4&#xff1a;Expected indentation of 2 spaces but foun…

json-server|0编码实现REST API

欢迎来到我的博客 &#x1f4d4;博主是一名大学在读本科生&#xff0c;主要学习方向是前端。 &#x1f36d;目前已经更新了【Vue】、【React–从基础到实战】、【TypeScript】等等系列专栏 &#x1f6e0;目前正在学习的是&#x1f525;React框架React框架React框架&#x1f525…

uniapp中的renderjs使用

需求是用openlayers在uniapp框架下做一个移动gis类的软件&#xff0c;选择用renderjs实现地图与dom的交互&#xff0c;一开始也是小白&#xff0c;通过百度资料以及一步步测试后掌握了renderjs的使用&#xff0c;以及地图功能的实现。 一、renderjs的作用是什么&#xff1f; r…

初始vue3

如今新vue项目首选用vue3 typescript vite pinia……模式。在使用Vue2时&#xff0c;使用的是选项式api进行vue项目的开发&#xff0c;vue3在这里做了重大的更新&#xff0c;vue3使用组合式api进行对项目实例化和构建。另外需要注意vue项目需要nodeJS环境的支持&#xff0c;…

LaTex(1):使用在线表格生成器工具生成LaTex表格

目录 0 在线工具 1 常用命令&#xff1a; 1.0 编辑表格 1.1 Table—set size可以改变表格大小&#xff1a; 1.2 合并表格和拆分表格&#xff1a; 1.3 生成latex代码与复制代码&#xff1a; 2 示例 0 在线工具 表格生成器网页&#xff1a;Create LaTeX tables online –…

BootStrap基本使用

目录 BootStrap框架 BootStrap特点 bootstrap的使用 布局容器 固定宽度 完整宽度 栅格网格系统 前言 列的形式 列组合和列偏移 列排序 列嵌套 排版 标题 段落 强调 对齐效果 列表 去点列表 内联列表 定义列表 代码 表格 表单标签 文本框和文本域 单…

【web服务】nginx为什么这么受企业欢迎?看完这边文章你就懂了

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是小鹏linux&#xff0c;运维领域创作者&#xff0c;阿里云ACE认证高级工程师&#x1f61c; &#x1f4dd; 个人主页&#xff1a;小鹏linux&#x1f525; &#x1f389; 支持我&#xff1a;点赞…

【ES6丨前端进阶基础 】ES6的关键字,新特性以及解构赋值

&#x1f482; 个人主页&#xff1a;Aic山鱼 个人社区&#xff1a;山鱼社区 &#x1f4ac; 如果文章对你有所帮助请点个&#x1f44d;吧!欢迎关注、点赞、收藏(一键三连)和订阅专目录 前言 什么是ecmascrpit 一&#xff0c;let关键字的特点 1.不能重复声明变量 2.块级作用…

Http协议之Content-Type理解

Content-Type&#xff0c;翻译过来就是”内容类型“&#xff0c;在互联网中就是”互联网媒体类型“。 在互联网中&#xff0c;两台计算机经常会传输数据&#xff0c;客户端会给服务器发数据&#xff0c;服务器也会给客户端发数据。数据的类型也是有很多种的&#xff0c;我们把所…

【微信小程序系列:四】前端利用wx.setStorageSync缓存设置有效时间

先言&#xff1a; 简单来说&#xff0c;就是利用缓存&#xff0c;进行有效期的保存&#xff0c;以此前端加以判断&#xff0c;在如登录状态过期&#xff0c;操作过期等场景使用&#xff0c;扩展性还蛮多的。 官方文档 实现&#xff1a; 原理&#xff1a;就是先设置一个缓存&…

项目实战 之 vue3 + vite + pinia

目录 一、创建项目 1. 安装vite 2. 创建项目 3. 安装过程 二、项目基本配置 1. 项目icon 2. 项目标题 3. 配置 jsconfig.json 4. 设置 .prettierrc 文件 5. 生成代码片段 01 - 网址 02 - 生成 03 - 配置 04 - 使用 三、项目目录 结构划分 1. assets 2. compo…

require.context()的用法详解

require.context&#xff08;&#xff09;的用法详解&#x1f334;require.context()的介绍&#x1f33a;用法一&#xff1a;在组件内引入多个组件&#x1f33c;用法二&#xff1a;在main.js中引入大量公共组件&#x1f342;用法三&#xff1a;使用插件注册全局组件&#x1f33…

axios+vue 请求时如何携带cookie

axiosvue 请求时如何携带cookie 1&#xff0c;当符合同源策略时&#xff0c;可以直接设置 document.cookie " 你要设置的内容 " mounted() {document.cookie "ioiopipoadiasdasdbasdbas"; // 非跨域传递cookie 直接设置cookie即可this.getData(); /…

Node.js安装,npm安装yarn步骤

第一步&#xff0c;首先安装npm npm是node.js下的包管理器&#xff0c;node.js的下载网址 Node.js 1.下载安装包后一路无脑点击next最后点击finish即可&#xff0c;安装完成之后打开文件夹就是以下目录。 2.在cmd窗口输入node -v、npm -v查看版本检查是否安装成功 一般完成以…

总结JS中常用的数组的方法大全

总结JS中常用的数组方法 JS中常用的数组方法总结 数组(Array)是一种复杂的数据类型&#xff0c;它属于Object(对象)类型&#xff0c;用来将一组数组合在一起&#xff0c;通过一个变量就可以访问一组数据。在使用数组时&#xff0c;经常会搭配循环语句使用&#xff0c;从而很方便…

Vue3+TS+Vite+Element Plus搭建后台管理系统

Vue3TSViteElement Plus搭建后台管理系统1、简介2、效果图3、技术栈4、项目目录5、setting.js(全局配置文件)6、路由router7、状态管理stores8、下载地址总结1、简介 该示例是vue3、typescript、vite、element plus搭建前端管理框架&#xff0c;主要模块分为&#xff1a;菜单、…

用 vite 构建 vue3 + TS 项目实战

目录 1、项目初始化 2、eslint 基础配置 3、配置 git commit hook 4、在开发和构建中进行代码规范校验 5、GitCommit规范 6、 Vite中的TS环境说明 7、Vue3 中 Ts 支持 8、Vue3中的script-setup语法 9、script-setup中的编译宏 10、配置转换JSX和TSX 11、初始化…

vue2计算属性computed

1.什么是计算属性 概念&#xff1a; 1.计算属性是vue的一个特性&#xff0c;此属性有计算能力&#xff0c;也就相当于一个函数。可以将计算结果缓存&#xff0c;作为一个属性使用。 特点&#xff1a; 1.要在 methods: { } 或者 computed&#xff1a; { } 中 &#xff0c;以方…