由于历史原因,项目代码中还有一些函数使用arguments,而同时公司定下的lintRule对于arguments只是warning,因此有些还是没人去修改。

那么arguments还有必要存在吗,这里总结下

arguments vs rest parameters

  • arguments是类数组,但并不是数组,因此没有map,filter等方法,而rest parameters是数组
  • arguments的迭代器方法IE下不支持
  • arguments是es3时的规范,而rest parameters是es6
  • rest parameters可以用于获取函数所有参数,可以完全提到arguments

综上,可以确定我们完全可以使用rest parameters来解决参数获取

prefer-rest-params

阅读全文 »

一次,CD部署时WEB项目打包的TS最终编译为了ES3,而ES3下的JS代码最终导致了白屏。

事故直接原因

项目下的业务组件库没有执行TSC配置的target,而我司封装的构建打包工具在进行编译打包时,会优先使用找到的第一个TSconfig配置,于是主项目的ES5被忽视,而业务组件库又因为没有配置target,最终执行了缺省的TS target配置值-ES3。

要知道TS只是进行语法编译,并不进行polyfill。

阅读全文 »

查看JS项目时,会看到package.json中会有sideEffects配置,这个是什么含义,如何使用呢,这里总结下。

sideEffects

顾名思义,副作用,如下函数,进行条件过滤,返回全新数组,但是也修改了原数组本身

1
2
3
4
5
6
7
8
9
10
11
function filterArr(arr) {
return arr.filter((item, index) => {
arr[index] = Math.random();
return item > 3;
});
}

const arr = [4, 5, 1, 2];
console.log('before:' + arr);
console.log(filterArr(arr));
console.log('after:' + arr);

与副作用相反的即纯函数,固定输入即可固定输出。

阅读全文 »

最近在做上传功能,需要将ZIP文件读取内容传到后台,后台将数据写入创建ZIP文件,最后解压处理,但是联调时,报错提示ZIP文件不合法。

由报错可以断定写入ZIP文件的字节流肯定不对。

当前代码

查了下当前的读取ZIP文件的代码如下

前端

阅读全文 »

编写Alfred Workflows已经快30个,在使用中,我也会根据遇到的问题及不足进行版本迭代,然后更新到GitHub上,方便他人下载使用。但GitHub中存储的是workflow文件格式,没办法直接看到版本信息,除非下载安装。这样就无法直观确定,版本问题。

手动维护更新?no,太浪费实践。

因此我需要CI帮我读取workflow的版本,更新到对应的readme文件中,这样我就可以很快确定本地安装的与仓库托管的版本是否一致,是否需要更新。

可行性基础

Alfred的workflow文件本质是一个zip压缩文件,解压后,会看到一个plist文件,其中就记录了版本信息。

确定了可行性就好说了

阅读全文 »
0%