自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 技术分享:实现 vue 的数据响应式原理

实现 vue 的数据响应式原理这篇文章主要是给不了解或者没接触过 vue 响应式源码的小伙伴们看的,其主要目的在于能对 vue 的响应式原理有个基本的认识和了解,如果在面试中被问到此类问题,能够知道面试官想让你回答的是什么?「PS:文中如有不对的地方,欢迎小伙伴们指正」响应式的理解响应式顾名思义就是数据变化,会引起视图的更新。这篇文章主要分析 vue2.0 中对象和数组响应式原理的实现,依赖收集和视图更新我们留在下一篇文章分析。在 vue 中,我们所说的响应式数据,一般指的是数组类型和对象类

2021-01-19 20:23:52 284

原创 分享:JavaScript网页编程之Web API简介

API的概念API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。 任何开发语言都有自己的API API的特征输入和输出(I/O) var max = Math.max(2,3,4);复制代码API的使用方法:console.log("abc");Web API的概念浏览器提供了一套浏览器功能和页面元素的API

2021-01-16 20:38:49 373

原创 技术感悟:谈谈我对Vue中diff算法的理解

前言我认为diff算法具备两个特点。一、高效性:有虚拟dom,必然需要diff算法。通过对比新旧虚拟dom,将有变化的地方更新在真实dom上,另外,通过diff高效的执行比对过程,从而降低时间复杂度为O(n)。二、必要性:vue2中为了降低watcher粒度,每个组件只有一个watcher。通过diff精确找到发生变化的节点,并复用相同的节点。下面我们通过手写简易diff算法,来看看具体是怎么实现的吧?比较新旧虚拟节点patch(vnode,newVnode)分为以下几种情况1.标签名

2021-01-14 21:25:36 716

原创 技术分享:你真的很清楚nodejs里的require吗

在日常的前端/Node开发中,require是最常使用的api之一,了解其背后的逻辑有助于我们日常的开发以及排坑。但在阅读源码的时候,我们往往会觉得枯燥无味,看完了,看起来好像也知道了代码是怎么跑,但很难跳出这个流程,去对它进行hack,进行补充。本文不会从头开始讲解require被调用后,里面发生的所有事情,如果你感兴趣,可以自己去源码(node/lib/internal/modules/cjs/loader.js)里翻看,或者自行去网上搜索关键字去阅读别人写的源码解析。本文是希望带给读者在已经大致了

2021-01-11 22:53:23 536

原创 技术分享:JavaScript之深入原型与原型链

一、前言计划写一套JavaScript的深入系列,主要用于JavaScript相关知识点和难点梳理,也是对原有知识的review。 本文主要讲解构造函数、原型、原型链的定义,以及他们之间的关系。如何通过原型对象的内部指针的形成原型链?如何检测原型,原型链等。二、原型1、构造函数在讲解原型前,首先需要知道什么是构造函数,先看一个例子: function Person() {} const p = new Person();复制代码...

2021-01-05 21:13:39 108

原创 分享:JavaScript设计模式实践之发布-订阅模式

概念发布-订阅模式又叫观察者模式。它定义对象间的一种一对多关系,当一个对象的状态发生变化时,所有依赖于它的对象都将得到通知。举个现实生活里的例子,比如说你非常喜欢一个博客,但不知道它什么时候会更新,所以你就每天甚至每隔几小时去看一下是否有更新。如果用上发布-订阅模式,就相当于你关注了该博客的公众号,它有更新的话,你会立马收到一个推送消息。基于此,我们应该很容易联想到dom事件、双向绑定、vuex。确实,在JavaScript语言中,DOM事件、Event对象、Proxy对象等都是发布-订阅模式的

2021-01-04 14:14:50 124

原创 技术更新:重学Vue.js之基本语法篇

话说现如今都2021年了,Vue3都已经发布了,再来写这篇网络上随处可见的文章意义在哪里呢?其实在写之前我也一直在思考这个问题,最后我得出的原因主要有以下几点:1、用vue也做过一些项目,虽然很多功能都能实现,但是总感觉差点意思,没有形成一种知识体系 2、日常开发多数围绕业务展开,没有细细去品味框架文档,导致有的东西可能时间长了会模糊 3、学好Vue3那么熟练掌握基础也是必不可少的 4、正所谓温故而知新,虽然基础的东西可能看似简单,但是通过自己的想法输出出来,并且时长回顾,我认为还是会有意想不到的

