Array.prototype.sort在不同的宿主环境,不同版本,排序方式会不同.
由于开发版本为nodev12,生产版本为nodev10,写了一个sort方法,两份代码,同样的数据,同样的代码内容.排序的内容确不一样.
v8引改变了sort方法的排序方式,导致两个版本排序的结果不一样.
最后使用lodash的orderby方法解决.
其实可以考虑自己写排序.后来感觉太麻烦了…
啊!!!我一定要把生产环境的node升级了!!!!!
开发的项目是基于nuxt框架,项目中需要使用videojs,在开发阶段没有问题,使用与样式展示都没有问题.
在打包之后运行,发现videojs的样式不能正确展示.样式错误,发现样式没有被打包.
发现nuxt.config.js里面有一个配置extractCSS
是用来提取css的,把css提取到一个文件里面,把这个配置设置为false
就可以解决这个问题.
但是有了新的问题,因为没有提取css,nuxt在服务端渲染的时候,会把所有的样式在html页面返回,导致html的文件比较大.
当时花了一些时间,只找到这个解决办法,而且项目比较赶,暂时这样解决
网页需要seo,因为样式全在html里面,不相关内容太多,权重比较低.seo大佬建议去掉这些样式.
找了好久,发现是因为用了tailwindcss
这个ui框架,tailwindcss
建议使用purgecss
这个库来去除不需要的css,不然打包后的文件会比较大.
videojs是在客户端使用js动态添加的class,导致purgecss
匹配不到这些样式.所以就从打包后的css内删除.导致样式展示错误.
去看官方文档,看到有一个safelist可以保留这些样式于是在nuxt.config.js内增加如下代码
1 | export default { |
发现不起作用,各种尝试,safelist.deep
,safelist.standard
属性,不使用正则等…还是不行,直到看到了一个tip
对比了一下自己的安装的依赖,发现nuxt使用的是老版本的purgecss,找到的相关的配置,代码如下.
1 | export default { |
问题解决.
1 | export default { |
1 | export default { |
又不是不能用
这个心态…55555.1 | 输入: [1,1,1,2,1,1] |
1 | 输入: [4,2,2,2,2,2,2] |
数组长度为10000
1 | const arr = [1, 1, 1, 1, 1, 1, 2]; |
1 | class Observer { |
1、Object.prototype.toString.call(),是使用原型上的toString()方法,输出为[Object xxxxx],通过xxxxx的内容判断当前的类型.目前大部分判断类型都是基于此方法,比较准确
1 | console.log(Object.prototype.toString.call([1, 2, 3])); //[object Array] |
2、instanceof是基于原型链的判断方法,一个数组会找到他的原型是不是属于array,如果是返回true
1 | let fsimpleStr = "This is a simple string"; |
3、Array.isArray(),Array对象上提供的判断是否是数组的方法,比较准确
1 | Array.isArray([1, 2, 3]); |
第 21 题:有以下 3 个判断数组的方法,请分别介绍它们之间的区别和优劣Object.prototype.toString.call() 、 instanceof 以及 Array.isArray()
MDN isArray
MDN instanceof