#js #vue
通过在写一个的vnode组件的方式简单地在 vue 实现渲染属性
https://stackoverflow.com/questions/49352525/can-you-render-vnodes-in-a-vue-template
通过在写一个的vnode组件的方式简单地在 vue 实现渲染属性
<div>
<vnode :vnode="value"/>
</div>
{
components: {
Vnode: {
functional: true,
render: (h, ctx) => ctx.props.vnode
}
},
props: ['value']
}
https://stackoverflow.com/questions/49352525/can-you-render-vnodes-in-a-vue-template
#ts
styled-components 的 type 包
解决方案(都不太好
1. 降级使用
围观地址(半年了还没修QAQ
https://github.com/DefinitelyTyped/DefinitelyTyped/issues/33311
styled-components 的 type 包
@types/styled-components 在 v.4.1.9 依赖了 @types/react-native ,导致全局类型冲突,结果就是使用了这个包的大部分项目 tsc 会打出 19 个类型冲突的错误解决方案(都不太好
1. 降级使用
@types/styled-components@v4.1.8
2. tsconfig设置 types 手动指定类型目录围观地址(半年了还没修QAQ
https://github.com/DefinitelyTyped/DefinitelyTyped/issues/33311
GitHub
node_modules/@types/react-native/globals.d.ts (36,15): Duplicate identifier 'FormData'. · Issue #33311 · DefinitelyTyped/DefinitelyTyped
If you know how to fix the issue, make a pull request instead. I tried using the @types/styled-components package and had problems because since of v.4.1.9 another conflicted dependency was added (...
#npm
为 shell 开启 npm 的 tab 命令补全
https://docs.npmjs.com/cli/completion
为 shell 开启 npm 的 tab 命令补全
// npm completion >> ~/.bashrc
npm completion >> ~/.zshrc
https://docs.npmjs.com/cli/completion
#mac
mac 升级到 catalina 之后 git 报错
解决方法很简单,运行以下命令更新即可
https://stackoverflow.com/questions/52522565/git-is-not-working-after-macos-update-xcrun-error-invalid-active-developer-pa
mac 升级到 catalina 之后 git 报错
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
解决方法很简单,运行以下命令更新即可
xcode-select --install
https://stackoverflow.com/questions/52522565/git-is-not-working-after-macos-update-xcrun-error-invalid-active-developer-pa
#python
python 中对 bytes 取反的正确姿势
不进行 & 操作的话位数会太长
https://stackoverflow.com/questions/28361323/python3-byte-level-bit-operations
python 中对 bytes 取反的正确姿势
b = bytes([~ b & 0xFF])
不进行 & 操作的话位数会太长
https://stackoverflow.com/questions/28361323/python3-byte-level-bit-operations
#js 浮点数陷阱
js 的浮点误差很容易触发
需要使用
注意这两个函数的参数略有不同结果也不太一样,我们一般关心小数点后的位数,因此比较推荐使用
参考
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/toPrecision
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed
https://stackoverflow.com/questions/3337849/difference-between-tofixed-and-toprecision
https://github.com/camsong/blog/issues/9
js 的浮点误差很容易触发
0.14 * 10 // 1.4000000000000001
0.18 * 10 // 1.7999999999999998
需要使用
numObj.toPrecision(precision) (precision 用来指定有效数个数) 或 numObj.toFixed(digits) (digits为小数点后数字的个数)处理精度注意这两个函数的参数略有不同结果也不太一样,我们一般关心小数点后的位数,因此比较推荐使用
numObj.toFixed(digits)
10.001.toPrecision(1) // "1e+1" <- 这家伙贴心地帮你把数字转成了科学记数法 🌚
10.001.toPrecision(3) // "10.0"
10.001.toFixed(1) // "10.0"
参考
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/toPrecision
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed
https://stackoverflow.com/questions/3337849/difference-between-tofixed-and-toprecision
https://github.com/camsong/blog/issues/9
#github
项目推荐
vue-interactive-paycard
A fantastic credit card form with smooth and sweet micro-interactions. Includes number formatting, validation and automatic card type detection. Built with vuejs and also fully responsive.
https://github.com/muhammederdem/vue-interactive-paycard
项目推荐
vue-interactive-paycard
A fantastic credit card form with smooth and sweet micro-interactions. Includes number formatting, validation and automatic card type detection. Built with vuejs and also fully responsive.
https://github.com/muhammederdem/vue-interactive-paycard
GitHub
GitHub - muhammed/interactive-card: Credit card form with smooth and sweet micro-interactions
Credit card form with smooth and sweet micro-interactions - muhammed/interactive-card
Arki 的每日 BUG 观察
#js str.replace('abc', '') 不是全部替换!!默认只替换第一个 repalceAll 请使用正则表达式 str.replace(/abc/g, '')
#tc39 #js
现在在 stage 3
https://github.com/tc39/proposal-string-replaceall
String.prototype.replaceAll proposal现在在 stage 3
https://github.com/tc39/proposal-string-replaceall
GitHub
GitHub - tc39/proposal-string-replaceall: ECMAScript proposal: String.prototype.replaceAll
ECMAScript proposal: String.prototype.replaceAll. Contribute to tc39/proposal-string-replaceall development by creating an account on GitHub.
#webpack
webpack-cli 里塞了魔法,只要配置名以
也就是说我们可以极低成本地使用 ES6 写 webpack 配置文件
细节
https://github.com/webpack/webpack-cli/blob/c193b96047f847f92ab8a19683f180855f740fc7/lib/groups/config.js#L56
(使用其他后缀也有其他效果,详见
https://github.com/gulpjs/interpret
webpack-cli 里塞了魔法,只要配置名以
.babel.js 结尾,并装有 @babel/register ,运行 webpack 就会自动走项目的 babel 配置也就是说我们可以极低成本地使用 ES6 写 webpack 配置文件
细节
https://github.com/webpack/webpack-cli/blob/c193b96047f847f92ab8a19683f180855f740fc7/lib/groups/config.js#L56
(使用其他后缀也有其他效果,详见
https://github.com/gulpjs/interpret
Arki 的每日 BUG 观察
#git 如何将某个 dist 文件夹单独部署 gh-pages 分支? 大部分人可能重新建个git仓库push cd dist git init git add . git commit -m 'Deploy' git remote add upstream [Upstream git URL] git push origin gh-pages 实际上,使用 subtree 这个稀有命令更方便更优雅 git subtree split --prefix dist -b gh-pages # create…
#git
试用了一下,有几个要注意的地方
git subtree split 的原理是 从原本 master 的完整提交中挑选出相关的 commit 作为子项目 commit
因此使用之前需要把 dist 提交到 master ,执行完命令记得
所以这个方案也不是特别完美,另外想要维持 gh-pages 的历史时还不知道该怎么办
试用了一下,有几个要注意的地方
git subtree split 的原理是 从原本 master 的完整提交中挑选出相关的 commit 作为子项目 commit
git subtree split --prefix dist -b gh-pages 这里的操作就是将 dist 相关的提交 cherry-pick 到 gh-pages因此使用之前需要把 dist 提交到 master ,执行完命令记得
git reset HEAD~ 回来所以这个方案也不是特别完美,另外想要维持 gh-pages 的历史时还不知道该怎么办