ES6 Reflect

Reflect 反射?字面上是,但是实际上它的作用只是配合 Proxy 实现,深入使用反射,确实能进行一些数据元操作,那么该如何编写呢?

简单谈谈

Reflect:反射,语言层面上的内容,在 ES6 中其出现的目的主要有以下几个:

  • Object 下属于语言内部的方法,放到 Reflect 上,让 Object 更加纯粹。
  • 修正之前在 Object 下的一些方法的返回值不合理照成的逻辑混乱。
  • 将命令式的行为变成函数行为,如: name in obj ==> Reflect.has(obj, name)
  • Proxy 下的方法一一对应,Proxy 可以更方便的完成默认行为的调用。

拥有的方法

目前一共有 13 个方法,与 Proxy 下的方法一一对应,直接调用这些方法就完成了 Proxy 默认的行为。

  • Reflect.apply(target, ctx, args)
  • Reflect.construct(target, args)
  • Reflect.get(target, key, receiver)
  • Reflect.set(target, key, value, receiver)
  • Reflect.defineProperty(target, key, desc)
  • Reflect.deleteProperty(target, key)
  • Reflect.has(target, key)
  • Reflect.ownKeys(target)
  • Reflect.isExtensible(target)
  • Reflect.preventExtensions(target)
  • Reflect.getOwnPropertyDescriptor(target, key)
  • Reflect.getPrototypeOf(target)
  • Reflect.setPrototypeOf(target, prototype)

其作用与 Proxy 中的差不多,只不过一个进行拦截,一个进行操作。

参考

Read more

Gitlab 搭建

Gitlab 搭建

为什么? 想要自己搭建一个代码仓库无非是以下几点原因: 1. 公司内部项目 2. 自己的项目,但不适合在公网 3. 大部分的 git 仓库虽然有私有服务,但价格都不便宜,甚至不如一台云服务器来的便宜 配置及安装文档 Gitlab * 由于 gitlab 会用到 22 端口端口转发的化就走不了 git clone 的默认配置,且占用内存较高,不推荐使用 docker 进行部署; * 由于 gitlab 自带 nginx 默认情况下会与属主机的 nginx 冲突,因此推荐只使用 gitlab 自带的 nginx 进行端口转发; 最小化配置 # path /etc/gitlab/gitlab.rb external_url 'http://git.

By breeze
NPM 私服

NPM 私服

verdaccio 私服搭建,搭建过程中的一些问题以及解决: * docker compose 启动后,可能会报错:配置找不到,添加 config.yaml 文件到映射的 ./conf 目录即可,config.yaml 具体内容可在官网找到,下方也有最小化配置。 services: verdaccio: image: verdaccio/verdaccio container_name: 'verdaccio' networks: - node-network environment: - VERDACCIO_PORT=4873 - VERDACCIO_PUBLIC_URL=http://npm.demo.com ports: - '10001:4873'

By breeze