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

Vue基础(3)

过滤器

定义

对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理)


语法

  1. 注册:Vue.filter(name,callback) 或 new Vue{filters:{}}
  2. 使用:{{ xxx | 过滤器名}}  或  v-bind:属性 = "xxx | 过滤器名"


备注

  • 过滤器也可以接收额外参数、多个过滤器也可以串联
  • 并没有改变原本的数据, 是产生新的对应的数据
示例

这里提前引入了BootCDN下载的day.js。

<div id="root">
			<h2>显示格式化后的时间</h2>
			<!-- 计算属性实现 -->
			<h3>现在是:{{fmtTime}}</h3>
			<!-- methods实现 -->
			<h3>现在是:{{getFmtTime()}}</h3>
			<!-- 过滤器实现 -->
			<h3>现在是:{{time | timeFormater}}</h3>
			<!-- 过滤器实现(传参) -->
			<h3>现在是:{{time | timeFormater('YYYY_MM_DD') | mySlice}}</h3>
			<h3 :x="msg | mySlice">尚硅谷</h3>
		</div>

		<div id="root2">
			<h2>{{msg | mySlice}}</h2>
		</div>

	<script type="text/javascript">
		Vue.config.productionTip = false
		//全局过滤器
		Vue.filter('mySlice',function(value){
			return value.slice(0,4)
		})
		
		new Vue({
			el:'#root',
			data:{
				time:1621561377603, //时间戳
				msg:'你好,尚硅谷'
			},
			computed: {
				fmtTime(){
					return dayjs(this.time).format('YYYY年MM月DD日 HH:mm:ss')
				}
			},
			methods: {
				getFmtTime(){
					return dayjs(this.time).format('YYYY年MM月DD日 HH:mm:ss')
				}
			},
			//局部过滤器
			filters:{
				timeFormater(value,str='YYYY年MM月DD日 HH:mm:ss'){
					// console.log('@',value)
					return dayjs(value).format(str)
				}
			}
		})

		new Vue({
			el:'#root2',
			data:{
				msg:'hello,atguigu!'
			}
		})
	</script>

效果: 

内置指令

v-text 

作用

向其所在的节点中渲染文本内容。


与插值语法的区别

v-text会替换掉节点中的内容,{{xx}}则不会。

示例
		<div id="root">
			<div>你好,{{name}}</div>
			<div v-text="name"></div>
			<div v-text="str"></div>
		</div>

	<script type="text/javascript">
		Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。
		
		new Vue({
			el:'#root',
			data:{
				name:'尚硅谷',
				str:'<h3>你好啊!</h3>'
			}
		})
	</script>

效果

可以看到v-text是不能识别html结构的,会将内容原样搬到页面上

v-html

作用

向指定节点中渲染包含html结构的内容。


与插值语法的区别
  • v-text会替换掉节点中的内容,{{xx}}则不会。
  • v-html可以识别html结构。
使用v-html要注意安全性问题

  • 在网站上动态渲染任意HTML是非常危险的,容易导致XSS攻击。
  • 一定要在可信的内容上使用v-html,永不要用在用户提交的内容上
实例 
		<div id="root">
			<div>你好,{{name}}</div>
			<div v-html="str"></div>
		</div>

	<script type="text/javascript">
		Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。

		new Vue({
			el:'#root',
			data:{
				name:'尚硅谷',
				str:'<h3>你好啊!</h3>',
			}
		})
	</script>

效果

v-cloak(没有值)


本质是一个特殊属性,Vue实例创建完毕并接管容器后,会删掉v-cloak

使用css配合v-cloak可以解决网速慢时页面展示出{{xxx}}的问题。

<style>
			[v-cloak]{
				display:none;
			}
		</style>
		<!-- 引入Vue -->
	</head>
	<body>
		<div id="root">
			<h2 v-cloak>{{name}}</h2>
		</div>
		<script type="text/javascript" src="xxxxxx"></script>
	</body>
	
	<script type="text/javascript">
		console.log(1)
		Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。
		
		new Vue({
			el:'#root',
			data:{
				name:'尚硅谷'
			}
		})
	</script>

        如果中间引入了一个其他资源,因为网速或者服务器问题一直没有被返回,导致后面的vue一直被卡着,没有被解析,html中就会出现{{xxx}},这时使用v-cloak配合css,可以暂时将起隐藏,vue实例创建完毕后会自动去除该属性。

v-once

  • v-once所在节点在初次动态渲染后,就视为静态内容了。
  • 以后数据的改变不会引起v-once所在结构的更新,可以用于优化性能。 
实例
		<div id="root">
			<h2 v-once>初始化的n值是:{{n}}</h2>
			<h2>当前的n值是:{{n}}</h2>
			<button @click="n++">点我n+1</button>
		</div>

	<script type="text/javascript">
		Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。
		
		new Vue({
			el:'#root',
			data:{
				n:1
			}
		})
	</script>

 后续只有第二个h2会变化,第一个h2将始终显示初始值

v-pre

        跳过其所在节点的编译过程,可利用它跳过没有使用指令语法、没有使用插值语法的节点,会加快编译

<div id="root">
			<h2 v-pre>Vue其实很简单</h2>
			<h2 >当前的n值是:{{n}}</h2>
			<button @click="n++">点我n+1</button>
		</div>

	<script type="text/javascript">
		Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。

		new Vue({
			el:'#root',
			data:{
				n:1
			}
		})
	</script>


http://www.kler.cn/a/353553.html

相关文章:

  • kubernetes第七天
  • 2025新年源码免费送
  • 算法(二)——一维差分、等差数列差分
  • 在Windows环境下搭建无人机模拟器
  • js代理模式
  • kubeneters-循序渐进Cilium网络(二)
  • 区块链积分系统:重塑支付安全与商业创新的未来
  • Java知识巩固(五)
  • visio导出pdf公式变形问题杂谈
  • 如何在 cPanel 中使用 PHP-FPM
  • 推荐一个可以免费上传PDF产品图册的网站
  • 【鸟类识别系统】Python+卷积神经网络算法+人工智能+深度学习+ResNet50算法+计算机课设项目
  • 缓存区是什么
  • Vue3 使用CryptoJS加密
  • 介绍 TensorFlow 的基本概念和使用场景(AI)
  • 关于拖拽时需要注意的细节
  • 多层感知机 MLP
  • 【优选算法篇】编织算法的流动诗篇:滑动窗口的轻盈之美
  • Golang | Leetcode Golang题解之第477题汉明距离总和
  • mqtt客户端订阅一直重复连接?
  • 详解SSH和bash
  • 【Linux】嵌入式Linux系统的组成、u-boot编译
  • 灵当CRM data/pdf.php 任意文件读取漏洞复现
  • 计算机网络(五)—— 运输层
  • Springboot +Mybatis项目用log4j2打印SQL语句
  • 推动AI技术研发与应用,景联文科技提供专业高效图像采集服务