setState 四种同步更新 this.state 方式
setState 四种同步更新 this.state 方式在React中,如果是由React引发的事件处理(比如通过onClick引发的事件处理),调用setState不会同步更新this.state,而是会合并多个setState进行异步更新,这样可以避免频繁更新DOM,提升性能
在开发中,有时候 ...
react setState更新机制
setState 更新机制1.setState 传参方式setState(obj||func,func),setState可以接受俩个参数,第一参数是代表新state的对象或者返回新state对象的函数,第二个参数是更新state后的回调函数
1.对象Javascripthandel = ()=&g ...
mvvm原理
vue 是常见的 mvvm 框架,实现数据,视图双向绑定的原理主要是数据劫持结合发布-订阅模式,通过 Object.defineProperty 来劫持 data 各个的属性,属性初始化取值时添加订阅,属性取值变化时触发 setter 通知订阅触发回调更新视图
下面根据 vue 的源码,实现简易 ...
手写loader(5) less-loadr,css-loader和style-loader
新建 index.less 文件,并在 index.js 中引入
less@color: blue;body{ background: @color; backgound: url('./public.jpg'); // 覆盖}
配置 webpack loader
Ja ...
手写loader(1) loader配置
-
什么是 loaderwebpack 只能处理 js 模块,如果要处理其他类型的文件,需要使用 loader 进行转换;loader 指用来将一段代码转换成另一段代码的 webpack 加载器,loader 只是一个导出为函数的 JavaScript 模块
写一个简单的 loaderloade ...
手写loader(2) babel-loader实现
babel-loader 用来加载 js 代码并进行转译
配置 babel-loader首先安装 babel 和 babel 的相关模块
powershellyarn add @babel/core @babel/preset-env -D
@babel/core 是 babel 的核心模块, ...
手写 loader(3) bannder-loader添加时间戳
banner-loader 可以在打包的代码前添加相关的注释信息
配置 banner-loader利用 banner-loader 在打包的代码前添加时间戳
Javascript// webpack.config.jsmodule.exports = { resolveLoader: ...
手写loader(4) file-loader和url-loader
file-loaderfile-loader 主要用来加载图片文件
使用方式Javascript// index.jsimport p from './public.jpg'let img = new Image()img.src = pdocument.body.appendChild(img ...
webpack 性能优化(7)热更新
热更新 HMR(Hot Module Replacement)热更新指对数据变化的部分进行局部跟新,而不进行页面刷新
配置
devServer 中设置 hot 属性 true
使用 webpack.HotModuleReplacementPlugin() 热更新插件
Javascriptlet ...
webpack 性能优化(6)懒加载
懒加载实现代码的按需加载
使用场景index.js 中点击 button ,动态加载 source.js 的内容,读取内容并打印
Javascript// index.jslet button = document.createElement('button')button.innerHTML ...
