- 本文参加了由公众号@若川视野 发起的每周源码共读活动, 点击了解详情一起参与。
- 这是源码共读的第36期,链接:juejin.cn/post/711878…。
源代码片段
function omit(obj, fields){
/**
* Object.assign(target,source)
* 属性从一个或多个源对象的自身可枚举的属性复制到目标对象,返回修改之后的目标对象。注意目标对象的值会发生变化
* 且Object.assign为浅拷贝
*/
const shadowCopy = Object.assign({},obj)
// 在这加上了fieds的类型判断
if(fields instanceof Array){
for(let i = 0; i < fields.length; i++){
const key = fields[i]
delete shadowCopy[key]
}
}
return shadowCopy
}
father打包相关
- 支持cjs,ems,umd三种格式的打包
- cjs是es5模块系统,主要是用于node环境,以及ssr
- ems是es6模块系统,主要用于浏览器渲染,支持tree shaking
- 支持用 babel 或 rollup 打包 cjs 和 esm
总结:
- 重新复习了Object.assign的细节知识点。
- 使用vscode 代码调试功能进行了
- 简单了解了单元测试
- 简单了解了使用father打包组件相关的知识
感悟
如果单纯的看源码的话,这个很快就会看完,但是因为要完成作业,所以会更认真地去对待,但是还是感觉写得不够充实。