1
头图

站点地址github/devDocs

Mixin合并

在数据的property发生冲突时,会以组件自身的数据优先

  • data函数属性合并
  • 生命周期钩子合并,先调用Mixin,再调用组件自身
  • methodscomponentdirective等值为对象的合并
  • 自定义选项合并

定义合并策略:

const app = Vue.createApp({
    minxins:[myMixin],
})

app.config.optionMergeStrategies.custom=(toVal, fromVal) => {
    return toVal || fromVal;
}

Vite在开发环境基于浏览器原生ES6 Modules开发,在生产环境基于Rollup打包。

  • 快速冷启动
  • 即时模块热更新
  • 真正的按需编译
  • Electron
  • node-red-流程引擎
  • 消息传递是通过在独立的线程之间共享对象或数据的某种序列化表示来实现
  • 通过使用worker_threads可以在两个不同的JS实例之间共享内存。通过创建SharedArrayBuffer实例,并使用与工作线程消息传递相同的postMessage(value)方法将其从一个线程传递到另一个线程来完成。这个过程会产生一个字节数组,两个线程可以同时对其进行读写
  • 事件循环,管理用于触发回调和运行应用的事件队列
  • process.nextTick()promise,微任务队列中的回调优先于各阶段正常队列中的回调,微任务队列下一个循环tick中的回调在promise微任务队列中的回调之前运行
  • 重构虚拟DOM模块(静态提升)
  • 基于Proxy的响应式对象
  • 事件缓存
  • Tree Shaking支持
  • TypeScript和monorepo代码组织
  • 组合式API
  • Vite工具
  • 标记静态内容,并区分动态内容(静态提升)
  • 更新时只diff动态的部分
  • 事件缓存对象cacheHandlers
  • 打包构建的资源更小
  • Tree Shaking移除JavaScript上下文中未引用代码

首屏资源加载优化(4点):

  • 剥离首屏资源:非首屏资源单独合并、懒加载
  • 按需加载:Webpack Code Splitting、首屏非必要资源
  • 非首屏图片懒加载:页面滚动时动态载入图片
  • CDN加速:

预加载(2种)

  • 对页面资源进行预先拉取或加载:DNS预解析(DNS pre-resolution)<link rel="preload"><link rel="prefetch">
  • WebView或关键数据进行预加载

渲染优化

16ms优化

重绘和重排

requestAnimationFrame和requestIdleCallback

长列表滚动优化

GPU

  • beforeCreate
  • created
  • beforeMount
  • mounted
  • beforeUpdate
  • updated
  • beforeUnmount
  • unmounted
  • activated
  • deactivated
  • renderTriggered
  • renderTracked
  • errorCaptured

errorCaptured

在捕获一个来自当前子孙组件的错误时被触发,当前组件报错不会触发。这里的报错一般只会限制在当前Vue根实例下代码所抛出的DOMException或者异常Error对象(new Error())等错误。在某个子孙组件的errorCaptured返回false时,可以阻止该错误继续向上传播。

  • Content-Type:指定内容类型
  • location:将客户端重定向到另一个url地址
  • Cache-Control:开启缓存机制
  • Expires:指定缓存过期时间
  • Etag:指定当服务器端响应内容没有变化时不重新下载数据
// 获取两个日期之间的所有日期(包括自身)
export const getAllDates = (start, end) => {
  const dateList = [];
  let startDate = Date.parse(new Date(start));
  let endDate = Date.parse(new Date(end));
  let days = Math.ceil((endDate - startDate) / (1000 * 60 * 60 * 24));
  for (let i = 0; i <= days; i++) {
    let date = new Date(startDate + i * 24 * 60 * 60 * 1000);
    dateList.push(date.toLocaleDateString());
  }
  return dateList;
};

