- 博客(26)
- 收藏
- 关注
原创 基础15:npm、yarn、pnpm
如果磁盘上没有主目录,那么将在文件系统的根目录中创建该存储。第一, B 的版本是可能随时变化的,假如之前依赖的是C@1.0.1,现在发了新版,新版本的 B 依赖 C@2.0.1,那么在项目 A 当中 npm/yarn install 之后,装上的是 2.0.1 版本的 C,而 A 当中用的还是 C 当中旧版的 API,可能就直接报错了。A依赖B, B依赖C,,那么 A 就算没有声明 C 的依赖,由于有依赖提升的存在,C 被装到了 A 的node_modules里面,在A里面引入C,没什么问题的。
2022-11-16 10:51:23
3135
原创 虚拟DOM解析及其在框架里的应用
虚拟DOM解析及其在框架里的应用浏览器是怎样解析HTML并且绘出整个页面的上图为webkit引擎浏览器的处理流程,如上图大致分为4大步:第一步,HTML解析器分析html,构建一颗DOM树;第二步,CSS解析器会分析外联的css文件和内联的一些样式,创建一个页面的样式表;第三步,将DOM树和样式表关联起来,创建一颗Render树。这一过程又被称为Attachment,每个DOM节点上...
2018-09-28 16:08:49
3886
2
转载 如何实现一个 Virtual DOM 算法
作者:戴嘉华 链接:https://github.com/livoras/blog/issues/13 来源:知乎目录:1 前言2 对前端应用状态管理思考3 Virtual DOM 算法4 算法实现4.1 步骤一:用JS对象模拟DOM树4.2 步骤二:比较两棵虚拟DOM树的差异4.3 步骤三:把差异应用到真正的DOM树上5 结语6
2017-09-13 17:27:22
370
原创 浏览器的多线程理解
浏览器的线程介绍 通常一个浏览器至少有3个常驻线程:js引擎线程(处理js),GUI渲染线程(浏览器页面渲染),浏览器事件触发线程(事件触发控制)。 1.js引擎线程。由于js引擎是基于事件驱动的单线程,所以js引擎会一直等待着任务队列中任务的到来并处理。浏览器无论什么时候都只有一个线程来运行js程序 2.GUI渲染线程。当浏览器界面重绘或者回流时(重绘不一定
2017-09-01 12:30:41
931
原创 浏览器的记录栈和history API的应用
回顾 上篇博客,我使用hashchange函数来监听每次hash改变的时候,记录当前的scrollTop值到sessionStorage中,然后再进入该页面时就看sessionStorage中是否有记录值,如果有就在页面html内容全部加载完成后取出记录值使页面加载到同样的位置,如果没有记录就记录当前的位置。一波简单的操作之后,页面在hash变化的时候,确实能按照我们预期的那样进行着,非第
2017-08-11 10:42:06
3734
原创 SPA应用在hash变化切换页面时,保存上一次该页面浏览的位置
理论支持 该需求是:我们的项目是微信上的spa应用,要求用户在A页面查看内容后,切换到B页面,C页面…在每个页面中查看的位置要保留,在下次切换为该页面时,是从上次浏览结束的位置开始查看,而不是从头开始,从Technology上说这里浏览位置的对应为滚动条距页面顶端的距离(document.body.scrollTop)。 起先我有两种可行性方案: 1.假如有3个页面
2017-08-09 12:02:29
2286
原创 基于vue2框架的机器人自动回复mini-project
这是一个mini-project,主要是基于vue2.0的一个移动端的机器自动回复小项目,下面是我的一个回顾总结https://github.com/xuweikang/rebotChat 1. 项目搭建 在开始该项目之前,使用vue-cli脚手架搭建整个projec//安装vue-clinpm install vue-cli//初始化项目 rebotChat是我的项目
2017-06-12 18:46:51
1630
原创 js几种常见排序的实现
下面主要是对冒泡排序、选择排序、快速排序、插入排序的js实现的回顾。1. 冒泡排序 定义: 比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个 数据交换。 这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。 N=N-1,如果N不为0就重复前面二步,否则排序
2017-04-21 17:28:19
27906
原创 js实现继承的几种方式
先声明一个公共的父类://car类function Car(name){ this.name=name; this.showName=function(){ console.log(this.name); }}//原型方法Car.prototype.showPrice(price){ console.log(this.name+'卖'+thi
2017-04-19 16:07:19
446
转载 Javascript中构造函数与new命令
转载自:http://www.cnblogs.com/Uncle-Keith/p/5803551.htmlJavascript中构造函数与new命令典型的面向对象编程语言(比如C++和Java),存在“类”(class)这个概念。所谓“类”就是对象的模板,对象就是“类”的实例。但是,在JavaScript语言的对象体系,不是基于“类”的,而是基于构造函数(constructor)和原型链(proto
2017-04-19 14:45:01
425
原创 js作用域链和闭包的理解
最近在做一个面试题时,无意中看到了一个闭包的题目,题目很简单,就是一个ul标签下面有多个li,给每个li添加点击事件,要求点击每个li弹出该li是第几个li。作为一个在前端面试中身经百战(lv zhan lv bai)的coder(lowser)来说,我当然知道要使用闭包来解决这个问题,具体代码如下: var li=document.getElementsByClassName('liClass'
2017-04-19 11:31:12
538
1
原创 webpack和gulp使用总结
什么是前端工程化?随着前端行业的发展,现在的前端越来越像一个大工程,从几年前前端的webPage模式(写写单页面,jquery,使用几个插件网页就建成),到现在的webapp模式(一个完整的app软件开发),前端可谓是经历了翻天覆地的大变化。随着web业务的日益复杂化和多元化,以前以webpage模式为主的开发模式,已经不能够满足现在的需求,那么如何做到更效率更自动化的前端软件开发,前端工程化应运而
2017-04-17 11:44:03
2479
2
原创 vue2中使用axios http请求出现的问题解决
使用axios处理post请求时,出现的问题解决默认情况下: axios.post(url, params).then(res => res.data);当url是远程接口链接时,会报404的错误: Uncaught (in promise) Error: Request failed with status code 404因为axios默认的header是: axios.defaults.h
2017-03-16 10:38:08
52300
1
原创 nodeJs+express+mongoDB开发个人博客
项目简介本项目是基于nodeJs开发的一个个人博客系统,由于此前对于node的不熟,总共历时3周时间(平时有点懒…),一边学习其语法,一边开发博客系统,由于其博客是仿照优快云博客开发的,所以如果有一种优快云的既视感,请不要吐槽…该博客支持多人注册,首页按照博客发表时间,点击次数排行来更新首页内容用户可注册账户并登陆,可以发表自己的博客文章,选择或者添加自己的分类个人中心(由于当时开发的着重
2017-01-09 17:12:42
8655
2
原创 详谈JavaScript的模块化开发
到底什么是模块化?如今backbone、emberjs、spinejs、batmanjs 等MVC框架侵袭而来。CommonJS、AMD、NodeJS、RequireJS、SeaJS、curljs等模块化的JavaScript扑面而来。web前端已经演变成大前端,web前端的发展速度之快。 模块化是一种将系统分离成独立功能部分的方法,可将系统分割成独立的功能部分,严格定义模块接口、模块间具有透明
2016-12-06 20:54:18
702
原创 es6新特性
ECMAScript发生了哪些变化JavaScript是ECMAScript的实现和扩展,由ECMA(一个类似W3C的标准组织)参与进行标准化。ECMAScript定义了: 语言语法 – 语法解析规则、关键字、语句、声明、运算符等。 类型 – number,string,null,undefined,bool(5种基本数据类型) 原型和继承 内建对象和函数的标准库 – JSON
2016-12-06 14:02:08
959
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人