2021-01-03 17:23:59 97

原创 技术分享:一文读懂浏览器缓存

浏览器缓存一直是个老生常谈的话题,也是面试官常常用来鉴别面试者的利器,作为前端来讲这块知识是属于必须掌握的,再者利用好缓存也是做性能优化的有效方法。本文将从缓存原因、缓存读写顺序,缓存位置以及缓存策略这几个角度介绍浏览器缓存,并且最后给出实践的应用举例。为什么要缓存很多同学知道缓存的位置和字段,知道怎么用,但是你有没有想过为什么我们的页面需要浏览器缓存呢?缓存可以减少用户等待时间,提升用户体验,直接从内存或磁盘中取缓存数据肯定是比从服务器请求更快的; 减少网络带宽消耗:对于网站运营者和用户

2020-12-31 22:25:02 135

原创 前端js正则使用,正则你今天学会了吗

前言几周没有更新,前期回顾了一下正则,正则在js中的使用,话说自从学前端以来听到过多次这样的“笑话”,程序员分为会正则的和不会正则的。正则基础特殊字符+ 一次或者以上* 0次或者以上{n} n次{n,n} 多少次到多少次. 非回车以外? 转换非贪婪,匹配前面的一次或者零次^ 开始的位置[^] 非() 组| 或复制代码常用 (通常小写匹配大写非)\d 匹配数字[0-9]\W 非数字\r 回车符\n 换行符\s 匹配 \r\n\f等空白符\S 非这些空白

2020-12-29 21:44:40 229

原创 很多人知道 Web Storage,但是你清楚 Cookie 嘛?

Cookie 是什么Cookie 又叫 HTTP Cookie 或者叫浏览器 Cookie。Cookie 的作用是维护服务端和客户端的会话状态,简而言之就是告诉服务器当前客户端用户的一些信息,比如是否登录啥的。Cookie 是如何工作的Cookie 通常是由服务端生成,然后通过响应头的 Set-Cookie 发送给客户端浏览器:HTTP/1.0 200 OKContent-type: text/htmlSet-Cookie: my_cookie=bulandent复制代码浏览器会

2020-12-28 20:38:18 105

原创 技术分享:使用CSS就可以提高页面渲染速度的4个技巧

用户喜欢快速的网络应用,他们希望页面加载速度快,功能流畅。如果在滚动时有破损的动画或滞后,用户很有可能会离开你的网站。作为一名开发者,你可以做很多事情来改善用户体验。本文将重点介绍4个可以用来提高页面渲染速度的CSS技巧。1. Content-visibility一般来说,大多数Web应用都有复杂的UI元素,它的扩展范围超出了用户在浏览器视图中看到的内容。在这种情况下,我们可以使用内容可见性( content-visibility )来跳过屏幕外内容的渲染。如果你有大量的离屏内容,这将大大减少页面渲

2020-12-28 20:31:47 477 1

原创 架构师总结:分享8个非常实用的Vue自定义指令

在 Vue,除了核心功能默认内置的指令 ( v-model 和 v-show ),Vue 也允许注册自定义指令。它的作用价值在于当开发人员在某些场景下需要对普通 DOM 元素进行操作。Vue 自定义指令有全局注册和局部注册两种方式。先来看看注册全局指令的方式,通过Vue.directive( id, [definition] )方式注册全局指令。然后在入口文件中进行Vue.use()调用。批量注册指令,新建directives/index.js文件import copy from ...

2020-12-27 17:02:07 132

转载 实战技术分享:React Hook实战

一、 Hook 简介1.1 Hook历史在React Hook出现之前的版本中,组件主要分为两种:函数式组件和类组件。其中,函数式组件通常只考虑负责UI的渲染,没有自身的状态也没有业务逻辑代码,是一个纯函数。而类组件则不同,类组件有自己的内部状态,界面的显示结果通常由props 和 state 决定,因此它也不再那么纯洁。函数式组件,类组件有如下一些缺点:状态逻辑难以复用。在类组件中,为了重用某些状态逻辑,社区提出了render props 或者 hoc 等方案,但是这些方案对组件的侵入性太强,

