树 树是一种分层数据的抽象模型。 一个树结构包含一系列存在父子关系的节点。每个节点都有一个父节点(除了顶部的第一个节点)以及零个或多个子节点。 二叉树和二叉树搜索 二叉树中的节点最多只能有两个子节点:一个左侧子节点,另一个是右侧子节点。 二叉树搜...
JavaScript代码出现栈溢出之尾调用优化
说栈溢出之前,我们先来一起学习下调用栈,为什么了 什么是 javascript 调用栈 javascript 引擎是利用栈的这种数据结构来管理执行上下文的。在执行上下文创建好后,javascript 引擎会将执行上下文数据压入栈中,通常把这种用来管理执行上下文件的栈称为执行上下文栈,又...
Chrome 浏览器 document.body.scrollTop 一直为0的问题
最近发现自己博客回到项部功能一直没有出现,经过多方查证,才发现因为document.body.scrollTop一直获取都是0。 不知道从Chrome哪个版本开始,页面最外层的滚动放到document上面去了,而不是body,所以获取需要用 document.documentElement.scrollTop 经查资料,IE、Fir...
vue-cli 之 jest、@vue/test-utils 单元测试实践
安装 vue 项目 安装脚手架 npm install -g @vue/cli 创建项目 vue create vue-demo 安装步骤 用例1:renders 组件 // HelloWorld.vue <template> <div class="hello"> <h1>{{ msg }}</h1> </div> <...
export ‘Switch’ (imported as ‘Switch’) was not found in ‘react-router-dom’
import React from 'react'; import { Switch, Route, Link } from 'react-router-dom'; import Home from './pages/Home'; import About from './pages/About'; export default () => { <div> <Switch> <Route exact path="/" component={Home...
‘NODE_ENV’ 不是内部或外部命令,也不是可运行的程序或批处理文件
scripts 命令 "build:client": "NODE_ENV=development webpack -w" 原因,这是由于 windows 环境需要设置内部命令,这里可以在前面加 set ,可以解决报错,但是启动不了项目。 windows 环境必须安装 cross-env 模块,并在启动命令前安装 npm i -D cross-env ...
Javascript数据结构排序和搜索算法
排序算法 const Compare = { LESS_THAN: -1, BIGGER_THAN: 1, EQUALS: 0 }; function defaultCompare(a, b) { if (a === b) { return Compare.EQUALS; } else { return a < b ? Compare.LESS_THAN : Compare.BIGGER_THAN; } } function swap(arra...
flexible.js 移动端自适应方案
一、官方文档: flexible.js是手淘开发出的一个用来适配移动端的js框架。手淘框架的核心原理就是根据制不同的width给网页中html根节点设置不同的font-size,然后所有的px都用rem来代替,这样就实现了不同大小的屏幕都适应相同的样式了。其实它就是一个终端设备适配的解决方...
immer.js 一个不可变的、结构共享的数据结构是存储状态的绝佳范例
Immer 是 mobx 的作者写的一个 immutable 库,核心实现是利用 ES6 的 proxy,几乎以最小的成本实现了 js 的不可变数据结构,简单易用、体量小巧、设计巧妙,满足了我们对JS不可变数据结构的需求。 在日常开发中,数据的值引用,浅拷贝会修改原始数据困扰了众多开发者。一不...
Javascript数据结构之字典和散列表
字典 集合表示一组不重复的元素,字典和集合相似。但存储方式不同,字典是以【键,值】的形式存储元素,集合是以【值,值】的形式存储元素。 set(key, value):向字典中添加新元素。如果 Key 已经存在,那么存在的 value 会被新的值覆盖hasKey(key):如果某个键值存在于...