查看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文件,其中就记录了版本信息。

确定了可行性就好说了

阅读全文 »

公司项目有些用到了DvaJS[D.va],为了更好的使用,这些调研总结下。

概述

React and redux based, lightweight and elm-style framework.

dva 首先是一个基于 redux 和 redux-saga 的数据流方案,然后为了简化开发体验,dva 还额外内置了 react-router 和 fetch,所以也可以理解为一个轻量级的应用框架。

dva做了三件事

  • 把 store 及 saga 统一为一个 model 的概念, 写在一个 js 文件里面
  • 增加了一个 Subscriptions, 用于收集其他来源的 action, eg: 键盘操作
  • model写法很简约, 类似于 DSL 或者 RoR, coding 快得飞起✈️

可以看出dva主要解决的也是围绕redux的数据流转,同时补充了react-router,fetch。

阅读全文 »

因为本人主要从事前端开发,于是Alfred的workflow更多是采用JS去写,但是每次都重复在写Script Filter,参数拆分拼接等等,于是萌生了开发个JS工具包的念头,这样以后workflow中常用的代码块直接调用即可,效率必然高不少。

心动不如行动,开搞。

这里贴出我的工具包地址,戳这里。相关开发直接安装即可使用

好奇源码的,访问该仓库GitHub地址。

这里了解开发中的几点设计。

技术栈

阅读全文 »
0%