2020-12-27 16:57:11 770

原创 技术分享:vue3.0新特性teleport是啥

前言在vue2.0时代,我们经常会有这样的需求,写代码逻辑的时候希望将组件写在某个模板之下,因为这样我们很好的使用组件内部的状态数据,控制组件的展示形态。但是从技术的角度上我们又希望将这段代码移到DOM中Vue app之外的其他位置。举个简单的例子,我们在使用modal组件的时候,我们将它放在了我们的模板template里面,但是由于modal组件希望位于页面的最上方,这时候我们将modal组件挂载在body上面是最好控制的,我们能够很好的通过zIndex来控制modal的位置,当他嵌套在templ

2020-12-26 20:45:48 424

原创 技术分享:Native 与 JS 的双向通信

本文会介绍 Native 应用中 Native 层与 JS 层是如何通信的,以及从通信原理中找到一些需要注意的地方。注意:Webview 控件在不同平台、不同时期有不同的叫法,为了方便,本文统称为 Webview。前置知识:进程间通信进程间通信(IPC,Inter-Process Communication)指的是两个不同的进程相互传递信息。在一个 Native 程序中,嵌入一个 Webview 控件以后,这个 Webview 控件相当于一个小型的浏览器,它会开启 UI 渲染线程、JS 虚拟

2020-12-25 21:22:35 1328

原创 资深架构师分享:10个 Javascript 小技巧帮你提升代码质量

主要介绍以下几点:提炼函数 合并重复的条件片段 把条件分支语句提炼成函数 合理使用循环 提前让函数退出代替嵌套条件分支 传递对象参数代替过长的参数列表 少用三目运算符 合理使用链式调用 分解大型类本文会不断更新,不足之处欢迎评论区补充。1. 提炼函数好处:避免出现超大函数。 独立出来的函数有助于代码复用。 独立出来的函数更容易被覆写。 独立出来的函数如果拥有一个良好的命名,它本身就起到了注释的作用。 语义化将多段分离的逻辑放在不同的函数中实现,可以使代码逻辑清晰,清

2020-12-24 20:16:47 267 2

原创 框架分享:vue3的基本使用方式

vue3的基础使用;安装vite:npm inistall -g create-vite-app利用vite创建vue3项目:create-vite-app projectName安装依赖运行项目:cd projectName npm install npm run dev文档地址:https://v3.vuejs.org/guide/introduction.htmlcomposition API的本质其实就是把setup()中的方法和数据注册到data/methods中;ref定义简单类型

2020-12-22 21:20:11 1293

原创 技术分享:前端篇论管理后端接口的最终方案

