• React面向组件跨层级通信

    父与子父组件包裹子组件,父组件向子组件传递数据。123456789101112131415161718192021222324// 子 const Button = ({ text }) => { <b...
  • 如何设计react组件

    痛定思痛没有很好的设计模式,写代码将会凌乱无序。没有模块划分,也没有组合的思想。 把一个页面写成一个组件 一个组件有3000行代码 基于场景的设计分类围绕“如何组合”根据不同的场景设计不同模式 组件的类别 无状态组件/哑组件/展示组件: 只做...
  • react的类组件和函数组件

    react的最小单位是组件 相同点 实际用途是一样的,都可作为基础组件展示UI 在现代浏览器中,除极端场景下,类(类组件)和闭包(函数组件)的性能差异不大 区别点 代码实现思想 类组件的根基是OOP,面向对象编程 函数组件的根据是FP,函数式编程 ...
  • react生命周期爬坑

    由于函数式组件会从头执行到尾,所以生命周期一定是在谈论类组件 梳理生命周期的时机和职责,建立时机与操作的对应关系 使用方式(时机梳理): 挂载,更新,卸载 适用范围(职责梳理):状态变更、错误处理 时机梳理挂载阶段挂载阶段是指组件从初始化到完成加载...
  • 你可能不需要使用派生state

    你可能不需要使用派生state 文中列举了两种反模式的使用方式 直接复制prop到state 在props变化后修改state 这两种使用方式除了增加代码的维护成本外,没有任何的好处
  • webpack优化之代码分割splitChunck

    代码分割 splitChunck 动态引用 适用场景:抽离相同代码到一个共享块 脚本懒加载,使得初始下载代码更小 懒加载JS脚本方式 CommonJS: require.ensure ES6: 动态import(需要babel支持,@babel/...
  • webpack优化之Scope Hoisting

    webpack打包现象webpack构建后的代码存在大量的闭包代码 大量函数闭包包裹代码,导致体积增大(模块越多越明显) 运行代码时创建的函数作用域变多,内存开销变大 被webpack转换后的模块会带上一层包裹,import会被转换成webpack...
  • webpack优化之tree-shaking

    tree-shaking 静态分析,不是动态分析 代码不会被执行到,就不会打包到bound.js 必须使用ES6的语法(import、export)才支持tree-shaking,commonjs方式不支持 webpck默认支持,在.babelrc里...
  • webpack4&&ESlint

    ESlintESLint是一个用来识别ECMAScript 并且按照规则给出报告的代码检测工具,使用它可以避免低级错误和统一代码的风格。 12345678910111213141516171819202122232425262728293031323...
  • webpack4定位源代码source-map

    定位源代码 通过 source-map 定位到源代码 开发环境:建议使用 首先在源代码的列信息是没有意义的,只要有行信息就能完整的建立打包前后代码之间的依赖关系。因此不管是开发环境还是生产环境,我们都会选择增加cheap基本类型来忽略模块打包前后...