tips - TokenYangForever/NewProject GitHub Wiki

  • 1.IOS微信中的new Date()不能兼容 xxxx-xx-xx格式 以及 xx/xx无年份的格式。

  • 2.使用mediaquery写css样式兼容不同屏幕大小的手机。

  • 3.:first-child与:first-of-type的区别 :first-child匹配第一个子元素,:first-of-type匹配第一个符合type类型的子元素。

  • 4.setTimeout(fn,n) n毫秒后将事件加入队列中

  • 5.js文件加载阻塞dom问题(js文件引用一般放在底部) async:使用async属性表示当前脚本不必等待其他脚本,也不必阻塞文档呈现,不能保证按照它们在页面中出现的顺序执行(异步脚本) defer:使用defer属性可以让脚本在文档完全呈现之后再执行,延迟脚本总是按照它们的顺序执行(延迟脚本)

  • 6.使用节流函数进行性能优化 如果直接将函数绑定在scroll事件上,当页面滚动时,函数会被高频触发,这非常影响浏览器的性能。

  • 7.requestAnimationFrame 是专门为实现高性能的帧动画而设计的一个API setInterval、setTimeout是开发者主动要求浏览器去绘制,但是由于种种问题,浏览器可能会漏掉部分命令 requestAnimationFrame 就是浏览器什么要开始绘制了浏览器自己知道,通过requestAnimationFrame 告诉开发者,这样就不会出现重复绘制丢失的问题了

  • 8.localStorage/sessionStorage的区别只在于时效,sessionStorage关闭浏览器后消失

  • 9.Javascript模块化规范:CommonJS、AMD、CMD。ES6模块化(import关键字)

  • 10.为了防止误操作,移动端iOS操作系统针对原生click事件做了300ms的延迟,这在一定程度上影响了我们的使用体验。 1)使用zepto的tap事件(会产生点击穿透的bug)2)使用FastClick插件解决

  • 11.Array.prototype.slice.call(arguments)//将类数组对象转化为数组

  • 12.百度统计 添加到页面跳转时无效 还是百度统计 项目上新建一个页面时候,要注册配置页面Id,添加统计代码

  • 13.location.reload()在安卓微信上无效 会读取缓存,window.location.href = window.location.href+"&timestamp="+new Date().getTime()

  • 14.Vue vue 需要在完成渲染数据后,立即执行的代码要放在Vue.nextTick里

  • 15.如果你在你的应用程序中使用JSON.parse,建议你一定要进行错误处理。未处理的JSON.parse错误就像一个定时炸弹。不要假设你接收到的JSON对象是完全有效的。

  • 16.使用delegate() 方法为未来元素添加处理程序,on和bind就不行

  • 17.style scoped 使样式只作用于当前模块;模块化的文件最后一行加换行符

  • 18.RegExp 每当产生一个带括号的成功匹配时,$1...$9 属性的值就被修改。可以在一个正则表达式模式中指定任意多个带括号的子匹配,但只能存储最新的九个。

  • 19.MutationObserver 监听DOM树变化 var observer = new MutationObserver(nextTickHandler); observer.observe(Domnode,option)

  • 20.使用v-for的时候,一定要注明唯一的key键值.父组件动态绑定数据给子组件时,一定要确保数据已经get到了,再mouted子组件

  • 21.用foreach无法跳出循环