函数柯里化的使用场景
概念只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数;
降低函数的通用性,提高函数的适用性。
主要使用场景
通过将函数的部分参数进行预处理,得到一个在某个时刻(runtime)固定参数的方法,该方法的调用者只需关系剩余参数的传入。
处理已知的参数得到一个方法,等待参数全部确定后返回结果。
假如不同组件同时引用某个公共方法,而公共方法内部根据不同参数处理不同场景的业务逻辑,此时可以将函数处理不同场景的参数通过柯里化得到应用于不同场景的方法,提供给组件调用时,组件就不需要关心需要传入哪种不一样的参数去处理当前的业务逻辑了。
代码实现function curry(func) {
2021-03-05
Chrome架构
进程和线程进程就是一个程序运行的实例。详细解释就是,启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,我们把这样的一个运行环境叫进程。
进程和线程之间的关系有一下4个特点:
进程中的任意一个线程执行出错,都会导致整个进程崩溃。
线程之间共享进程中的数据。
当一个进程关闭之后,操作系统会回收进程所占的内存。
当一个进程退出时,操作系统会回收该进程所申请的所有资源;即使其中任意线程因为操作不当导致内存泄漏,当进程退出时,这些内存也会被正确回收。
进程之间的内容互相隔离。
早期的浏览器为单进程单进程导致了一系列的问题:不稳定、不流畅
2021-02-22
浏览器工作原理与实践
阿里云轻应用服务器挂载oss作为数据盘
购买的阿里云轻应用服务器是香港地区的,只有25G的SSD,最近在给媳妇做一个网站备份的项目,最开始设想的是直接存服务器算了,但是想了想25G可能不够用(想太多),所以想着自己还有个9块钱一年的OSS可以用,干脆创建一个bucket单独做静态资源服务器算了,爬下来的网站直接放OSS岂不美哉,但是用着用着发现这尼玛流量也是一笔费用,而轻应用服务器则有1TB的流量(完全用不完),为何不用OSS的储存,轻应用服务器的流量呢…
阿里云上有相对完整的解决方案,先我将这些梳理一下,以备不时之需。
准备工作首先得在阿里云上有个OSS存储包,很便宜,40G一年9块钱,然后得有个轻应用服务器,我买的是香港的,24
2021-02-07
了解nodejs中的path.resolve
path.resolve() 方法会将路径或路径片段的序列解析为绝对路径。
node文档中给出的例子:
实例:
path.resolve(__dirname, '../static/test.html');
首先我要读取的文件在与上个目录同级的static文件夹内,所以第一个参数为../static/test.html,而我当前模块的目录名为D:\Code\website-archive\compile,所以最终的结果是:
D:\Code\website-archive\static\test.html
注意:如果参数为./目录则可以理解为/目录。
2021-01-27
JS模块化进程中的导入与导出
浏览器环境下的模块导入导出特点
遵循ES Module规范。
导入导出方式:
导出:export和export default。
导入:import。
详细导入导出方式
普通导入导出:
// module.js
export function func1() {};
export const num1 = 999;
// import.js
import { func1, num1 } form './module.js'
// module.js
function func1() {};
const num1 = 999;
export { func1, num1 }
2021-01-12
export
表格视图逻辑优化
现有逻辑梳理渲染(初始化)流程
初始化配置表中的字段。
将配置表中的字段转换为key、value、label形式,提供给AppExport、Apptable使用,Apptable中已经没有用到该字段,建议删除相关代码。
从cookie中获取该路径下是否有字段集合。
从/caches接口获取字段数据。
点击表格视图切换字段显示。
问题梳理
不能使用cookie作为字段本地存储的方式。
系统页面多,字段多,一旦超出cookie存储大小,数据将会丢失。
每次请求都将这么庞大的cookie放在请求里,对服务端是会有一定的影响的。
/caches接口存储也有时效性,对用户会造成困
2021-01-08
工作
使用browser-sync同步文章修改
前言之前一直使用的是hexo-browsersync用来同步刷新文章,但是当文章字数达到一定程度,自动刷新就会失效,并且样式也会丢失,这样用起来真的很不爽!之前一直以为是编译markdown时出现的问题,后来发现并不是——把hexo-browsersync卸载之后手动刷新不会出现这个问题。然后就动了自己安装browser-sync来同步的心思。
步骤
首先安装browser-sync:
npm install browser-sync --save-dev
这里推荐本地安装,运行时与全局安装的命令不同:
./node_modules/.bin/browser-sync xxx
文档里面有
2021-01-04