0%

使用 fetch

fetch('//xxx.xxx.com/10.pdf', {
    mode: 'cors'
}).then(res => res.blob()).then(blob => {
    const blobURL = window.URL.createObjectURL(blob)
    const link = document.createElement('a')
    link.style.display = 'none'
    link.href = blobURL
    link.setAttribute('download', decodeURI('10.pdf'))
    document.body.appendChild(link)
    link.click()
    document.body.removeChild(link)
    window.URL.revokeObjectURL(blobURL)
})

使用封装好的 $http

$http({
    // 防止出现协议问题,这里不要写具体的 http 或者 https
    url: '//xxx.xxx.com/10.pdf',
    headerType: 'download',
    method: 'get',
    // 不指定默认从 content-disposition 头读取,后端接口也必须要设置 content-disposition 才能读取到
    fileName: 'download.docx'
}).then(res => {

})

window.open

缺点:需要同域、可能会被拦截、浏览器支持预览的文件不会直接下载

window.open('//xxx.xxx.com/10.pdf')

form 表单提交

缺点:浏览器支持预览的文件不会直接下载

export function download (url, params = {}) {
    const form = document.createElement('form')
    form.method = 'post'
    form.action = url
    form.target = '_blank'
    document.body.appendChild(form)
    for (const key in params) {
        const value = params[key]
        if (value) {
            const input = document.createElement('input')
            input.setAttribute('type', 'hidden')
            input.setAttribute('name', key)
            if (isArray(value)) {
                input.setAttribute('value', stringify(value))
            } else {
                input.setAttribute('value', value)
            }
            form.appendChild(input)
        }
    }
    form.submit()
    document.body.removeChild(form)
}

a 标签触发

缺点:可能会被拦截、浏览器支持预览的文件不会直接下载

const link = document.createElement('a')
link.style.display = 'none'
link.href = '//xxx.xxx.com/10.pdf'
link.setAttribute('download', decodeURI('10.pdf'))
document.body.appendChild(link)
link.click()
document.body.removeChild(link)

1 和 2 的方式,无论什么文件都是执行下载

两者都是基于同一个代码包数据库去拉取数据的。

最开始,yarn 是为了弥补 npm 的一些缺陷而出现的,到目前为止,两者的区别越来越小,主要是时间和使用体验上的一些不同了。

1、速度快

npm 第一次安装的对比 54.885s

yarn 第一次安装的对比 64.87s

npm 再次安装时间对比 34.961s

yarn 再次安装时间对比 19.824s

npm 删除包花费的时间对比 43.843s

yarn 删除包花费的时间对比 21.99s

2、npm 安装在国内基本都要设置镜像,而有些 npm 包需要额外的配置才能拉取下来

3、命令使用上,定义在 scripts 里面的命令,npm 需要加上 run,yarn 不需要

npmyarn 常用命令

# 安装依赖
npm i
yarn install

# 启动开发服务
npm run dev
yarn dev

# 打包项目
npm run build
yarn build

# 删除某个依赖
npm uninstall axios
yarn remove axios

# 新增某个依赖
npm install axios --save
yarn add axios

# 新增指定版本的依赖
npm i axios@0.19.2 --save
yarn add axios@0.19.2

多个目录迁移到同一个新的仓库

1、克隆需要迁移的项目代码

git clone git@gitlab.alibaba-inc.com:maru/maru.git

2、同步所有分支信息

git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done

3、筛选出需要保留的目录

git filter-branch --index-filter 'git rm --cached -qr --ignore-unmatch -- . && git reset -q $GIT_COMMIT -- src public' --prune-empty -- --all

4、清理 .gitobject

git reset --hard
git for-each-ref --format="%(refname)" refs/original/ |xargs -n 1 git update-ref -d
git reflog expire --expire=now --all
git gc --aggressive --prune=now

5、设置 origin

git remote rm origin
git remote add origin xxx.git

6、推送

git push --all

单个目录迁移到新仓库

只需要将上面的第三步改为下面的这条命令即可:

git filter-branch --tag-name-filter cat --prune-empty --subdirectory-filter src -- --all

查找替换

:[range]s/{pattern}/{string}/[flags]

