前端性能优化
let obj1 = { name: '雷佳音', fn: function() { console.log(arguments) console.log(this.name + '大英雄') } } let obj2 = { name: '飞哥' } Function.prototype.call_ = function(obj,...ar
给定一个字符串const str = 'dfdfdf2323利用 new Set() Array.from() join()const res = Array.from(new Set(str)).join('')//利用new Set() 只能存储唯一值的特性 再将集合转数组转字符串
被降维的数组const arr = [1,2,3,[,5,6]]最简单的方法 flatarr.flat() //depth深度参数 默认为1 非必填reduce + concatarr.reduce( (prev,cur) => prev.concat(cur) ) // 合并上一次结果和当前项
let arr = [32,43,4,34,3,3] let newArr = arr.filter((v,i)=>arr.indexOf(v) === i) //过滤条件: 当前项在原数组首次索引 === 当前项索引 console.log(newArr)
第一种:typeof function isPlainObject(val){ return val !== null && !Array.isArray(val) && typeof val === 'object';}第二种:instanceof function getDataType(o){ if(o instanceof Arra
element-plus 1.0.2-beta.59(包括59)之后 第一步: 第二步:
varhyphenateRE=/\B([A-Z])/g;varhyphenate=function(str){returnstr.replace(hyphenateRE,'-$1').toLowerCase()}console.log(hyphenate("aaaaDssssFcccc"));//aaaa-dssss-fcccc//"-$1":捕获到什么字符$1就引用什么字符,
jquery最核心的就是$,他是一个函数,发返回一个jquery对象,她是一个类在这个类的原型上有很多jquery自定义的方法,每次调用$返回一个新的jq对象,同时在jquery类中根据传入参数的·类型(判断参数是函数或者字符串),把选中的元素存在数组中,遍历这个数组,取出每个元素进行dom操作,链式操作是只需要在每个方法中returnthis,this就是在$函数中返回的jq对象,
1.实现一个数据监听器Observer,能够对数据对象的所有属性进行监听,如有变动可拿到最新值通知订阅者2.实现一个指令解析器Compile,对每个元素节点的指令进行扫描和解析,以及绑定相应的更新函数3.实现一个Watcher,作为连接Observer和Compile的桥梁,能够订阅并收到每个属性变动的通知,执行指令绑定的相应回调函数,从而更新视图4.mvvm入口,整合以上三者
1.保护:保护私有变量不受外界干扰2.保存:形成不销毁的栈内存,把一些值保存下来,方便后续调取使用
(.+)贪婪匹配(.+?)惰性匹配
保证组件活着keep-alive是vue内置的一个组件,可以使被包含的组件保留状态,避免重新渲染router-view也是一个组件,如果直接被包在keep-alive里面,所有路径匹配到的视图组件都会被缓存
to:即将要进入的目标的路由对象from:当前导航即将离开的路由对象next:调用该方法后,才能进入下一个钩子可以利用导航守卫,修改页面标题全局后卫前置守卫(guard)router.beforeEach((to,from,next)=>{//从from跳转到todocument.title=to.matched[0].meta.title})//后置钩子(hook)不需要主动调用next(
undefined和null的区别1.undefined代表定义未赋值2.null代表定义并赋值了,只是值为null什么时候给变量赋值为null呢初始赋值,表示将要赋值为null,结束赋值,表示要将对象成为垃圾对象(被垃圾回收器回收)
隐藏对象的属性和实现细节,将数据和方法都集中到对象里面,对外只暴露出一个接口。
通俗来说就是把实现的功能和属性放在同一个命名空间下
以身份证打个比方
@click="click"//单击@dblclick="dblclick"//双击@mousedown="down"//按下@mouseup="up"//抬起@mousemove="move"//移动@mouseleave="out"//指针移出元素范围外(不冒泡)。@mous
防止多个组件复用时,组件实例共享同一个data对象,写成函数形式,每次调用data函数的时候都会return一个新的对象,它们的内存地址都是不一样的,这样就不会相互影响了,每个组件都应该有属于自己的data,自己的状态
v-model结合select的使用<selectname=""v-model="cars"><optionvalue="宝马">五菱宏光</option><optionvalue="奔驰">奔驰</option><optionvalue="保时捷">保时捷</option><optionvalue="宝马"
这三个都是操作input输入框的值lazy修饰符(失去焦点或者回车时才同步数据)v-model默认是在input事件中同步输入框的数据的,也就是说,一旦有数据发生改变,对应的data中的数据就会自动发生改变,lazy修饰符可以让数据失去焦点或者回车时才会更新number修饰符(input值统一处理为数字)在输入框中,无论我们输入的是数字还是字母,都会被当做字符串类型进行处理,但是如果我们希望处理的
事实上var的设计可以看成是js语言设计上的一个错误,但是这种错误多半不能修复和已出,因为要前后兼容,大概2008年的时候,BrendanEich就决定修复这个错误,于是他添加了一个新的关键词:let,我们可以将let看成更完美的var,很多语言在它早期被设计的时候,基于当时历史的原因,他考虑不到以后可能面临的问题,所以很多语言都是有缺陷的,比如java,近几年一直在频繁的更新,一年更新一个版本甚
1.npminstall-g@vue/cli2.vuecreatemy-project3.cdmy-project4.npmeunserve
@2.9.3的使用1.下载vue-cli和安装项目cnpmi-gvue-cli#2.9.3vueinitwebpackmy-app@3.0以上,目前beta版本的使用1.下载vue-cli和安装项目npminstall-g@vue/clivuecreatemy-projectVueCLI3.0与其他的版本完全不同,它经历了重构,目的是:1.尽可能减少现代前端工具在配置上的烦恼,尤其是在开发者将多个
当组件中包含了大量的静态内容的时候,这个时候可以在根元素上添加这个指令。确保这些内容只计算一次然后缓存起来
生命周期钩子=生命周期函数=生命周期事件beforeCreate(){//此时只创建了一个空的Vue实例(data和methods中的数据还未初始化)//拿不到数据也操作不了方法},created(){//此时Vue实例已经完全创建好(data中的数据以及methods中的方法已经初始化)//注意!视图中的html并没有渲染出来//可以做的事//1.做一些网络请求//2.调用data中的数据或者操
写在类里面的是方法,因为方法都是和某一个实例对象挂钩的,单独写在外面的是函数,在js里面一般不区分方法函数,在java里面只有方法的概念,没有函数的概念
从1989年HTML诞生到现在,在浏览器端编写前端代码一共有经历了四个阶段:第一阶段:纯静态的html页面,预先编写好存放在Web服务器上的html文件。浏览器请求某个URL时,Web服务器把对应的html文件扔给浏览器,就可以显示html文件的内容了第二阶段:利用C、C++这些编程语言,直接向浏览器输出拼接后的字符串。这种技术被称为CGI:CommonGatewayInterface。第三阶段:
Vue实现电商后台管理系统
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号