首页 > 其他分享 >前端 Vue 应该知道的一些东西,个人笔记 2021-11-26

前端 Vue 应该知道的一些东西,个人笔记 2021-11-26

时间:2023-08-07 10:12:55浏览次数:37  
标签:11 26 Vue const name default res 组件 data

前端代码编写规范及es6常用语法

  1. 命名规范
文件夹名称,文件名称,组件名称,统一使用大驼峰或者 小横线方式命名;
组件文件名: list-item.vue.或者ListItem.vue;
基础的无状态的通用组件加V Base App前缀 
BaseButton  AppButton 在html中 <base-button> 或者 <BaseButton>
url路径名:小横线方式命名如:https://www.antdv.com/docs/vue/introduce-cn/
  1. data数据写法注意,小驼峰命名,用函数返回对象,如果直接用对象会导致复用时,公同一个data数据,引起所以组件的改变;实例:
data() {
    return{ }
}
  1. 组件prop使用,定义要详细,前两种少用,推荐第三种用法
props: [ 'dataSource'];
props: {
	dataSource: Array
}
props: {
	dataSource: {
		type: Array,
		required: true,
		default:()=>[]
	},
	collected: {
		type: Boolean,
		default: ()=> false
	}
}
  1. 使用v-for循环渲染元素时,必须要有key,且key值唯一;v-for和v-if不要同时用在同一个元素内(v-for比v-if有更高的优先级)
<div v-if="show">
	<div
		v-for="item in arr" 
		:key="item.id"
	>
	</div>
</div>
  1. 元素有多个 attribute 应该分多行撰写,每个 attribute 单独一行;例如
<!--表单区域-->
<a-drawer
	title="操作"
	:width="650"
	:visible="visible"
	:body-style="{ paddingBottom:'80px'}"
	destroyonClose
	@close="onClose"
>
	<jzsb-form
		:zd-list="zdList"
		:detail="detail"
		:spsb="spsb"
		:zfdz="zfdz"
		:groups="groups"
		@handleEnter="handleEnter"
		@handleEnterZfdz="handleEnterZfdz"
		@handleAddZfdz="handleAddZfdz"
		@onClose="onClose"
	/>
</a-drawer>
  1. 指令缩写
指令缩写
: => v-bihd: (.sync修饰符)
@ => v-on: ( .stop .prevent 修饰符)
# => v-slot:

vue路由机制(动态路由,静态路由)

前端组件的编写及使用

  1. vue组件基本构成
<template>
	<div>
		<div>内容</div>
	</div>
</template>
<script>
export default {
	name: 'TestDemo ' ,
	components : {
	},
	mixin: [],
	props: {
		propName: {
			type: Number,
			default:()=> 0
		}
	},
	data() {
		return {}
	},
	computed: {
	},
	watch: {
		data (newValue, oldvalue) {
		}
	},
	created: {
	},
	mounted: {
	},
	methods: {
	}
}
</script>
<style scoped>

</style>
  1. template中html,动态给class和stype赋值;
<template>
	<div>
		<div
			:class="{'active': showClass}"
			:style="styleData"
		>内容</div>
	</div>
</template>
<script>
export default {
	name: 'TestDemo' ,
	components : {
	},
	mixin: [],
	props: {
		propName: {
			type: Number,
			default:()=> 0
		}
	},
	data() {
		return {
			showClass: true,
			styleData:{
				height: '100px'
			}
		}
	},
	computed: {
	},
	watch: {
		data (newValue, oldvalue) {
		}
	},
	created: {
	},
	mounted: {
	},
	methods: {
	}
}
</script>
<style scoped>

</style>
  1. slot插槽用法和具名
<!--子组件-->
<template>
<div>
	<slot></slot>
</div>
</template>
<script>
export default {
	name: 'TestDemo'
}
</script>

<!--父组件-->
<template>
    <div>
        <text-demo>
            <div>123456</div>
        </text-demo>
    </div>
</template>

<!--子组件-->
<template>
<div>
	<slot name="name"></slot>
	<slot name="sex"></slot>
