05 2020 档案
摘要:4.x版本有如下特性: 1. 模块化 不再是一个整体,而是分为多个模块,可以按需加载,例如: d3-selection 选择器d3-shape 图形d3-array 数组d3-force 力导向图d3-zoom 缩放 2. 支持canvas 3. 命名精简和更语义化 布局省去layout,生成器省去
阅读全文
摘要:1. 提示框 基本原理: 用一个dom元素来显示提示框,提示框绝对定位,在相关事件中,动态修改提示框的位置即可。 通常是用 event 的 pageX 和 pageY 修改 提示框定位。 2. 折线图的焦点虚线 在鼠标滑动到折线图焦点时候,通常要显示到Y轴和X轴的虚线。 此时,需要监听划过区域的事件
阅读全文
摘要:d3的布局,实际上是一个转换函数,将 原始数据 转换为 该布局需要的数据。 并不能直接通过布局生成图形,仍然需要自己根据数据去添加图形。 1.常用布局有12种 直方图(Histogram)饼状图(Pie)力导向图(Force)弦图(Chord)捆图(Bundle)堆栈图(Stack) 层级图(Hie
阅读全文
摘要:1. 文件导入 d3本身对ajax有封装,可以请求多种格式的文件,读取其data。 1. d3.json() 请求json文件2. d3.csv(), d3.tsv() 请求CSV, TSV文件3. d3.xml() 请求xml文件4. d3.html() 请求html文件5. d3.text()
阅读全文
摘要:1. 事件监听 selection.on('eventName',function(){}) //添加事件监听selection.on('eventName',null) //移除事件监听 过渡对象没有监听器,transition.on 会报错 2. 常用事件 2.1 鼠标 clickmouseov
阅读全文
摘要:d3的动画关键是 transition 过渡对象。 1. 创建过渡对象有两种方式 1. d3.transition2. selection.transition 过渡对象与选择对象是两个对象,方法和属性有差别。 2. 过渡对象的常用方法 transition.delay 延迟开始transition
阅读全文
摘要:在C:\Program Files\Vim目录下的 _vimrc文件中,插入基本配置,包括中文乱码,行号和主题。 " Vim with all enhancements source $VIMRUNTIME/vimrc_example.vim " 解决中文乱码 set encoding=utf-8
阅读全文
摘要:1. 颜色绘制 d3.rgb(r,g,b) 获取一个rgb颜色对象d3.rgb(color) rgb.brighter() 颜色变亮 rgb.darker() 颜色变暗 rgb.hsl() 返回该颜色的HSL值 rgb.toString() 以字符串形式返回颜色,例如 #ffeeaa 2. 图形绘制
阅读全文
摘要:1. 比例尺 比例尺的关键概念:定义域和值域,比例尺本质就是一个函数。 常用比例尺有: 1.1 线性比例尺 d3.scale.linear() 1.2 指数比例尺 d3.scale.pow().exponent(x) x为指数 1.3 对数比例尺 d3.scale.log() 1.4 量子比例尺 d
阅读全文
摘要:1. 首先将需要打包的文件打包为dll 需要一个打包配置 webpack.dll.js const webpack = require('webpack') const path = require('path') module.exports = { entry: { react: ['react
阅读全文
摘要:项目中的文件多了,开发模式实时编译,会变得很慢,影响开发效率。很多模块是不相干的,没必要同时启动,这个时候就需要 只启动项目的某个文件夹。 例如: src --pages --pageA --index.js --index.ejs --pageB --index.js --index.ejs --
阅读全文
摘要:1. 选择集自身属性 1. selection.empty() 选择集是否为空,为空返回true,否则返回false 2. selection.node() 返回第一个非空元素,无则返回null 3. selection.size() 返回选择集中的元素个数 2. 选择集元素属性 1. attr 设
阅读全文
摘要:d3是基于数据绑定的思想的,选择器选择元素,然后元素与数据绑定。由于元素与数据未必数量一致,会产生,元素多于数据或元素少于数据。 元素与数据一一对应,是 update 部分,表示已经存在的元素,用于更新元素少于数据,是enter部分,表示即将进入的元素,即缺少的元素,用于添加元素多于数据,是exit
阅读全文
摘要:1. node内存泄漏情形 1.1 全局变量 全局变量不会被回收,需要手动设置为null或undefined 1.2 闭包 function out() { const bigData = new Buffer(100); inner = function () { void bigData; }
阅读全文
摘要:1. 服务端渲染2个优点 和 缺点 1.1 服务端渲染可以减少白屏时间 服务端渲染,客户端接收到html,可以直接显示 客户端渲染,客户端接收到html,解析完毕,还要向服务端去请求js文件,返回后,执行完js,才能显示完成 因此,服务端渲染,白屏时间短。 1.2 服务端渲染利于SEO 有清晰的ht
阅读全文
摘要:ts可以使用泛型来做类型映射,将对象或数组中类型转换为另一个类型。 例如: 定义一个类型 interface Student{ name: string, age: number } 1. 把一个类型的每个属性都变为可空的 type Nullable<T> = { [p in keyof T]: T
阅读全文
摘要:编程语言的子类型,分为两种: 名义子类型 Java和C#中就是名义子类型,必须显示继承,用来extends才是子类型 结构子类型 只要结构相同,就是子类型 typescript是结构子类型。 type Foo = { age: number } 和 type Bar = { age: number
阅读全文
摘要:1. type可以声明 基本类型,联合类型,元组 的别名,interface不行 // 基本类型别名 type Name = string // 联合类型 interface Dog { wong(); } interface Cat { miao(); } type Pet = Dog | Cat
阅读全文
摘要:1. 声明合并 ts声明的重名的类或命名空间,会进行合并 类合并 interface Box { height: number; width: number; } interface Box { scale: number; } let box: Box = {height: 5, width: 6
阅读全文
摘要:1. 基础类型 有12种 布尔值 let isDone: boolean = false; 数字 let dec: number = 6; 字符串 let name : string = 'bob'; 数组 let list: number[] = [1, 2, 3]; 元组 let x : [st
阅读全文
摘要:1. JavaScript高级程序设计 (红宝书) 2. JavaScript权威指南 (犀牛书)
阅读全文
摘要:1. 选择集 d3.select() //选择第一个 d3.selectAll() //选择全部 2. 绑定数据 datnum() //绑定一个数据到选择集上 data() //绑定一个数组到选择集 3. 输出数据 var body = d3.select("body"); var p = body
阅读全文
摘要:Array.map的参数 Array.map((item,index,arr) => {}, thisValue) map的callback参数分别是数据项,索引,数组本身,thisValue可以指定callback中的this值 parseInt的参数 parseInt(str, radix) 该
阅读全文
摘要:首先明确,首屏和白屏的时间计算,没有明确的API可以得到。 白屏 = 开始显示body的时间 - 开始请求的时间 首屏 = 首屏内容渲染结束的时间 - 开始请求的时间 具体计算方法如下: 1. 白屏 支持performance api,开始请求的时间 performance.timing.navig
阅读全文
摘要:两种可行的办法 1. 多套不同主题的css 用less/sass变量代替颜色值,用编译工具生成主题文件 theme-dark.csstheme-green.css 切换文件使用,不要append link,直接修改原有theme的link的href,就行了 //根据不同的企业用户加载不同的css d
阅读全文
摘要:文件上传总结 文件上传的方式有哪些(Flash已经淘汰,不再提及) 目前常用的只有2种 1. form上传 就是使用 inputFile 控件,form的enctype必须是 multipart/form-data <form method="post" action="http://uploadU
阅读全文
摘要:代码一: /*! Math.uuid.js (v1.4) http://www.broofa.com mailto:robert@broofa.com Copyright (c) 2010 Robert Kieffer Dual licensed under the MIT and GPL lice
阅读全文
摘要:drag事件用法 html5的drag事件总共有 7 个,还有一个事件传递对象 拖曳目标对象 ondragstart 拖曳开始ondrag 拖曳中ondragend 拖曳结束 释放对象 ondragenter 进入释放目标ondragover 在目标中拖曳ondragleave 离开释放目标ondr
阅读全文
摘要:JSBridge就是Native和js之间的桥梁,支持两者之间互相调用。 双向通道: JS向Native发消息:调用Native的功能,拍照,扫码,定位等Native向JS发消息:返回小勇结果,推送消息,通知JS当前Native状态等 原理: JS调用Native的常见方法有3种: 1. 注入API
阅读全文
摘要:监听事件 Chrome DevTools命令行API提供了多种方式来观察和检查事件监听器。JavaScript在交互式页面中起着中心作用,并且浏览器为您提供了一些有用的工具来调试事件和事件处理程序。 TL;DR 使用monitorEvents()监听某一类型的事件。 使用unmonitorEvent
阅读全文
摘要:方案1 v8-profiler 1. v8-profiler 添加node性能收集埋点 2. Apachebench压力测试 ab -t 300-c 10-p post.txt -T "application/json" http://localhost:8008/xxx 3. v8-profile
阅读全文
摘要:Apachebench Apachebench是apache附带的一个性能测试工具,一款轻量级的压力测试工具。ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问。 安装 apache,在 C:\Program Files\Apache Group\Apache2\bin目录
阅读全文
摘要:1. 使用 performance monitor 实时查看内存变化 查看 JS Heap size 和 DOM Nodes的数量,如果持续升高,则表明内存泄漏 2. 使用 memory 面板分析内存变化 memory有3种方式,可以分析内存: 1. Heap snapshot - 用以打印堆快照,
阅读全文
摘要:nodejs的模块引用,使用相对路径,会造成写一堆../,非常不便。 有2种好的修改方式: 1. NODE_PATH设置路径别名 "scripts": { "start": "cross-env NODE_PATH=.;./mod node index.js", } NODE_PATH的路径用分号(
阅读全文
摘要:IDC 卖硬件,服务器托管和租赁,机柜为主,偏大型 IaaS (Infrastructure as Service) 基础设施即服务,卖硬件,机房,服务器,租赁单位更小,更灵活 PaaS (Platform as Service) 平台即服务,卖操作系统,包括 数据库软件,Web服务器,负载均衡器等
阅读全文
摘要:单点登录常用有3种方式: 1. 主域名共享cookie 适用于同域名系统的单点登录。所有的子系统域名共享一个主域名的cookie,这样就可以实现登录一个系统,所有系统登录。 例如,a1.test.com, a2.test.com, 登录其中一个系统,设置.test.com的cookie,就可以实现其
阅读全文
摘要:webSocket是基于TCP的一种协议,与HTTP一样是应用层协议。 webSocket有以下几个特点: 1. 基于TCP,服务端比较容易实现。2. 与HTTP协议有着良好的兼容性。默认端口也是80或443。握手阶段使用http协议,因此握手不容易被屏蔽,能通过各种HTTP代理服务器。3. 数据格
阅读全文
摘要:React的事件处理使用合成事件(SyntheticEvent),不是原生事件。 1. 合成事件的异步访问 合适事件为了节约性能,使用对象池。当一个合成事件对象被使用完毕,即调用该对象的同步代码执行完毕,该对象会被再次利用。其属性会被重置为null。所以异步访问合适事件的属性,是无效的。 解决方法有
阅读全文
摘要:1. mobx是基本概念 Observable //被观察者 Observer //观察者 Reaction //响应 1.1 在被观察者和观察者之间建立依赖关系 通过一个Reaction来track一个函数,该函数中访问了Observable变量,Observable变量的get方法会被执行,此时
阅读全文
摘要:标准浏览器自定义事件 document.createEvent() event.initEvent() element.dispatchEvent() 自定义事件的函数有 Event、CustomEvent 1、Event // 向 window派发一个resize内置事件 window.dispa
阅读全文
摘要:1. React16废弃的生命周期有3个will: componentWillMount componentWillReceiveProps componentWillUpdate 废弃的原因,是在React16的Fiber架构中,调和过程会多次执行will周期,不再是一次执行,失去了原有的意义。此
阅读全文
摘要:1. 分组 () 包裹的就是分组,可以得到结果,或者进行交换等整体操作 2. 捕获 () 分组默认就是捕获组,(?:) 加上?:,就是非捕获组,只参与匹配,整体结果中会存在,消耗字符,分组不会在结果中,节约性能 3. 环视 (?=) (?!) (?<=) (?<!) 有4种环视,分别可以正向和反向,
阅读全文
摘要:1. import import(/* webpackPrefetch: true,webpackChunkName: "yourFileName",webpackPreload: true */ 'LoginModal') import ( /* webpackChunkName: "yourFi
阅读全文
摘要:1. React.lazy的用法 React.lazy方法可以异步加载组件文件。 const Foo = React.lazy(() => import('../componets/Foo)); React.lazy不能单独使用,需要配合React.suspense,suspence是用来包裹异步组
阅读全文
摘要:1. 代码覆盖率 Coverage 打开chrome DevTools,ctrl + shift + p,输入coverage命令,回车,调出coverage面板 进行录制,即可分析,加载或执行期间的,js被执行到情况,未被执行的js,就是可以优化的点,可以移除死代码,或懒加载非必要代码 2. CP
阅读全文
摘要:1. Vue.extend Vue.extend就是传入一下组件options,然后返回了一个Vue的子类,也可以看做是一个组件构造函数。 真的是一个Vue的子类,源码中,使用原型集成和Copy属性和方法形式,将其继承自Vue。 const Sub = function VueComponent (
阅读全文
摘要:1. 加载优化 1. 压缩合并2. 代码分割(code spliting),可以基于路由或动态加载3. 第三方模块放在CDN4. 大模块异步加载,例如: Echarts,可以使用require.ensure,在加载成功后,在显示对应图表5. 小模块适度合并,将一些零散的小模块合并一起加载,速度较快6
阅读全文
摘要:vue组件 countdown.vueindex.js import countdown from './countdown.vue' export {countdown} 从.vue文件直接引入组件,导出即可,组件就是一堆vue对象的options vue插件 插件的方便之处,就是可以在insta
阅读全文
摘要:vue指令(directive)一般用于直接对DOM元素进行操作。 vue中已经提供的指令有很多:v-text, v-html, v-bind, v-on, v-model, v-if, v-show 等等 1. 指令的定义形式 // 注册一个全局自定义指令 `v-focus` Vue.direct
阅读全文
摘要:retry(pf,{ times: 3, //每次延迟 delay: 1000, //每次延迟增量 increment: 1000, shouldRetry: (err,opts) => { //判断是否应该继续 return true; }, onRetry: (data) => { //收集er
阅读全文
摘要:1. 重定向命令 > 输出重定向覆写>> 输出重定向追加2> 错误重定向覆写2>> 错误重定向追加&> 输出和错误作为同一个流重定向覆写&>> 输出和错误重定向追加< 从文件中提取输入信息<< 从标准输入中读入,直到遇到分解符才停止 set -C 禁止覆写set +C 允许覆写 2. 管道命令 co
阅读全文
摘要:linux下不同类型的文件有不同的颜色 绿色文件: 可执行文件,可执行的程序 红色文件:压缩文件或者包文件 蓝色文件:目录 白色文件:一般性文件,如文本文件,配置文件,源码文件等 浅蓝色文件:链接文件,主要是使用ln命令建立的文件 红色闪烁:表示链接的文件有问题 黄色:表示设备文件 灰色:表示其他文
阅读全文
摘要:1. rwx权限方式 ls -l 可以看到文件的详细信息,其中第一项,就是该文件的类型和权限。 一个十位标志,rwx十位权限法。 第一位是文件类型,有5种: - 普通文件d 目录b 块设备l 链接c 字符设备p 管道文件 后面9位是文件权限,分别是 文件属主权限,用户组权限,其他用户权限 权限类型有
阅读全文
摘要:performance支持多种类型的Timing 常见的Timing有以下几类: 1. 页面加载 Navigation timing 该对象能够帮助网站开发者检测真实用户数据(RUM),例如带宽、延迟或主页的整体页面加载时间。 用performance.timing可以取到到该对象。 这两个API非
阅读全文
摘要:1. ls ls -al 所有文件,包括隐藏文件,显示文件的详细信息ls -d yy* 以yy开头的所有目录ls yy* 以yy开头的所有文件,等价于 ls | grep yy*ls /dev/vcs* dev目录下的所有vcs开头的文件ls *.* 查找所有带点的文件,等价于 ls | grep
阅读全文
摘要://50ms节流方案 let lazyLoadThrottle = throttle(lazyLoad,50); window.addEventListener('scroll',lazyLoadThrottle); //raf的一帧节流方案 var isScroll = true; window.
阅读全文
摘要:transition 过渡动画,有4个属性: (1) transition-property:属性名称(2) transition-duration: 间隔时间(3) transition-timing-function: 动画曲线(4) transition-delay: 延迟 animation
阅读全文
摘要:抛物线动画的原理,就是用两个元素,子元素会继承父元素的运动,将父元素在横向运动,子元素在纵向运动,子元素会形成一种双向运动。而父元素在横向上是匀速运动,子元素在纵向上是变速运动,可以使用贝塞尔曲线来定义运动,二者合成,就能出现一个曲线运动。具体的曲线,跟选择的贝塞尔函数有关,调整好,就可以形成抛物线
阅读全文
摘要:x | 0,x >> 0,~~x 这3种运算符都可以取整 1. 取整,正数取地板值Math.foor,负数取天花板值Math.ceil2. 非数字转为0,null和undefined转换为0 x >>> 0 1. 取整,正数取地板值,负数无用2. 非数字转为0,null和undefined转换为0
阅读全文
摘要:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv
阅读全文
摘要:1. commonjs模块输出的是值的浅拷贝,ES6模块输出的是值的引用 (也就是说,cmmonjs模块输出后被改变,其他引用模块不会改变,而ES6模块会改变) 2. commonjs模块是运行时加载,而ES6模块是编译时输出接口,之所以webpack的tree-shaking只能作用于ES6模块,
阅读全文
摘要:1. 大数相加 function addBigNum(a,b){ var res = '', loc = 0; a = a.split(''); b = b.split(''); while(a.length || b.length || loc){ //~~把字符串转换为数字,用~~而不用pars
阅读全文
摘要:1. 爬楼梯问题 问题: (https://leetcode-cn.com/problems/climbing-stairs/solution/pa-lou-ti-by-leetcode/) 假设你正在爬楼梯,需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶,你有多少种不同的方法可以爬
阅读全文
摘要:koa-compose是koa中间件的核心部分, 控制着中间件的执行流程, 造就了经典的洋葱模型。 module.exports = compose function compose(middleware) { //首先是参数类型检查,不符合就抛错 //middleware必须是数组 if (!A
阅读全文
摘要:1. 语法区别 experss 异步使用 回调koa1 异步使用 generator + yeildkoa2 异步使用 await/async 2. 中间件区别 koa采用洋葱模型,进行顺序执行,出去反向执行,支持context传递数据express本身无洋葱模型,需要引入插件,不支持context
阅读全文
摘要:1. 实现一个add方法 add(1)(2,3)(4).value() //输出: 10 分析:对柯里化函数进行改造 原curry函数 function curry(f,...args1){ const inner = (...args2) => { const args = [...args1,.
阅读全文
摘要:1. 单继承 // Shape - 父类(superclass) function Shape() { this.x = 0; this.y = 0; } // Rectangle - 子类(subclass) function Rectangle() { //借用父类构造函数 Shape.call
阅读全文
摘要:1. 用performance分析前端页面性能 从这张经典的图里,我们可以大致看到一个网页从url输入到主要资源加载完成的主要过程:获取 url -> 重定向 -> 服务端缓存 -> DNS查询 -> 建链 -> 文档传输 ->** 文档资源解析和处理 **-> 主要资源加载完成。传统的前端秒开性能
阅读全文
摘要:题目: 有7g,2g砝码各一个,天平一只,如何只用这些物品三次将140g的盐分成50g,90g各一份? 分析: 天平本身可以平均分配盐,做平均分,无需砝码。砝码和盐配合,可以得到新的盐重。 解法1: 不用砝码,将 140 g 盐用天平分成 70g + 70g 不用砝码,将 70 g盐用天平分成 35
阅读全文
摘要:nodejs中,模块的导出有两种方式 //方式1 exports.[function name] = [function name] //方式2 moudle.exports= [function name] exports的对module.exports的引用,所以两种导出方式相同。 但是如下的方
阅读全文
摘要:webpack的支持多种hook,每次编译,各个hook阶段都会执行一次。 ProgressPlugin可以监控各个hook执行的进度percentage,输出各个hook的名称和描述。 percentage: a number between 0 and 1 indicating the comp
阅读全文
摘要:内存中的栈和堆,与数据结构中栈和堆是两码事。 内存中分为栈,堆,静态存储区,程序代码区。 1. 空间上 栈:空间小,远小于堆内存,所以常有栈溢出错误。主要存放 函数地址,函数参数,局部变量等。堆:空间大,主要存放new出来的对象和malloc申请的空间 2. 释放方式上 栈:由系统自动申请和回收,只
阅读全文
摘要:1. jquery源码基本结构 (function(w){ //工厂 function jQuery(selector, context){ //直接返回一个new实例,这样可以隐藏new过程,使用jQuery('#id')创建对象,而不是new jQuery('#id') return new j
阅读全文
摘要:只读属性MouseEvent.relatedTarget 是鼠标事件的次要目标(如果存在),它包括: 事件名称 target relatedTarget focusin EventTarget 获取焦点 EventTarget 失去焦点 focusout EventTarget 失去焦点 The E
阅读全文
摘要:1. Tree-shaking只对ES Module起作用,对于commonjs无效,对于umd亦无效 因为tree-shaking是针对静态结构进行分析,只有import和export是静态的导入和导出。而commonjs有动态导入和导出的功能,无法进行静态分析。 如下代码,只有运行代码的时候才能
阅读全文
摘要:1、题目描述 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子
阅读全文
摘要:1. 301 永久重定向,当此URL要废弃时候,使用2. 302 临时重定向,当客户端发送post请求,返回302,浏览器要询问用户是否用post方式重定向。也有很多浏览器,不询问用户,直接用get重定向。3. 303 临时重定向,与302的区别是,post请求返回303,不再询问用户,直接用get
阅读全文
摘要:cookie有9个属性: Name: cookie名Value: cookie值Domain: cookie的域。如果设成.test.com,那么子域名a.test.com和b.test.com,都可以使用.test.com的cookiePath: cookie的路径,一般设置成/即可Expires
阅读全文
摘要:1. fetch的语法简洁,更语义化2. 基于promise,支持async/await3. 同构方便,使用isomorphic-fetch 4. fetch请求可以在前端拦截301,302等跳转,予以处理,xhr请求不能拦截,浏览器会自动跳转,只能拿到跳转后的结果 Fetch的缺点: 1. fet
阅读全文
摘要:计算机网络分层有几种模型 OSI的七层模型 TCP/IP五层模型 TCP/IP四层模型
阅读全文
摘要:vue和react的diff算法,都是忽略跨级比较,只做同级比较。vue diff时调动patch函数,参数是vnode和oldVnode,分别代表新旧节点。 1. vue比对节点,当节点元素类型相同,但是className不同,认为是不同类型元素,删除重建,而react会认为是同类型节点,只是修改
阅读全文
摘要:nginx常用负载均衡算法有6种: nginx本身支持4种:轮询(round robin), 加权轮询(weight round robin), ip_hash, 最小连接(least_conn) 第三方模块,支持2种:最快响应时间(fair), url_hash 1. 轮询(round robin
阅读全文
摘要:1. react更多的是进行视图转换,对状态涉及很少,vue除了处理视图,本身还会管理状态,例如,watch,compouted等2. react不会自动更新视图,只能手动setState,vue基于数据驱动,会自动更新视图3. react更倾向于函数式编程,vue倾向于响应式编程4. 虚拟DOM更
阅读全文
摘要:1. 插件目录结构 src| index.jsbabel-plugin-test| index.jsjs.babelrc(可选)package.json 2. 插件调试 在本目录下安装babel-cli,或者全局安装babel-cli npm babel-cli -D 本目录安装,不能直接在shel
阅读全文
摘要:流是可读的、可写的,或可读可写的。所有的流都是EventEmitter的实例。stream 的基本概念,即 source -> 管道 -> dest 这个模型图。 流的常见的来源方式主要有三种: 1. 从控制台输入2. http 请求中的 request3. 读取文件 流的常见输出方式主要有三种:
阅读全文
摘要:window.URL 主要作用是读取文件的字符串,在img或video等带有src属性的标签上展示。 1. 静态方法 objectURL = createObjectURL(object) //object是file或blob 从文件获取url,这些文件可能来自本地硬盘从<input type="f
阅读全文
摘要:MessageChannel,顾名思义,通信管道,可以实现两端的通信。 基本用法: var channel = new MessageChannel(); var port1 = channel.port1; var port2 = channel.port2; port1.onmessage =
阅读全文
摘要:Nodejs一直以单线程异步IO著称,擅长IO密集型操作,不擅长CPU密集型操作。但是,新版的Nodejs,在不断弥补这方面的短板。 在 Node 10.5.0,官方给出了一个实验性质的模块 worker_threads 给 Node 提供了真正的多线程能力 在 Node.js 12.11.0,wo
阅读全文
摘要:Stream,流,这个概念,类似于水流,是对传输过程的一个抽象。 我们要把一堆东西从出发地(source)转移到目标地(dest): 一种方法,一次性把东西全部运过去,这在数量比较少,重量比较轻,时候可以实现。而大多数情况下,这个难以做到。 比如,有10吨苹果,要一次性运送,这个难度就太大了。于是,
阅读全文
摘要:nodejs进程间通信常用的有4种方式 1. stdin/stdout stdin和stdout可以传递json,双方在标准输入输出中读写json,但是进程间要知道对方的句柄,VS Code使用了这种方式2. 原生IPC on('message')和send,条件是进程间要知道对方的句柄3. soc
阅读全文
摘要:1. spawn 创建新进程,执行结果已流的形式返回,只能通过事件来获取结果数据,操作麻烦 const spawn = require('child_process').spawn; const ls = spawn('ls', ['-lh', '/usr']); ls.stdout.on('dat
阅读全文
摘要:socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。 socket现在已经演化为一种通信规范。计算之间的通信,甚至进程间的通信都可以使用这种编程规范。不同的地方实现该规范的方式不同
阅读全文
摘要:1. 定义属性的两种形式 //1 var obj = {}; obj.name = 'ming'; //相当于 Object.defineProperty(obj,'name',{ value : 'ming', writable: true, configurable: true, enumera
阅读全文