// 获取两个日期之间的所有星期(包括自身)
export const getAllWeeks = (days, start, end) => {
  let weekList = [];
  let filterWeeks = [];
  let weeks = [
    "星期一",
    "星期二",
    "星期三",
    "星期四",
    "星期五",
    "星期六",
    "星期日",
  ];
  let result = [];
  const dateList = getAllDates(start, end);
  dateList.map((date) => {
    let week = new Date(date).getDay();
    weekList.push(week == 0 ? 7 : week);
  });
  weekList = Array.from(new Set(weekList));
  filterWeeks = days.filter((day) => !weekList.includes(Number(day)));
  filterWeeks.map((week) => result.push(weeks[week - 1]));
  return result;
};

Vue Router导航跳转过程。

  1. 导航被触发,可以通过router-link组件触发,也可以通过$router.push或直接改变url触发。
  2. 在将要失活的组件中调用beforeRouteLeave守卫函数。
  3. 调用全局注册的beforeEach守卫。
  4. 如果当前使用的组件没有变化,调用组件内的beforeRouteUpdate守卫。
  5. 调用在定义路由时配置的beforeEnter守卫函数。
  6. 解析异步路由组件。
  7. 在被激活的组件中调用beforeRouteEnter守卫。
  8. 导航被确认。
  9. 调用全局注册的afterEach守卫。
  10. 触发DOM更新,页面进行更新。
  11. 调用组件的beforeRouteEnter函数汇总next参数注册的回调函数。
  • activated:被缓存组件激活时调用
  • deactivated:被缓存组件停用时调用
  • renderTracked(e):虚拟DOM重新渲染时调用
  • renderTriggered(e):虚拟DOM被触发渲染时调用
  • errorCaptured(error, instance, info):捕获到来自子组件的异常时调用