</div>
</template>
<!--父组件-->
<template>
    <div>
        <text-demo>
            <div slot="name">张三</div>
            <div slot="sex">男</div>
        </text-demo>
    </div>
</template>
  1. ref的使用
<template>
	<div>
		<test-demo ref="test"></test-demo>
	</div>
</template>
<script>
export default {
	name: '父组件' ,
	created {
		// 调用test-demo的组件中loadDate(), 
		this.$refs = loadData();
	},
	mounted {
	},
	methods: {
	}
}
</script>
  1. style中scoped含义 /deep/ .class 的含义和用法,把 /deep/ 换成 >>> 也可以达到同样的效果
<style scoped lang="less">
.list {
    position: relative;
    width: 100%;
    min-height: calc( 100vh - 80px);
    background: #FFFFFF;
    margin-left: 10px;
    padding-right: 10px;
}
/deep/ .ant-card-body {
	padding: 12px 12px 12px 0;
	text-align: right;
}
</style>

es6常用语法

  1. 使用let 和 const 代替var来声明变量和常量;
  2. 变量的结构赋值和扩展运算符 (…)
let [a, b, c] = [1,2,3](变量位置相同)
let {a, b, c} = (b: '1', c: '2', a: '3'} (变量和属性名相同)

let {a, a: (b}} = {a: {b: '123'}}
a => {(b: '123'}
b => '123'

用扩展运算符赋值
const obj = {fb: '1', c: '2', a: '3'}
const temp = {...obj, d: '4'};
temp => {(b: '1', c: '2', a: '3',d: '4'}

模板字符串
const name = 'LC' ;
const str = "我的名字叫:" + name; => `我的名字叫: ${name} ;

函数的扩展
参数可赋初始值
function fun(x = 1, y){}

箭头函数:(res) =>{} --》 function(res){}
(res)=>(res + 1) --》  function(res) { return: res + 1}
箭头函数不会改变this的指向


循环遍历函数
arr.map(item =>())有返回值
arr.forEach(item => {
})

对象的扩展
object.is(a,b) 比较两个值是否相等类似 ===
Object.assign({}, {a: '1'},{b: '1'})合并对象

Promise对象,异步编程

// 常用场景,同时发起多个异步请求,监测所有请求都完毕;
const p1 = new Promise((resole, reject => {
// ...async code
}));
const p2 = new Promise((resole, reject =>{
// ...async code
}));
const p3 = new Promise((resole, reject => {
// ...async code
}));
Promise.a11([p1,p2,p3]).then(res).catch(err)

Js中可能导致内存泄露的地方

::: tip 关于js内存管理机制
像C语言这样的底层语言一般都有底层的内存管理接口,比如 malloc()和free()。相反,JavaScript是在创建变量(对象,字符串等)时自动进行了分配内存,并且在不使用它们时“自动”释放。 释放的过程称为垃圾回收。
:::

  1. 意外的全局变量;局部变量在不用的时候会自动回收,而全局变量会一直占用内存;当有未定义的变量时,因为JavaScript 处理未定义变量的方式比较宽松:未定义的变量会在全局对象创建一个新变量。在浏览器中,全局对象是 window ;如
function foo(arg) {
	bar = 'this is a hidden global variable';
}
// 真相是:
function foo(arg) {
 window.bar = 'this is an explicit global variable';
}
  1. 计时器,在不需要时要手动停止;如:
// 创建计时器
activated () {
	console.log('activated');
	timer = setInterval(()=>{
		this.loadData();
	}, 30000);
},
// 消除计时器
deactivated() {
	console.log('deactivated');
	clearInterval(timer);
}
  1. 脱离DOM的引用;当把创建DOM存到对象或者数组中时,此时DOM的引用存在两个地方,一个是DOM树,一个是对象或者数组中;如:
    图片5
  2. 添加事件监听(addEventListener()),当页面销毁或不需要时一定要手动移除事件的监听(removeEventListener());如:
    图片3
    图片4
  3. 转换url的createObjectURL(data)方法,url用完后要手动调用revokeObjectURL(url),否则会导致data占用的内存不能释放;如:
    图片2

标签:11,26,Vue,const,name,default,res,组件,data
From: https://www.cnblogs.com/htmsmile/p/17610720.html

相关文章

  • 题解 P8085 [COCI2011-2012#4] KRIPTOGRAM
    题目链接题目问的是相对位置是否一样,即若\(s\)的第\(1,2,3\)个字符串相等,\(t\)的第\(1,2,3\)个字符串也相等,则\(s=t\)。由于\(t\)的长度是固定的,所以我们使用哈希进行快速匹配。那么如何设计哈希函数则成为本题的难点。由于问相对位置,那么可以记\(val[i]\)表示......
  • 【Vue笔记链接总结】
    【Vue笔记链接总结】【一】前端发展史【1.0】前端的发展史-Chimengmeng-博客园(cnblogs.com)【二】Vue之介绍及引入【2.0】Vue之引入-Chimengmeng-博客园(cnblogs.com)【三】Vue之基础语法【3.0】Vue之语法-Chimengmeng-博客园(cnblogs.com)【四】Vue......
  • P3520 [POI2011] SMI-Garbage
    \(P3520\)\([POI2011]\)\(SMI-Garbage\)题目描述有一个可以看成无向图的城市,上面有\(n\)个点和\(m\)条边。每一天,有若干辆垃圾车按照环形来跑一圈。并且,对于一辆垃圾车,除了起点以外不能跑两次。一条路有\(2\)种状态:清洁的(用0表示)或不清洁的(用1表示)。每次垃圾车经......
  • 玩一玩通义千问Qwen开源版,Win11 RTX3060本地安装记录!
    大概在两天前,阿里做了一件大事儿。   就是开源了一个低配版的通义千问模型--通义千问-7B-Chat。这应该是国内第一个大厂开源的大语言模型吧。虽然是低配版,但是在各类测试里面都非常能打。官方介绍:Qwen-7B是基于Transformer的大语言模型,在超大......
  • vue-router addRoute将子路由添加到指定路由下
    router.addRoute()可以向vue路由中动态的添加路由信息,但,路由存在多层级关系,例如,最开始的路由是这样的:{path:'/',name:'layout',component:resolve=>require(['../layout'],resolve),meta:{title:'',handleStatus:......
  • 【8.0】Vue之ref属性
    【ref属性】ref属性,vue提供的,写在标签上可以写在普通标签:在vue中使用this.$refs.名字拿到dom对象,可以原生操作可以写在组件上:在vue中使用this.$refs.名字拿到[组件]对象,组件属性,方法直接使用即可【详解】ref属性是Vue.js中提供的一种特殊属性,它可以用于在标签上......
  • 【9.0】Vue之项目规范
    【一】vue-cli创建项目【1】引入单页面应用(SPA)单页面应用(SinglePageApplication,简称SPA)是一种Web应用程序的架构方式。传统的多页面应用中,每次导航到新页面都会进行整个页面的重新加载。而SPA只有一个主页面(通常是index.html),页面的内容通过动态渲染来更新,不会重新加载整......
  • 【七】Vue之Vue-cli
    【一】Vue-CLI项目搭建【二】Vue-CLI项目搭建参考步骤Vue-CLI(VueCommandLineInterface)是Vue.js官方提供的一个基于命令行的快速搭建Vue项目的工具。它为我们创建一个Vue项目提供了简单易用的脚手架。【1】安装Node.js:首先需要安装Node.js,因为Vue-CLI是基于Node.js运......
  • 【十】Vue之高级
    【一】ref属性【1】详解被用来给元素或子组件注册引用信息(id的替代者)应用在html标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象(vc)在Vue中,$refs是一个特殊的属性,用于给元素或子组件注册引用信息。它允许我们在模板或组件中通过引用名称来访问对应的DOM元素或......
  • 【十一】Vue之Vue3
    【一】Vue3的变化【1】性能的提升打包大小减少41%初次渲染快55%,更新渲染快133%内存减少54%【2】源码的升级使用Proxy代替defineProperty实现响应式重写虚拟DOM的实现和Tree-Shaking【3】拥抱TypeScriptVue3可以更好的支持TypeScript【4】新的特性Composition......