All Posts

  • Published on
    async/await 是什么? "async/await 是 JavaScript 处理异步操作(如网络请求、文件读取)的"语法糖",它让我们能用写同步代码的方式写异步逻辑,避免层层嵌套的回调函数。 底层依赖 Generator 的暂停/恢复机制和 Promise 的状态管理,async 函数总返回 Promise,即使内部返回普通值也会被自动包装为 Promise.resolve(value)...
  • Published on
    什么是 Promise ? Promise 是 es6 提出的处理异步任务的"承诺容器"。它只有三个状态 pending,fulfilled,rejected,状态一旦从 pending 变成后面两个,就不会再发生变化了,支持链式调用,通过.then() 方法,可以将异步任务的结果参数传递下去,实现了更好的异步任务执行控制和错误处理。 为什么要有 Promise?解决了什么问题? 在 Promis...
  • Published on
    前端路由是什么? 前端路由能让浏览器不重新加载整个页面的条件下,通过改变 url 展示不同的组件,从而实现页面跳转的全前端(JavaScript)控制,是 SPA 的基础 为什么要有前端路由? 1. 传统后端路由,在跳转后会先白屏,等接口重新返回 html 后,才能正常展示,前端路由可以实现"无缝切换" 2. 降低了服务端压力,无需每个页面都重新请求页面资源(CSS/JS) 3. 支持复杂应用交互...
  • Published on
    对于某一类特定的需求,过于原子化的组件化开发方式并不能够彻底地解决开发效率问题,从抽象的业务需求中能够具象出较为通用的可插拔可组合的技术方案才是解决实际问题的终极答案。 下面给出几个常见场景 页面布局方案 1. 布局与路由的结合。如何实现不同路由不同布局?将布局组件作为传入不同的页面组件上 2. 页眉:应用层页眉(数据传递给外面,不接收外层传入的数据),页面层页眉(数据从外层传入) 3. 在企业管...
  • Published on
    key 是什么? 是一个特殊属性,主要针对列表,map 后的 react 组件,以及相邻的同类型 DOM,需要手动指定 key,帮助 react 做区分 为什么要有 key? 1. React Diff 算法的需要。如果修改数组,没有指定 key 时,React 的 Diff 算法(优先通过 key 匹配),只能退化为按索引顺序对比。 2. 提升性能,比如说我在列表的开头新增了一个元素,如果不指定...