Mixin合并
在数据的property
发生冲突时,会以组件自身的数据优先
data
函数属性合并- 生命周期钩子合并,先调用
Mixin
,再调用组件自身 methods
、component
和directive
等值为对象的合并- 自定义选项合并
定义合并策略:
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
导航跳转过程。
- 导航被触发,可以通过
router-link
组件触发,也可以通过$router.push
或直接改变url
触发。 - 在将要失活的组件中调用
beforeRouteLeave
守卫函数。 - 调用全局注册的
beforeEach
守卫。 - 如果当前使用的组件没有变化,调用组件内的
beforeRouteUpdate
守卫。 - 调用在定义路由时配置的
beforeEnter
守卫函数。 - 解析异步路由组件。
- 在被激活的组件中调用
beforeRouteEnter
守卫。 - 导航被确认。
- 调用全局注册的
afterEach
守卫。 - 触发
DOM
更新,页面进行更新。 - 调用组件的
beforeRouteEnter
函数汇总next
参数注册的回调函数。
activated
:被缓存组件激活时调用deactivated
:被缓存组件停用时调用renderTracked(e)
:虚拟DOM
重新渲染时调用renderTriggered(e)
:虚拟DOM
被触发渲染时调用errorCaptured(error, instance, info)
:捕获到来自子组件的异常时调用
哥伦比亚大学教导学生必须掌握的『100种学习方法』。
- 读得慢,长期下来读得少。
- 阅读中有30%~50%都是没用的。
- 敲打节拍来避免大脑阅读出声,以刺激皮层,但不可依赖过多。
- 情绪是可以操纵的,尽量往好的方向引导,行为才会改变。
- 预习学会20%,上课学会50%,回顾学会100%,复习时应无新知识。
- 写下问题,越清楚,得到的答案也就越透彻。
- 先背佐证或例子,有些抽象概念是要一定积累才能理解的。
- 跟同伴一起学,讨论能减少偏差。
- 给大脑0.5~9小时来处理信息,再回顾才会有新收获,不要在难点上停留。
- 锻炼左手。
- 随身携带相机或小本子,记录灵感,如音乐写作或绘画
- 把大事化为小步骤写在to- do list上,会更有成就感,效率也更高。
- 长时间学习后立即睡觉,大脑才能在睡眠中处理和加深知识。
- 倾听微弱的声音能提高注意力,每天练习3分钟。
- 新词用了7次才真正算自己的。
- 学会寻找情绪高昂的物质来驱动自己。
- 利用空闲的等待时间来做事,随身携带书籍,手工或电话单。
- 每天做件不愿做的事。
- 多敲打手指,刺激神经,延缓大脑衰老。
- 自己跟自己对话。
- 要学一本书,20%是书的观点,能延伸80%的知识是真正的学习。
- 提前粗略自学2年后的知识,能让现在的学习轻松不少。
- 灵感往往不是新的,它只是几个旧点子的合成品。
- 紧张时肾会积尿,身体供水不足会导致大脑发挥失常,考前试着喝点蔬菜汁或水果汁。
- 学会腹式呼吸。
- 养成记关键词的习惯。
- 多总结。
- 做思维导图心智图。
- 从整体上记忆和理解。
- 大脑有忘记痛苦的特征,学习时要保持良好心态。
- 多说话,并提高话语的质量。
- 带病用脑会对大脑造成损害。
- 掌握速读的技巧。
- 利用吸引力法则
- 学会速读:阅读就像骑自行车,骑到一定速度才能骑得好,骑得顺畅。
- 高速大量的输送知识,俗称吞鲸式读书法,长时间集中注意力会让大脑更灵活。
- 众多技巧之一,去“做”,绝不要期待任何“结果”。
- 一时一事,花5分钟也好10小时也好,一口气做完。
- 优柔寡断是严重的浪费时间,不要超过60秒。
- 把工作分成小部分做,会有分心的危险。
- 工作越努力,工作的能力就越强,休息就越有效果。
- 摄取肉类容易分散精力。
- 勤于模仿,如手段,技术和语言,别人做事时不要躲得远远的。
- 自我讲授,像老师教学一样把资料概述出来,疑点会变得清晰
- 每天学习更深一点,而不是更广一点。
- 漩涡效应:错误往往会接二连三地犯,保持平稳心态。
- 持续分析,反馈,突破。
- 读书分类,读法也分类,如细读,浏览等。
- 对生活观察入微。
- 不要问:“为什么我失败了?”,而应该问:“我做了什么?
- 将不类似的事物联系起来思考。
- 技能不是持久的,不练习,它每天都在退步。
- 大脑更喜欢图像。
- 晚上9点到早上3点是最好的休息时间。
- 起床后做做数学题或别的钻研游戏,能使大脑迅速清醒。
- 容易走的路都是下坡路。
- 把思考内容画下来。
- 自己说话录音,倾听不足。
- 每天做件没做过的事。
- 想得复杂,概述简单。
- 与潜意识交谈的最佳时间是睡醒后。
- 回忆细节。
- 做日程表,缩短工作时间让大脑产生压迫感来提高效率。
- 学习时间随着年龄增加会越来越少。
- 把问题用另一个角度重复一遍。
- 记单词时记不起来就看答案,不然大脑会“习惯性”忘记。
- 物归原位,井井有条的生活不会让你被琐事困扰。
- 加速形成概括力
- 闭眼在屋里走。
- 用双重目标,最低目标和理想目标。
- 思考弦外之音。
- 翻扑克牌锻炼运算。
- 不熬夜。
- 每天喝水至少1500毫升,许多头痛都是缺水引起的。
- 每天认识一位不同的人。
- 慢慢做,但要做得精确。
- 画效率/时间曲线表。
- 转移注意力是拒绝诱惑的根本。
- 思考因果,关联,相对关系。
- 反拖延技巧之一,做什么都要有一个理由。
- 外向即人格魅力。
- 阅读时区分知道和不知道的,避免浪费时间。
- 记知识点比理解概念要简单,知识点记多了潜意识便会逐渐形成概念。
- 想到就做,不要延缓。
- 累了立即休息。
- 用字母简写作笔记,加快速度。
- 把重要的课程录下来或照下来。
- 上课时端正坐姿,打开书本暗示潜意识保持开放状态。
- 坚持,专注,重复。
- 感受身体讯号。
- 饮食健康,早有蛋白质晚有纤维。
- 趁精神饱满先解决难题。
- 每天花10分钟写随笔,不要停顿。
- 去了解习惯体系。
- 不要压制欲望,化解它。
- 微笑释放的化学物质对紧张和愤怒极有效。
- 意志力=精力=可以强化。
- 多问为什么。
- 推迟情绪,立即行动。
- 善用表格。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。