自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张印的博客

记录成长,记录生活。

  • 博客(68)
  • 收藏
  • 关注

原创 vite原理

vite: https://github.com/vitejs/vitewebpack 原理图vite 原理图面试题答案:webpack会先打包,然后启动开发服务器,请求服务器时直接给予打包结果。而vite是直接启动开发服务器,请求哪个模块再对该模块进行实时编译。由于现代浏览器本身就支持ES Module,会自动向依赖的Module发出请求。vite充分利用这一点,将开发环境下的模块文件,就作为浏览器要执行的文件,而不是像webpack那样进行打包合并。由于vite在启动的时候不需要.

2022-01-14 10:40:59 492

原创 React实现图片缩放效果

JS版本import React, { PureComponent, createRef } from 'react'import PropTypes from 'prop-types'export default class PrismaZoom extends PureComponent { static propTypes = { children: PropTypes.node.isRequired, className: PropTypes.string, st

2021-09-25 11:36:45 864

原创 原生js实现轮播图

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"> <title></title> <script src="htt

2021-09-24 00:37:40 204

原创 img在容器中居中剪裁展示的三种方法

用到css的clip:rect(top right bottom left);用法,需要配合position: absolute使用<img src="xxx" style="position: absolute;clip: rect(0px,250px,200px,50px);width: 300px;height: 200px">用元素的background属性 img { background-image: url(http://img2.u.

2021-09-05 01:26:05 2586

原创 优秀文章整理

调试技巧:如何快速知道页面上所有元素的轮廓跟位置小程序调试新方案——WeConsole

2021-09-04 23:03:43 71

原创 webpack常用loader和plugin

webpack常用loader和pluginfile-loaderfile-loader: 生成依赖的文件到输出目录,然后将模块文件设置为:导出一个路径\//file-loaderfunction loader(source){ // source:文件内容(图片内容 buffer) // 1. 生成一个具有相同文件内容的文件到输出目录 // 2. 返回一段代码 export default "文件名"}url-loaderurl-loader:包含了file-loader的功能,

2021-07-27 14:11:21 288

原创 关于滚动的属性和api整理

容器元素element.scrollTop/scrollLeft // 获取或设置一个元素的内容垂直滚动的像素数(可读可写)element.clientHeight // 如下图(只读)element.scrollHeight // 获取一个元素内容高度的度量,包括由于溢出导致的视图中不可见内容(只读)element.scrollTo(x-coord, y-coord); // 使内容滚动到给定元素的指定坐标位置 element.scrollBy(x-coord, y-coord)

2021-04-09 17:22:26 168

原创 react 常用 hooks

// 监控元素尺寸变化export function useClientRect() { const [rect, setRect] = useState(null); const ref = useCallback(node => { if (node !== null) { setRect(node.getBoundingClientRect()); } node && myObserver.observe(node) }, [])

2021-03-16 16:10:52 120

原创 react项目eslint和ts配置

如何在 React 项目中整合 Eslint 和 Prettier.eslintrc.jsmodule.exports = { "env": { "browser": true, "es6": true }, "extends": [ "airbnb" ], "globals": { "Atomics": "readonly", "SharedArrayBuffer": "readonly", "_": true

2021-01-11 17:08:40 1728

原创 redux-saga

redux-saga中文文档地址:https://redux-saga-in-chinese.js.org/纯净强大灵活[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GvT9Nm0u-1610100030495)(assets/2019-08-27-09-35-12.png)]在saga任务中,如果yield了一个普通数据,saga不作任何处理,仅仅将数据传递给yield表达式(把得到的数据放到next的参数中),因此,在saga中,yield一个普通数据

2021-01-08 18:00:59 199 1

原创 CSS笔记

CSS常用方法// 单行打点.ellipsis() { overflow: hidden; white-space: nowrap; text-overflow: ellipsis;}// 多行打点.multi-ellipsis(@lines) { display: -webkit-box; overflow: hidden; text-overflow: ellipsis; -webkit-line-clamp: @lines; /* autoprefixer:

2021-01-06 00:04:20 170

原创 原生js封装的常用方法

常用方法// 1、根据身份证获取信息export function getInfoByID(idNum) { const result = {} //获取出生日期 result.birth = idNum.substring(6, 10) + "-" + idNum.substring(10, 12) + "-" + idNum.substring(12, 14); //获取性别 result.sex = parseInt(idNum.substr(16, 1)) % 2 ===

2020-11-25 14:50:43 3155

原创 npm相关内容

语义版本版本规范:主版本号.次版本号.补丁版本号主版本号:仅当程序发生了重大变化时才会增长,如新增了重要功能、新增了大量的API、技术架构发生了重大变化次版本号:仅当程序发生了一些小变化时才会增长,如新增了一些小功能、新增了一些辅助型的API补丁版本号:仅当解决了一些 bug 或 进行了一些局部优化时更新,如修复了某个函数的 bug、提升了某个函数的运行效率常见语义版本的书写方式符号描述示例示例描述>大于某个版本>1.2.1大于1.2.1版本&

2020-11-23 18:02:25 143

原创 react-redux使用和源码分析(hook和class版本)

react-reduxReact: 组件化的UI界面处理方案React-Router: 根据地址匹配路由,最终渲染不同的组件Redux:处理数据以及数据变化的方案(主要用于处理共享数据)如果一个组件,仅用于渲染一个UI界面,而没有状态(通常是一个函数组件),该组件叫做展示组件如果一个组件,仅用于提供数据,没有任何属于自己的UI界面,则该组件叫做容器组件,容器组件纯粹是为了给其他组件提供数据。react-redux库:链接redux和reactProvider组件:没有任何UI界面,该

2020-10-17 22:48:52 247

原创 JavaScript数据结构和算法

01-线性数据结构之数组线性数据结构:也叫一维数据结构,线性的数据结构强调存储和顺序,常用的有数组和链表两种线性数据结构。特性存储在物理空间上是连续的;数组定长,底层的数组长度是不可变的;数组的变量,指向了数组第一个元素的位置;优点查询性能好缺点因为数组存储的空间必须得是连续的,所以如果数组比较大,当系统的空间碎片较多的时候,容易存不下;因为数组的长度是固定的,所以数组的内容难以被添加和删除;补充数组 a = [1, 2, 3, 4, 5, 6], a[1], a[2]

2020-10-07 02:31:31 467

原创 二叉树

01-树形结构(常见概念)特点树形结构是有向无环图,树是图的一种;树形结构有一个根节点树形结构没有回路常见概念根节点:A叶子节点:下边没有其它节点了树的度:这棵树最多叉的节点有多少个叉,这棵树的度就是多少树的深度:树最深有几层,树的深度就为几满二叉树所有的叶子节点都在最底层每个非叶子节点都有两个子节点完全二叉树国内定义叶子节点都在最后一层或倒数第二层叶子节点都靠左聚拢国际定义叶子节点都在最后一层或倒数第二层如果有叶子节点,就必须有两个叶子节点子树

2020-10-03 00:34:46 285 1

原创 经典文章收藏

React Fiber 原理介绍BFF——服务于前端的后端深入理解CSS中的层叠上下文和层叠顺序-张鑫旭

2020-09-20 20:44:02 132

原创 React进阶

React中的事件这里的事件:React内置的DOM组件中的事件几乎所有的元素的事件处理,均在document的事件中处理,React会根据虚拟DOM树的完成事件函数的调用一些不冒泡的事件,是直接在元素上监听一些document上面没有的事件,直接在元素上监听如果给真实的DOM注册事件,阻止了事件冒泡,则会导致react的相应事件无法触发(和第三方dom插件混用是需要特别注意)如果给真实的DOM注册事件,事件会先于React事件运行React的事件参数,并非真实的DOM事件参数,是Re

2020-09-19 11:51:51 407

原创 MVC/MVVM(Redux的核心概念)

Redux核心概念action reducer storeMVC它是一个UI的解决方案,用于降低UI,以及UI关联的数据的复杂度。传统的服务器端的MVC[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vt7TOLof-1600448457535)(assets/2019-08-20-13-18-58.png)]环境:服务端需要响应一个完整的HTML该HTML中包含页面需要的数据浏览器仅承担渲染页面的作用以上的这种方式叫做服务端渲染,即服务器端将完整的

2020-09-19 01:01:55 732

原创 事件循环

事件循环JS运行的环境称之为宿主环境。执行栈:call stack,一个数据结构,用于存放各种函数的执行环境,每一个函数执行之前,它的相关信息会加入到执行栈。函数调用之前,创建执行环境,然后加入到执行栈;函数调用之后,销毁执行环境。JS引擎永远执行的是执行栈的最顶部。异步函数:某些函数不会立即执行,需要等到某个时机到达后才会执行,这样的函数称之为异步函数。比如事件处理函数。异步函数的执行时机,会被宿主环境控制。浏览器宿主环境中包含5个线程:JS引擎:负责执行执行栈的最顶部代码GUI线程:负责

2020-09-18 01:13:37 131

原创 React Hook

Hook简介Hook专门用于增强函数组件的功能(Hook在类组件中是不能使用的),使之理论上可以成为类组件的替代品官方强调:没有必要更改已经完成的类组件,官方目前没有计划取消类组件,只是鼓励使用函数组件Hook(钩子)本质上是一个函数(命名上总以use开头),该函数可以挂载任何功能Hook的种类:useState、useEffect、useContext、useReducer、自定义Hookstate Hookstate Hook是一个在函数组件中使用的函数(useSatte),用于在函.

2020-09-16 22:40:34 122

原创 Linux常用命令

Linux常用命令tar -xvf 压缩包 自动识别压缩格式unzip 压缩包 只能解压zip压缩包rm -rf 文件名 删除文件删除文件夹实例:rm -rf /var/log/httpd/access删除文件夹及及其下所有文件、文件夹rm -rf ./* 删除当前目录下所有类型的文件ls -a/t 显示所有文件及目录/按时间排序(包括隐藏文件)mv ./test1/* ./test2 移动test1文件夹下的所有内容到test2mv ./test1 ./test2/ 移动tes

2020-09-12 16:43:15 92

原创 前端项目配置(prettierrc/eslint/tsconfig.json)

prettierrc.prettierrc.jsmodule.exports = { "prettier.printWidth": 100, // 超过最大值换行 "prettier.tabWidth": 4, // 缩进字节数 "prettier.useTabs": false, // 缩进不使用tab,使用空格 "prettier.semi": true, // 句尾添加分号 "prettier.singleQuote": true, // 使用单引号代替

2020-09-12 15:05:16 2383 1

原创 软件开发流程中各版本名称(alpha/bera/RC/Release)

RC=Release Candidate,含义 是"发布候选版",它不是最终的版本,而是最终版(RTM=Release To Manufacture)之前的最后一个版本。广义上对测试有三个传统的称呼:alpha、beta、gamma,用来标识测试的阶段和范围。alpha 是指内测,即现在说的CB,指开发团队内部测试的版本或者有限用户体验测试版本。beta 是指公测,即针对所有用户公开的测试版本。然后做过一些修改,成为正式发布的候选版本时叫做gamma,现在叫做RC(Release Candidate)。

2020-09-03 09:46:54 1068

原创 Webpack之性能优化篇

Webpack之性能优化篇性能优化概述本文所讲的性能优化主要体现在三个方面:构建性能这里所说的构建性能,是指在开发阶段的构建性能,而不是生产环境的构建性能;优化的目标: 降低从打包开始,到代码效果呈现到页面所需要的时间。传输性能传输性能是指,打包后的JS代码从服务器传输到用户浏览器经过的时间。在优化传输性能时要考虑到:总传输量:所有需要传输的文件内容加起来,就是总传输量;文件数量:当访问页面时,需要传输的JS文件数量,文件数量越多,http请求越多,响应速度越慢;浏览器缓存:

2020-08-26 08:01:06 4220

原创 前端文件下载

function download(url, filename) { return fetch(url).then(res => res.blob().then(blob => { let a = document.createElement('a'); let url = window.URL.createObjectURL(blob); a.href = url; a.download = filename;

2020-07-06 17:14:30 128

原创 h5定位总结(h5api + 高德 + 腾讯)

H5 API定位总结:定位非常不准,并且成功率很低。高德定位在PC端和IOS端经常定位失败,安卓定位还可以。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>高德定位 和 H5定

2020-07-02 20:03:10 4592

原创 Git常用命令

Git常用命令查看git branch /-r/-vv/-a查看本地所有分支/只查看远程仓库的分支/查看本地分支和相关联的远程分支/查看本地和远程仓库的所有分支git remote -v查看远程仓库的信息git log查看提交记录git reflog查看命令历史操作创建分支git checkout -b test (origin/test)本地建分支并切换到该分支(拉取远程分支并同时创建对应的本地分支)git branch --set-upstream-to=origin/

2020-06-04 14:14:35 253

原创 异步处理的通用模型Promise

1. 异步处理的通用模型ES官方参考了大量的异步场景,总结出了一套异步的通用模型,该模型可以覆盖几乎所有的异步场景,甚至是同步场景。值得注意的是,为了兼容旧系统,ES6 并不打算抛弃掉过去的做法,只是基于该模型推出一个全新的 API,使用该API,会让异步处理更加的简洁优雅。理解该 API,最重要的,是理解它的异步模型ES6 将某一件可能发生异步操作的事情,分为两个阶段:unsettled 和 settledunsettled: 未决阶段,表示事情还在进行前期的处理,并没有发生通向结果的那

2020-05-09 14:52:23 441

原创 Mac下常用快捷键和chrome插件

Mac的常用快捷键shift + (control) + command + 4 截图全屏shift + (control) + command + 3 截图部分command + space 搜索应用option + command + esc 强制关闭应用(window任务管理器)command + w 关闭当前标签页command + tab 切换程序command + +...

2020-03-23 09:26:54 1757 1

原创 手写Redux源码

import isPlainObject from "./utils/isPlainObject"import ActionTypes from "./utils/ActionTypes"function validateReducers(reducers) { if (typeof reducers !== "object") { throw new TypeError("re...

2020-03-22 23:43:26 317

原创 webpack-编译结果分析

src文件下有有两个文件index.jsconsole.log("index module")var a = require("./a")a.abc();console.log(a)a.jsconsole.log("module a")module.exports = "a";npm run build 编译后的结果//合并两个模块// ./src/a.js// ....

2020-02-18 17:05:52 286

原创 webpack-plugin

pluginloader的功能定位是转换代码,而一些其他的操作难以使用loader完成,比如:当webpack生成文件时,顺便多生成一个说明描述文件当webpack编译启动时,控制台输出一句话表示webpack启动了当xxxx时,xxxx这种类似的功能需要把功能嵌入到webpack的编译流程中,而这种事情的实现是依托于plugin的plugin的本质是一个带有apply方法的对象...

2020-02-18 16:53:38 556

原创 webpack-loader

loaderwebpack做的事情,仅仅是分析出各种模块的依赖关系,然后形成资源列表,最终打包生成到指定的文件中。更多的功能需要借助webpack loaders和webpack plugins完成。webpack loader: loader本质上是一个函数,它的作用是将某个源码字符串转换成另一个源码字符串返回。loader函数的将在模块解析的过程中被调用,以得到最终的源码。全流程...

2020-02-18 16:50:45 193

原创 webpack-编译过程分析

webpack 编译过程 {ignore}webpack 的作用是将源代码编译(构建、打包)成最终代码[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KOylt0bl-1582009061629)(assets/2020-01-09-10-26-15.png)]整个过程大致分为三个步骤初始化编译输出## 初始化此阶段,webpack会将CLI参数、...

2020-02-18 15:03:54 926

原创 webpack-模块化兼容性

模块化兼容性由于webpack同时支持CommonJS和ES6 module,因此需要理解它们互操作时webpack是如何处理的同模块化标准如果导出和导入使用的是同一种模块化标准,打包后的效果和之前学习的模块化没有任何差异不同模块化标准不同的模块化标准,webpack按照如下的方式处理最佳实践代码编写最忌讳的是精神分裂,选择一个合适的模块化标准,然后贯彻整个开发阶段。...

2020-02-18 14:34:11 280

原创 TypeScript学习笔记和Demo

TypeScriptTypeScript学习笔记及相关Demo目录概述js语言的问题ts语言的特点在node环境中搭建开发环境安装TypeScriptTypeScript的配置文件使用第三方库简化流程基本类型检查类型约束和编译结果对比基本类型其它类型类型别名函数的相关约束demo:创建并打印扑克牌扩展类型-枚举字面量类型的问题枚举的使用...

2019-10-31 20:42:02 698 2

原创 mac brew安装mongodb

The MongoDB Homebrew TapThis is a custom Homebrew tap for official MongoDB software.SetupYou can add the custom tap in a MacOS terminal session using:$ brew tap mongodb/brewInstalling Formulae...

2019-10-26 22:10:23 606 3

原创 React渲染原理

渲染原理渲染:生成用于显示的对象,以及将这些对象形成真实的DOM对象React元素:React Element,通过React.createElement创建(语法糖:JSX)例如:<div><h1>标题</h1></div><App />React节点:专门用于渲染到UI界面的对象,React会通过React元素,创...

2019-10-17 00:33:56 641

原创 设计模式和六大原则

1.什么是设计模式设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。简单来说就是使用套路做事情。2.设计模式的目的为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。3.设计模式的作用减少耦合,增强复用性,降低代码的开发、维护、扩展成本。4.什么...

2019-08-23 07:49:58 169

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除