接触 react 开发也有 1 年时间了,从一开始没听说过 react 到开始自己编写和维护 react 组件,从中学到的不仅仅是怎样用 react 进行前端开发,还有前端模块化、前端工程化、MVC模式 等等对前端十分重要的知识和概念。同时也接触了像是redux、webpack、eslint、autoprefixer等一些有趣的库和工具。不管怎样,算是真正进入了前端开发这个领域。
通过 gitlab 和 npm 实现私有模块的发布和安装
问题背景
npm 是 Node 的模块管理器, 功能非常强大. npm 安装公有模块非常简单, 直接一个命令 npm install 模块名字
可以了, 之所以可以这样安装, 是因为模块直接发布在 npm 的公有仓库里的 ( npm publish ) , npm 直接从仓库通过网络获取到就好. 但是, 有时候我们不希望把代码直接发布到公有仓库中, 对于企业来说, 内部的非开源模块肯定是不需要发布到公有仓库中的. 所以我们就要寻找一种可以让 npm 安装私有模块的办法.
浅拷贝和深拷贝
深拷贝指的是对象属性所引用的对象全部进行新建对象复制,以保证深复制的对象的引用图不包含任何原有对象或对象图上的任何对象,隔离出两个完全不同的对象图。
例如,我们要将 b.obj 复制到 a 中,
浅拷贝仅仅只是复制引用(Reference),拷贝后,a.obj === b.obj
深拷贝是创建(clone)了一个一模一样的对象,并保存在a.obj中,所以 a.obj !== b.obj
react 组件生命周期
在编写 react 组件时,根据需要会在组件生命周期的不同阶段实现不同的逻辑。
下面总结了在每个生命周期的基本用法。
一起来学学 Promise
基本概念
Promise 是一种异步解决方案,比传统的回调和事件模型更加合理和强大。
抽象的说,Promise 是一个容器,里面保存着未来将会完成的事件。
具体来说,Promise 是一个对象,通过它可以获取异步操作的消息。
一般来说,Promise 有 3 种状态:
* Pending (进行中)
* Resolved / Fulfilled(已完成)
* Rejected (已失败)
call 和 bind 的关系
我们写 js 代码的时候,有时会把 this 传入其他的函数作用域来获取需要的对象属性。
- 有时候会用到
call
比如:
1 | class A { |
- 有时候会用到
bind
比如:
1 | class A { |
既然 call
和 bind
都会替换函数作用域的 this,那使用它们传入不同的 this,最后函数使用的是哪个 this 呢?如果传入 undefined 又会怎样呢?
字符串与数组切割常用函数
使用 js 对字符串和数组进行部分截取操作的时候,我们可以使用 slice
, splice
, substr
等方法,但有的方法能同时作用于 Array 和 String,有的只能作用于其中之一,而且函数间的参数也都有细微的区别,很容易混淆它们用法。下面把常用的截取函数总结到一起,希望能有个整体的认识。