:1,10s/from/to/ 表示在第1到第10行(包含第1,第10行)之间搜索替换
:10s/from/to/ 	表示只在第10行搜索替换
:%s/from/to/ 	表示在所有行中搜索替换
1,$s/from/to/ 	同上

flags 有如下四个选项

  • c confirm,每次替换前询问;
  • e error, 不显示错误;
  • g globle,不询问,整行替换。如果不加 g 选项,则只替换每行的第一个匹配到的字符串;
  • i ignore,忽略大小写
  • 这些选项可以合并使用,如 cgi 表示不区分大小写,整行替换,替换前询问
阅读全文 »

FFmpeg 是视频处理最常用的开源软件。

它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许多音频和视频格式的标准编码 / 解码实现。

FFmpeg 本身是一个庞大的项目,包含许多组件和库文件,最常用的是它的命令行工具。本文介绍 FFmpeg 命令行如何处理视频,比桌面视频处理软件更简洁高效。

如果你还没安装,可以根据官方文档 先完成安装。

阅读全文 »

  1. 关闭host检查

module.exports = {
    devServer: {
        // https://webpack.docschina.org/configuration/dev-server/#devserverdisablehostcheck
        disableHostCheck: true,
    }
}
  1. 修改host为对一个的域名

module.exports = {
    host: 'xxx.com',
}

声明该模块下的语句进程终止后,不关闭子进程

withEnv(['JENKINS_NODE_COOKIE=dontkillme']) {
    // do something
}

配置Maven环境

withMaven(jdk: 'jdk8u292-b10', maven: 'apache-maven-3.8.1', mavenSettingsConfig: 'maven_haigui_settings') {
    // some block
    }

yum安装

#rpm -Uvh http://mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el7.noarch.rpm
#rpm --import http://mirror.ghettoforge.org/distributions/gf/RPM-GPG-KEY-gf.el7
wget -P /etc/yum.repos.d/  https://copr.fedorainfracloud.org/coprs/lbiaggi/vim80-ligatures/repo/epel-7/lbiaggi-vim80-ligatures-epel-7.repo
yum -y remove vim-minimal vim-common vim-enhanced sudo
#yum -y --enablerepo=gf-plus install vim-enhanced sudo
yum  install vim-enhanced sudo -y

编译安装

安装步骤

1、首先,到 Vim 官网上下载包 Vim Release 版本在这个步骤的时候,我找了很久的 tar.gz(因为是新人程序猿,对这个不太懂),看网上的教程甚至让把整个项目 clone 下来。最后在终于找到了。

点击 “archive” 即可进入。(链接 “https://github.com/vim/vim/releases”)之后选择版本下载即可。

wget https://github.com/vim/vim/archive/v8.1.1766.tar.gz

2、解压。

tar -zxvf  v8.1.1766.tar.gz

3、进行安装,通过 configure 配置安装路径
  我是直接放在了 "/usr/local" 下面。

cd vim-8.1.1766/
./configure --prefix=/usr/local&&make && make install

4、利用 alias 将 vim 指令定向到刚刚安装的 vim8,同时修改. bashrc 确保之后一直能生效

alias vim='/usr/local/bin/vim'
echo "alias vim='/usr/local/bin/vim' " >> ~/.bashrc

5、最后检查安装是否成功

vim -version

在我们的日常开发中经常会遇到这种情况:手上有好几个项目,每个项目的需求不同,进而不同项目必须依赖不同版的 NodeJS 运行环境。

使用 nvm 管理不同版本的 node 与 npm

在我们的日常开发中经常会遇到这种情况:手上有好几个项目,每个项目的需求不同,进而不同项目必须依赖不同版的 NodeJS 运行环境。如果没有一个合适的工具,这个问题将非常棘手。

nvm 应运而生,nvm 是 Mac 下的 node 管理工具,有点类似管理 Ruby 的 rvm,如果需要管理 Windows 下的 node,官方推荐使用 nvmwnvm-windows。不过,nvm-windows 并不是 nvm 的简单移植,他们也没有任何关系。但下面介绍的所有命令,都可以在 nvm-windows 中运行。

阅读全文 »