前端的一生,离不开三件事,兼容,ui与后端接口。在刚开始工作没多久的时候,看着后端提供的那串玩意就在想,应该怎么样才能优雅的处理这几串东西。在工作的转场中,我试图从别人身上去寻找那份答案,但终究都不是我想要的那份真物。阶段在学习的路上,接触了几种方式各自为政刚刚开始碰到的是游击战模式,接口路径,他在这头,她又在另外一头,有时候他在这头,他还在另外一头。this.$fetch('api/commodity')function login () {------fetch('ap

2020-12-21 21:25:41 324

原创 技术分享:浏览器渲染机制

前言前端仔每天都跟浏览器打交道,那么浏览器到底是怎样渲染的呢?我们都知道,JS是单线程的,也就是只有前一个任务执行完成,才会执行下一个任务。如果前一个任务耗时很长,那么下一个任务就只能干等着。显然,这样是非常浪费资源的。那么就要解决这个问题啦,先来了解一下**「Event Loop」**事件循环。Event Loop我们先来看一下HTML标准的解释:为了协调事件event,用户交互user interaction,脚本script,渲染rendering,网络networking等,用户代理

2020-12-19 17:31:16 98 1

原创 前端技术分享:从Context源码实现谈React性能优化

学完这篇文章,你会收获: 了解Context的实现原理 源码层面掌握React组件的render时机,从而写出高性能的React组件 源码层面了解shouldComponentUpdate、React.memo、PureComponent等性能优化手段的实现 我会尽量将文章写的通俗易懂。但是,要完全理解文章内容,需要你掌握这些前置知识: Fiber架构的大体工作流程 优先级与更新在React源码中的意义 如果你还不具备前置知识,可以先阅读React技术揭秘。

2020-12-18 20:59:25 353 1

原创 架构师分享:弄懂 JavaScript闭包

前言:闭包(Closure)是JavaScript 的一个难点,在面试中经常被问到,而且很多高级应用都要依靠它,所以我想整理一篇关于”闭包“的学习笔记,希望对掘友们起到帮助。函数的执行环境和变量的作用域要理解闭包,首先要理解JavaScript函数的执行环境和变量的作用域。执行环境(Execution Context,也称为"执行上下文")是JavaScript中最为重要的一个概念。执行环境定义了变量或函数有权访问的其它数据,决定了各自的行为。当JavaScript代码执行的时候,会进入不同.

2020-12-17 17:38:59 93 1

原创 前端技术分享:JavaScript 的运算符们

运算符简介运算符的分类按功能可分为: 算术运算符, 位运算符, 关系运算符, 逻辑运算符 按参与运算的操作数的个数分为: 单目运算, 双目运算, 三目运算运算符的优先级和结合性* / % 优先级要高于 + - (小学教的用上错不了)算术运算符什么是算数运算符+ - * / %算术运算符的注意点 加法运算的注意点 任何非数值类型的数据在参与加法运算之前, 都会被自动的转换成数值类型之后, 再参与运算 任何数据和 NaN 进行运算, 结果都是 NaN 任何数

2020-12-16 22:04:24 103

原创 Javascript 设计模式 - 职责链模式

责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推,直到有一个对象处理它为止。这种类型的设计模式属于行为型模式。适用场景职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链.

2020-12-15 17:35:29 145

原创 Vue3 学习笔记之 watchEffect

最近在看 Vue3 的一些新 feature,顺道学习了一些 hooks 编程的思想,感觉挺有启发的。今天就以 watchEffect 这个很小的 case 为例,开启我的 Vue3 学习笔记。Vue2 v.s. Vue3对所有初学者来说,Vue2 到 Vue3 最直观的改变就是 Composition API——几乎所有的 Vue2 options 方法都被放到了 setup 函数里:+ import { onMounted, reactive, watchEffect } from 'vu

2020-12-12 16:46:45 1949 1

原创 前端6道面试题,你掌握了多少?

Proxy在2020年来看Proxy早已经不是一个陌生的词了,他能做的是有很多,尤其在Vue3.0通过Proxy来重构之后,很多面试官喜欢问这个Proxy以及和Object.defineProperty的对比。Proxy是专门为对象设置访问代理器的,通过Proxy可以轻松监视到对象的读写过程,相比于defineProperty,Proxy他的功能要更为强大甚至使用起来也更为方便。这里我们定义一个person对象,我们通过new Proxy的方式来去为我们的person来创建一个代理对象。Pr

2020-12-11 16:29:56 145

原创 技术分享:font-spider(字蛛)的正确打开方式

前言最近在部署vue项目之后,在打开网页的时候,ttf文件下载时间实在是太久了,在经过合理的运用搜索引擎之后,可能自己的固化思维消化不了大佬们给出的方案,于是在他们的基础之上做了一些小小的改动,便叙文记之。1. 引入font-spider的依赖首先我们执行npm install font-spider -g引入依赖, 执行完成后,可以输入font-spider -V来检查是否引入成功2. 在根目录下创建三个文件2.1 fonts这里放入原字体包,Lato-Medium.ttf、Lat

2020-12-10 17:36:50 853

原创 架构师分享:代码整洁之道的 7 个方法

可读的代码是可维护的在这篇短文中,我将介绍一些你可以用来改进你的代码的方法。本文代码示例均使用 JavaScript。我发现但凡是可读的代码必定是可维护的。作为一名开发人员,我的目标是编写高质量的代码。团队中的每个开发人员,不管他/她的技术水平如何,都必须能够通过阅读理解我所写的代码。代码的可读性有助于年轻的开发人员编写代码时更加自信。删除 不必要的 代码注释当然,有些代码可以非常复杂。我深知这一点且见过很多次。在复杂的代码中,我会写些适当的文档和代码注释。别误会。我不是代码注释或

2020-12-09 21:30:06 147

原创 技术分享:一些简单的前端优化方法

CDN原理当用户访问一个网站时, 如果没有CDN, 过程是这样的:浏览器要向域名解析为 IP地址, 所以需要向本地DNS 发起请求 本地DNS依次向根服务器, 顶级域名服务器 ,权威服务器发起请求, 这是一个递归的过程, 得到网站服务器的IP地址 本地DNS将IP地址发回给浏览器, 浏览器向网站服务器IP地址发出请求并得到资源如果用户访问的网站部署了CDN, 过程是这样的:浏览器要将域名解析为IP地址, 所以需要向本地IP DNS发出请求 本地DNS依次向根服务器, 顶级域名服务器, 权

2020-12-09 21:05:00 346

原创 架构师分享:JavaScript 学习笔记

一、JavaScript是什么JavaScript是主要用于客户端的脚本语言,ECMAScript是他的标准。ECMAScript尽管非常重要,但并不是 JavaScript唯一的部分,而且也不是唯一成为标准的部分。JavaScript包括了3个部分:· 核心部分:ECMAScript(里面定义了脚本语言所有的属性,方法和对象!JavaScript,JScript,ActionScript等都是它的一个实现)· 文档对象模型:DOM(貌似是操作 XML,HTML所必需的,把标记当

2020-12-08 21:20:58 79

原创 技术分享:前端性能优化之图片懒加载

类电商类项目,往往存在大量的图片,如 banner 广告图,菜单导航图,美团等商家列表头图等。图片众多以及图片体积过大往往会影响页面加载速度,造成不良的用户体验,所以进行图片懒加载优化势在必行。为什么要进行图片懒加载我们先来看一下页面启动时加载的图片信息。如图所示,这个页面启动时加载了几十张图片(甚至更多),而这些图片请求几乎是并发的,在 Chrome 浏览器,最多支持的并发请求次数是有限的,其他的请求会推入到队列中等待或者停滞不前,直到上轮请求完成后新的请求才会发出。所以相当一部分图片资源

2020-12-08 20:34:29 259

原创 结合简化的vue源码理解双向绑定-渲染的整个流程

Vue中的双向绑定这篇文章用简化的Vue模型和双向绑定基本原理进行讲解,最后会放上Demo代码供大家调试, 要理解双向绑定并不难,看过双向绑定基本原理的同学都可以说出个一二,但很多人都处于:"哇,Object.defineProperty这么神奇,学到了学到了!",但是具体Vue是怎么把它和组件渲染关联的,就有些懵逼。笔者之前也处于这种状态,深有体会,什么?你说你没有这种感觉?!那没事了……所以这篇文章不会深入教你双向绑定基本原理到底是什么,而是默认你对双向绑定有一定的了解,想了解它和Vue渲染过程

2020-12-07 16:54:24 160

原创 Vue组件间通信方式都有哪些?

一、组件间通信的概念开始之前,我们把组件间通信这个词进行拆分组件 通信都知道组件是vue最强大的功能之一,vue中每一个.vue我们都可以视之为一个组件通信指的是发送者通过某种媒体以某种格式来传递信息到收信者以达到某个目的。广义上,任何信息的交通都是通信组件间通信即指组件(.vue)通过某种方式来传递信息以达到某个目的举个栗子我们在使用UI框架中的table组件,可能会往table组件中传入某些数据,这个本质就形成了组件之间的通信二、组件间通信解决了什么在古代,人们通..

2020-12-07 16:32:25 1292

原创 Vue + TypeScript 中基础使用

typescript属于静态类型(static typing),一旦定义了类型,就不可以改变。在vue中使用会帮助我们更快的查找错误,初步学习会有点点头疼,但是熟悉以后会提高代码质量以及工作效率。安装Vue CLI 3 可以使用 TypeScript 生成新工程。创建方式: // 1. 如果没有安装 Vue CLI 就先安装 npm install --global @vue/cli // 创建一个新工程,并选择 "Manually select features (手动选择特

2020-12-04 22:35:29 337

原创 javascript开发神器nodejs

简介javascript虽然一直都可以做服务端编程语言,但是它更多的是以客户端编程语言来展示在世人面前的。也许javascript自己都忘记了还可以做服务器端编程,直到2009年nodejs的横空出世。nodejs的历史javascript作为一门解释性语言,是不需要像C或者C++那样进行编译的。但是在早期的时候,javascript引擎的执行效率是比较低的,所以导致javascript只能做做dom操作。随着ajax的兴起和现代web2.0的技术的发展,主流浏览器开发商尽可能的提升java

2020-12-04 16:15:49 212

原创 React Hook丨真正的逻辑复用

说起逻辑复用,熟悉 react 小伙伴们一口道出了 HOC [高阶组件] 。没错,高阶组件可以实现逻辑复用,在 hook 之前 react 还有挺多不错的方案。那么,让我们来浅谈 HOC 与 自定义 hook。HOC逻辑复用说起HOC,我想到了两个标签:1.【嵌套】2.【一直嵌套】让我们来深入场景,举个例子:以封装一个 input 双向绑定为例我们经常会这样去做一个双向绑定// ...state = { value: 1};onChange = (e: any)

2020-12-03 22:15:00 894 1

原创 前端项目做大了,试试monorepo

第一次接触monorepo是去年年初,说来非常巧合,当时有个活动页的需求,因为webpack配的比较菜,听一哥们说parcel开箱即用写活动页无敌,然后我就去看了。看到parcel用了lerna,这激起了我的好奇,觉得这东西挺玄学,一条命令能帮你安装指定工程下的所有依赖,正好当时在学nodejs也写了一些工具,比如国际化翻译工具、本地mock server、前端页面监控等,把这些工程放在一起,用lerna包起来,只需install一次,就可下载所有依赖,这样就实现n个项目变成一个项目,形成闭环。当然上面

2020-12-03 17:09:10 1267

原创 JavaScript中实用的8个代码片段

1. 反转字符串使用扩展符号...将字符串解析成数组。const reverseString = string => [...string].reverse().join('');reverseString('Medium'); // 'muideM'复制代码2. 数阶乘计算数据的阶乘,使用箭头函数和三元运算符。const factorialOfNumber = number => number < 0 ? (() => { t

2020-12-02 21:06:13 120

原创 H5基于canvas实现电子签名并生成PDF文档

前言电子签名通俗来说就是通过技术手段实现在电子文档上加载电子形式的签名,其作用类似于纸质合同上的手写签名或加盖的公章。虽然电子签名多年来合法性一直遭到质疑,但其在企业工作流审批、请柬、单据保全等场景应用广泛,最近的项目中就有这样一个手写签名并生成PDF文件的需求。实现思路 使用canvas来实现手写签名的功能,然后将canvas转化为图片,贴在签名的位置; 将整个需要生成文档的dom区域使用html2canvas插件转成一张大图; 使用JsPDF插件将上述图片生成PDF文档

2020-12-02 17:11:19 1243 1

原创 HTML总结05(移动适配布局)

1. 为什么要适配适应各种移动端设备,完美呈现应有的布局效果。 各个移动端的涉笔,分辨率不一致,网页想要铺满整个屏幕,需要在各种分辨率下等比缩放。2. 现在主流的开发思路PC端和移动端分开开发 响应式开发,既能适应移动端,也能适应PC端。3. 屏幕尺寸屏幕对角线的长度,单位是英寸 一英寸等于2.54厘米4. 屏幕分辨率像素:由图像的小方格组成,每个小方格都有一个明确的位置和被分配的色彩值。 分辨率:在横纵方向上的像素点,单位是PX,1px=一个像素点,单位是pixels。 屏

2020-12-01 17:39:19 181

原创 实现一个移除 console.log 的 webpack 插件

本文目的,实现一个可以移除项目中 console.log 的 webpack 插件。借此,我们可以学习一下webpack 插件怎么写。本来以为比较简单,但还是花了我一个上午的时间。首先,我们需要初始化环境yarn init -yyarn add webpack webpack-cli -D复制代码webpack.config.js 配置如下:module.exports = { entry: './index.js', plugins: []}复制代码根目

2020-11-30 21:58:49 1453

空空如也

空空如也

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

TA关注的人

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