哥伦比亚大学教导学生必须掌握的『100种学习方法』。

  1. 读得慢,长期下来读得少。
  2. 阅读中有30%~50%都是没用的。
  3. 敲打节拍来避免大脑阅读出声,以刺激皮层,但不可依赖过多。
  4. 情绪是可以操纵的,尽量往好的方向引导,行为才会改变。
  5. 预习学会20%,上课学会50%,回顾学会100%,复习时应无新知识。
  6. 写下问题,越清楚,得到的答案也就越透彻。
  7. 先背佐证或例子,有些抽象概念是要一定积累才能理解的。
  8. 跟同伴一起学,讨论能减少偏差。
  9. 给大脑0.5~9小时来处理信息,再回顾才会有新收获,不要在难点上停留。
  10. 锻炼左手。
  11. 随身携带相机或小本子,记录灵感,如音乐写作或绘画
  12. 把大事化为小步骤写在to- do list上,会更有成就感,效率也更高。
  13. 长时间学习后立即睡觉,大脑才能在睡眠中处理和加深知识。
  14. 倾听微弱的声音能提高注意力,每天练习3分钟。
  15. 新词用了7次才真正算自己的。
  16. 学会寻找情绪高昂的物质来驱动自己。
  17. 利用空闲的等待时间来做事,随身携带书籍,手工或电话单。
  18. 每天做件不愿做的事。
  19. 多敲打手指,刺激神经,延缓大脑衰老。
  20. 自己跟自己对话。
  21. 要学一本书,20%是书的观点,能延伸80%的知识是真正的学习。
  22. 提前粗略自学2年后的知识,能让现在的学习轻松不少。
  23. 灵感往往不是新的,它只是几个旧点子的合成品。
  24. 紧张时肾会积尿,身体供水不足会导致大脑发挥失常,考前试着喝点蔬菜汁或水果汁。
  25. 学会腹式呼吸。
  26. 养成记关键词的习惯。
  27. 多总结。
  28. 做思维导图心智图。
  29. 从整体上记忆和理解。
  30. 大脑有忘记痛苦的特征,学习时要保持良好心态。
  31. 多说话,并提高话语的质量。
  32. 带病用脑会对大脑造成损害。
  33. 掌握速读的技巧。
  34. 利用吸引力法则
  35. 学会速读:阅读就像骑自行车,骑到一定速度才能骑得好,骑得顺畅。
  36. 高速大量的输送知识,俗称吞鲸式读书法,长时间集中注意力会让大脑更灵活。
  37. 众多技巧之一,去“做”,绝不要期待任何“结果”。
  38. 一时一事,花5分钟也好10小时也好,一口气做完。
  39. 优柔寡断是严重的浪费时间,不要超过60秒。
  40. 把工作分成小部分做,会有分心的危险。
  41. 工作越努力,工作的能力就越强,休息就越有效果。
  42. 摄取肉类容易分散精力。
  43. 勤于模仿,如手段,技术和语言,别人做事时不要躲得远远的。
  44. 自我讲授,像老师教学一样把资料概述出来,疑点会变得清晰
  45. 每天学习更深一点,而不是更广一点。
  46. 漩涡效应:错误往往会接二连三地犯,保持平稳心态。
  47. 持续分析,反馈,突破。
  48. 读书分类,读法也分类,如细读,浏览等。
  49. 对生活观察入微。
  50. 不要问:“为什么我失败了?”,而应该问:“我做了什么?
  51. 将不类似的事物联系起来思考。
  52. 技能不是持久的,不练习,它每天都在退步。
  53. 大脑更喜欢图像。
  54. 晚上9点到早上3点是最好的休息时间。
  55. 起床后做做数学题或别的钻研游戏,能使大脑迅速清醒。
  56. 容易走的路都是下坡路。
  57. 把思考内容画下来。
  58. 自己说话录音,倾听不足。
  59. 每天做件没做过的事。
  60. 想得复杂,概述简单。
  61. 与潜意识交谈的最佳时间是睡醒后。
  62. 回忆细节。
  63. 做日程表,缩短工作时间让大脑产生压迫感来提高效率。
  64. 学习时间随着年龄增加会越来越少。
  65. 把问题用另一个角度重复一遍。
  66. 记单词时记不起来就看答案,不然大脑会“习惯性”忘记。
  67. 物归原位,井井有条的生活不会让你被琐事困扰。
  68. 加速形成概括力
  69. 闭眼在屋里走。
  70. 用双重目标,最低目标和理想目标。
  71. 思考弦外之音。
  72. 翻扑克牌锻炼运算。
  73. 不熬夜。
  74. 每天喝水至少1500毫升,许多头痛都是缺水引起的。
  75. 每天认识一位不同的人。
  76. 慢慢做,但要做得精确。
  77. 画效率/时间曲线表。
  78. 转移注意力是拒绝诱惑的根本。
  79. 思考因果,关联,相对关系。
  80. 反拖延技巧之一,做什么都要有一个理由。
  81. 外向即人格魅力。
  82. 阅读时区分知道和不知道的,避免浪费时间。
  83. 记知识点比理解概念要简单,知识点记多了潜意识便会逐渐形成概念。
  84. 想到就做,不要延缓。
  85. 累了立即休息。
  86. 用字母简写作笔记,加快速度。
  87. 把重要的课程录下来或照下来。
  88. 上课时端正坐姿,打开书本暗示潜意识保持开放状态。
  89. 坚持,专注,重复。
  90. 感受身体讯号。
  91. 饮食健康,早有蛋白质晚有纤维。
  92. 趁精神饱满先解决难题。
  93. 每天花10分钟写随笔,不要停顿。
  94. 去了解习惯体系。
  95. 不要压制欲望,化解它。
  96. 微笑释放的化学物质对紧张和愤怒极有效。
  97. 意志力=精力=可以强化。
  98. 多问为什么。
  99. 推迟情绪,立即行动。
  100. 善用表格。

寒青
10.4k 声望3.8k 粉丝

« 上一篇
HTTP状态码
下一篇 »
NodeJS技术文档