nvm usage

Usage:
nvm --help 显示帮助信息
nvm --version 打印出安装的nvm版本
nvm install [-s] <version> 从源代码下载并安装 <version>, [-s]。 如果可用,使用 .nvmrc
--reinstall-packages-from=<version> 安装时,重新安装安装在 <node|iojs|node version number> 中的包
--lts 安装时,只选择 LTS(长期支持)版本
--lts=<LTS name> 安装时,仅从特定 LTS 行的版本中选择
--skip-default-packages 安装时,跳过默认包文件(如果存在)
--latest-npm 安装后,尝试升级到给定节点版本上的最新工作 npm
--no-progress 禁用任何下载的进度条
nvm uninstall <version> 卸载一个版本
nvm uninstall --lts 使用自动 LTS(长期支持)别名“lts/*”(如果可用)进行卸载。
nvm uninstall --lts=<LTS name> 使用提供的 LTS 行的自动别名(如果可用)进行卸载。
nvm use [--silent] <version> 修改 PATH 以使用 <version>。 如果可用,使用 .nvmrc
--lts 使用自动 LTS(长期支持)别名“lts/*”(如果可用)。
--lts=<LTS name> 为提供的 LTS 行使用自动别名(如果可用)。
nvm exec [--silent] <version> [<command>] 在 <version> 上运行 <command>。 如果可用,使用 .nvmrc
--lts 使用自动 LTS(长期支持)别名“lts/*”(如果可用)。
--lts=<LTS name> 为提供的 LTS 行使用自动别名(如果可用)。
nvm run [--silent] <version> [<args>] 在 <version> 上以 <args> 作为参数运行 `node`。 如果可用,使用 .nvmrc
--lts 使用自动 LTS(长期支持)别名“lts/*”(如果可用)。
--lts=<LTS name> 为提供的 LTS 行使用自动别名(如果可用)。
nvm current 显示当前激活的Node版本
nvm ls [<version>] 列出已安装的版本,匹配给定的 <version>(如果提供)
--no-colors 抑制彩色输出
--no-alias 抑制 `nvm alias` 输出
nvm ls-remote [<version>] 列出可用于安装的远程版本,匹配给定的 <version>(如果提供)
--lts 列出时,只显示 LTS(长期支持)版本
--lts=<LTS name> 列出时,仅显示特定 LTS 行的版本
--no-colors 抑制彩色输出
nvm version <version> 将给定的描述解析为单个本地版本
nvm version-remote <version> 将给定的描述解析为单个远程版本
--lts 列出时,仅选择 LTS(长期支持)版本
--lts=<LTS name> 列出时,仅从特定 LTS 行的版本中选择
nvm deactivate 撤消 `nvm` 对当前 shell 的影响
nvm alias [<pattern>] 显示所有以 <pattern> 开头的别名
--no-colors 抑制彩色输出
nvm alias <name> <version> 设置一个名为 <name> 的别名指向 <version>
nvm unalias <name> 删除名为 <name> 的别名
nvm install-latest-npm 尝试在当前节点版本上升级到最新的工作“npm”
nvm reinstall-packages <version> 将 <version> 中包含的全局 `npm` 包重新安装到当前版本
nvm unload 从 shell 中卸载 `nvm`
nvm which [current | <version>] 显示已安装节点版本的路径。 如果可用,使用 .nvmrc
nvm cache dir 显示 nvm 缓存目录的路径
nvm cache clear 为 nvm 清空缓存目录

Example:
nvm install 8.0.0 安装特定版本号
nvm use 8.0 使用最新的 8.0.x 版本
nvm run 6.10.3 app.js 使用节点 6.10.3 运行 app.js
nvm exec 4.8.3 node app.js 使用指向节点 4.8.3 的路径运行 `node app.js`
nvm alias default 8.1.0 在 shell 上设置默认节点版本
nvm alias default node 始终默认为 shell 上的最新可用节点版本
nvm install node --reinstall-packages-from=node 安装最新版本,并从当前版本中重新安装包和全局模块(升级到最新版本并保留已安装的包和全局模块)

Note:
移除、删除或卸载 nvm - 只需移除 `$NVM_DIR` 文件夹(通常为 `~/.nvm`)
Read more

Git基础

创建存储库

# 创建一个新的本地存储库
$ git init [项目名称]

# 克隆存储库
$ git clone <git 仓库 url 地址>

# 将存储库克隆到指定目录
$ git clone <git 仓库 url 地址> <我的文件夹>
Read more

npm link, unlink, remove 摘要

npm link 是将当前目录包链接到全局
npm remove -g pka-name 是将全局的链接的 pkg-name 包移除
npm unlink pka-name 是将当前项目中软链接的包移除

homebrew依赖关系

Basics:
brew ls 列出所有已安装的包
brew leaves 列出不依赖于另一个已安装包的已安装包
brew deps --installed --tree 显示所有包的依赖关系
brew deps <package> 显示<package>的依赖包
brew uses <package> --installed 显示<package>被哪些包依赖
brew info <package> 显示<package的信息

brew uninstall <package> 卸载<package>
brew autoremove 移除所有未使用的依赖项

brew-graph:
brew tap martido/homebrew-graph 安装brew-graph
brew install graphviz 安装graphviz
brew graph --installed | dot -Tpng -ograph.png dot格式
brew graph --installed | fdp -Tpng -ograph.png fdp格式

--highlight-leaves
--reduce

vue实现点击空白关闭弹窗,模拟下拉框Dropdown

方法一: 给外层容器定义一个阻止冒泡事件 @click.stop,则该容器内的点击不会传递到外层容器,所以全局监听不到该点击事件,在该容器内部点击不会触发点击函数。当弹框出现时,点击外部空白区域,弹框关闭。

方法二: 给外层容器设置一个 ref="mian",当 visible为 true时,弹框出现。在该容器外点击 this.$refs.main.$el.contains(e.target)为 false,在容器内点击则为 true。

两种方法都需要组件挂载完毕,全局添加一个点击事件,组件注销前,将点击事件移除。

Read more

js去除url指定参数

/**
* @description Remove the specified params
* @param {array} params
* @return {string} res
*/
const handleRemoveParam = (params = []) => {
const { origin, pathname, search } = window.location;
const arr = search.substring(1).split("&");
let collect = [];

arr.forEach((item, ind) => {
params.forEach((param) => {
if (item.includes(`${param}=`)) {
collect = [...collect, ind];
}
});
});

for(let i = 0; i < collect.length; i++) {
const item = i > 0 ? collect[i] - i : collect[i];
arr.splice(item, 1);
}

const newSearch = arr.join('&');
const res = newSearch ? origin + pathname + '?' + newSearch : origin + pathname;
return res;
}

const str = handleRemoveParam(['bbb', 'aaa', 'token']);
console.log(str);

微信H5自定义分享在ios下失效的问题

ios分享失效,表现为不显示缩略图,自定义url不正确,无法获取title等

  • IOS:每次切换路由,SPA的url是不会变的,发起签名请求的url参数必须是当前页面的url(就是最初进入页面时的url)
  • Android:每次切换路由,SPA的url是会变的,发起签名请求的url参数必须是当前页面的url(不是最初进入页面时的)
Read more

Regular Expressions 正则表达式语法

普通字符

什么叫普通字符?

当我们写a的时候,我们指的就是a;当我们写的时候,我们指的就是

'hello 😀 regex'.match(/😀/);
// ["😀", index: 6, input: "hello 😀 regex", groups: undefined]
Read more