Javascript

js数组和树互转

1.数组转树constarr=[{id:1,parentId:null,name:'a'},{id:2,parentId:null,name:'b'},{id:3,parentId:1,name:'c'},{id:4,parentId:2,name:'d'},{id:5,parentId:1,name:'e'},{id...
代码星球·2020-06-29

js的uuid

代码一:/*!Math.uuid.js(v1.4)http://www.broofa.commailto:robert@broofa.comCopyright(c)2010RobertKiefferDuallicensedundertheMITandGPLlicenses.*//**Generatearandomuui...
代码星球·2020-06-29

JSBridge原理

JSBridge就是Native和js之间的桥梁,支持两者之间互相调用。双向通道:JS向Native发消息:调用Native的功能,拍照,扫码,定位等Native向JS发消息:返回小勇结果,推送消息,通知JS当前Native状态等原理:JS调用Native的常见方法有2种:1.注入API注入API,是通过WebView...
代码星球·2020-06-29

nodejs性能分析

方案1v8-profiler1.v8-profiler添加node性能收集埋点2.Apachebench压力测试ab-t300-c10-ppost.txt-T"application/json"http://localhost:8008/xxx3.v8-profiler收集得到cpuProfile4.用chrome的开...
代码星球·2020-06-29

nodejs调试方法

node--debug/--debug-brk(node8.0之前)node--inspect/--inspect-brk(node8.0之后)带-brk,会默认停止在第一行,可以继续调试。不带,则会一下子执行完,若只是执行一段代码,没有线程持续运行,则会很快执行完毕,没有机会去调试启动之后,打开chrome的开发者工...
代码星球·2020-06-29

nodejs模块路径alias

nodejs的模块引用,使用相对路径,会造成写一堆../,非常不便。有2种好的修改方式:1. NODE_PATH设置路径别名"scripts":{"start":"cross-envNODE_PATH=.;./modnodeindex.js",}NODE_PATH的路径用分号(Windows)或冒号(MacO...
代码星球·2020-06-29

js自定义事件

CustomEventevent=newCustomEvent(typeArg,{detail:''//数据bubbles:true,//是否支持冒泡cancelable:true//是否支持取消事件});1.用法//定义事件varevent=newCustomEvent('student',{detail:{hasS...
代码星球·2020-06-29

js位运算符的应用

x|0,x>>0,~~x这3种运算符都可以取整1.取整,正数取地板值Math.foor,负数取天花板值Math.ceil2.非数字转为0,null和undefined转换为0x>>>01.取整,正数取地板值,负数无用2.非数字转为0,null和undefined转换为0~x1.-1转为02...
代码星球·2020-06-29

js大数相加和大数相乘

1. 大数相加functionaddBigNum(a,b){varres='',loc=0;a=a.split('');b=b.split('');while(a.length||b.length||loc){//~~把字符串转换为数字,用~~而不用parseInt,是因为~~可以将undefined转换为0...
代码星球·2020-06-29

ES6模块和commonjs模块的区别

1.commonjs模块输出的是值的浅拷贝,ES6模块输出的是值的引用(也就是说,cmmonjs模块输出后被改变,其他引用模块不会改变,而ES6模块会改变)2.commonjs模块是运行时加载,而ES6模块是编译时输出接口,之所以webpack的tree-shaking只能作用于ES6模块,就是因为ES6模块在编译时就...
代码星球·2020-06-29

jquery源码基本结构和插件写法

1.jquery源码基本结构(function(w){//工厂functionjQuery(selector,context){//直接返回一个new实例,这样可以隐藏new过程,使用jQuery('#id')创建对象,而不是newjQuery('#id')returnnewjQuery.fn.init(selecto...

nodejs的流总结

流是可读的、可写的,或可读可写的。所有的流都是EventEmitter的实例。stream的基本概念,即source->管道->dest这个模型图。流的常见的来源方式主要有三种:1.从控制台输入2.http请求中的request3.读取文件流的常见输出方式主要有三种:1.输出到控制台2.http请求中的re...
代码星球·2020-06-29

nodejs多线程

Nodejs一直以单线程异步IO著称,擅长IO密集型操作,不擅长CPU密集型操作。但是,新版的Nodejs,在不断弥补这方面的短板。在Node10.5.0,官方给出了一个实验性质的模块worker_threads给Node提供了真正的多线程能力在Node.js12.11.0,worker_threads模块正式进入稳定...
代码星球·2020-06-29

nodejs进程间通信

nodejs进程间通信常用的有4种方式1.stdin/stdout  stdin和stdout可以传递json,双方在标准输入输出中读写json,但是进程间要知道对方的句柄,VSCode使用了这种方式2.原生IPC    on('message')和send,...
代码星球·2020-06-29

nodejs多进程spawn execFile exec fok方法的区别

1.spawn创建新进程,执行结果已流的形式返回,只能通过事件来获取结果数据,操作麻烦constspawn=require('child_process').spawn;constls=spawn('ls',['-lh','/usr']);ls.stdout.on('data',(data)=>{console....