20200804更新:
GitHub
说明
用快捷键打开指定 APP,如果已经打开就在这个 APP 打开的窗口中循环切换。
快捷键为“CapsLock + 字母”,详见下表(可自定义)。单按 CapsLock 还是本身的锁定大小写功能。
CapsLock + e 打开 Finder.app
CapsLock + t 打开 Terminal.app
CapsLock + a 打开 Affinity Photo.app
CapsLock + b 打开 Bear.app
CapsLock + d 打开 DBeaver.app
CapsLock + f 打开 Fork.app
CapsLock + g 打开 G...
分类为 前端 的文章:
用法
<template>
<VideoUploader v-model="video" :width="400" :height="300" @cover="saveVideoCover" />
<img :src="cover" v-if="cover" />
</template>
<script>
export default {
data() {
return {
video: null, // 视频地址
cover: null, // 封面地址
};...
配置内容
单引号、末尾分号、关闭了“Rplace ..⏎ with”(有谁知道如何开启并统一格式化工具吗)。
VSCode 配置
"editor.rulers": [80, 120], // 缩进栏线
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.formatOnPaste": true,
"editor.formatOnSave": false,
"editor.renderWhitespace": "all", // 显示空格
"emmet.triggerE...
// vue.config.js / webpack.config.js / config/index.js
module.exports = {
devServer: {
proxy: {
// 所有 websocket 接口地址加 /websocket 前缀,例:ws://localhost:8080/websocket/dashboard -> wss://notice.app.upall.cn/dashboard
'/websocket': {
target: 'wss://notice.app.upall.cn',
ws: true,
secure: false,
logLevel: 'debug',
pa...
概要
单按 Fn 是 Escape
组合时 Fn 还是 Fn
单按 CapsLock 还是 CapsLock,
组合时 CapsLock + g 等于 Ctrl + Option + Command + g
配合 Hammerspoon 可以实现 CapsLock + g 打开指定 App
----
CapsLock -> Hyper
Fn -> Escape
Fn + h -> 左
Fn + j -> 下
Fn + k -> 上
Fn + l -> 右
Fn + u -> page up
Fn + d -> page down
用法
把 fn-capslock-enhancement.json 放到 ~/.config/ka...
插件
// ctrl+p
ext install MS-CEINTL.vscode-language-pack-zh-hans
ext install ms-vscode.sublime-keybindings
ext install lixquid.calculator
快捷键
// keybindings.json
// Place your key bindings in this file to override the defaultsauto[]
[
{
"key": "alt+w", // 用标签包裹选中的文字
"command": "editor.emmet.action.wrapWithAbbreviation"...
在项目中调用版本号和git信息
Vue Cli 3
第一步:创建 /vue.config.js,内容如下:
const packageInfo = require('./package.json');
const fs = require('fs');
const gitHEAD = fs.readFileSync('.git/HEAD', 'utf-8').trim(); // ref: refs/heads/feature/xxx
const ref = gitHEAD.split(': ')[1]; // refs/heads/feature/xxx
const branch = gitHEAD.split('/').slice(2).join('/'); // feature/xxx
const commitI...
在 Local 排除文件(不修改 .gitignore)
git update-index --skip-worktree postcss.config.js # 排除
git update-index --no-skip-worktree postcss.config.js # 不再排除
修复分支名与远程不一致时 –set-upstream 不起作用
git config --global push.default upstream
忽略已经提交过的文件
git rm -r --cached unpackage/ # 忽略目录
git rm --cached yarn.lock # 忽略文件
# 记得加入 .gitignor...
Vue项目采用整站部署,不使用接口所在站点的二级目录或一级目录
目录结构
/webroot/
├─ api.app.com/
│ ├─ public_html/
│ │ ├─ uploads/
│ │ └─ web.conf
│ ├─ certs/
│ ├─ logs/
│ └─ rebots.txt
└─ wechat.app.com/
├─ public_html/
│ ├─ uploads/ <-- link
│ └─ index.html
├─ certs/
├─ logs/
└─ rebots.txt
webpack dev server...
注:以下代码仅支持向下合并单元格,不支水平合并单元格。
<el-table :data="list" :span-method="cellRowSpanConfig" border>
<el-table-column label="序号" type="index" align="center" fixed>
<template slot-scope="scope">
<span>{{ (pager.page - 1) * pager.size + scope.$index + 1 }}</span>
<...
basename
function basename(str) {
return str.split('/').reverse()[0];
}
in_array
function in_array(elem, arr, i) {// 代码来自 jquery 1.11.3,返回索引或-1
var len;
if (arr) {
len = arr.length;
i = i ? i < 0 ? Math.max(0, len + i) : i : 0;
for (; i < len; i++) {
// Skip accessing in sparse arrays
if (i in arr && arr[i] === elem) {
return i;
}
...
将 JS 代码放入图片文件
void function(){
var source = 'js.png'; // 存放JS代码的图片
var img = document.createElement('img');
img.src = source;
img.onload = function(){
var canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
var context = canvas.getContext("2d");
context.drawImage(img, 0, 0);
var imageData = contex...