(图:《Node.js 硬实战》)
新书到手,啪啪啪翻了下,看到一段,说当时写这本书时 grunt 正流行,然后提到了 gulp。心想,如今写本技术书真心不容易,等你写出来的时候,已经过时了,尤其是前端书。
(图:这两天爱上拍夜景)
之前发过一篇 node 后端项目文件打包,是用 webpack 把 express 项目打包成单个文件,坑相对少。
最近用 webpack 打包 koa2,踩了两个大坑。
第一坑:不支持 async
koa2 中间件支持三种写法:
可以用 common function 的写法,虽然用不了拉风的 async/await,但好处也有,省去了对 babel 的依赖。
第二坑:any-promise
这个库在打包的时候会报错,看了下它的 package.json,发现 devDependencies 依赖的库并没有 install。然后发现其实并不需要依赖 any-promise,直接用 node 6 及以上的版本就可以了。
编辑文件:
node_modules/koa-compose/index.js
注释掉开头的一行
const Promise = require(‘any-promise’)
填完这两个坑就好办了。
(图:Diffy)
之前一直用 sublimerge 这个比对插件,但是最近发现这货居然收费了,从以前的弹出窗口变成了 90 天试用,卖得还不便宜,35 刀。
于是下午找了两款插件配合起来用,效果也还不错。
第一个插件叫 diffy,这货超级简单,甚至可以用简陋来形容。
使用方法:
但是这样不能同步滚动两个窗口,所以要再装一个插件。
第二个插件叫 syncViewScroll,支持多个窗口同步滚动,但是刚开始用起来会有点不适应,有点小窍门。
比如开 A 和 B 两个窗口,使用方法:
这两个插件都可以定义快捷键来辅助使用,附上我的快捷键:
// syncViewScroll { "keys": ["super+shift+ctrl+s"], "command": "toggle_sync_scroll" }, // diffy { "keys": ["super+shift+option+d"], "command": "diffy" }, // diffy clear { "keys": ["super+shift+option+c"], "command": "diffy", "args": {"action": "clear"} },
(图:五点不到就天黑了)
node 后端文件理论上不需要打包,但是用了 docker,发现每次创建的镜像都很大。这几天研究了下,使用 webpack,像打包前端代码一样打包后端代码,以便在创建 docker 镜像时过滤 node_modules,使镜像变小,加快 push 速度。
(图:吃完午饭遛遛)
微信小程序强制使用 https 请求,本地开发调试可以用以下两种方案。
附:wdcp 开启 https( nginx+apache 双引擎,或者 nginx 引擎)
listen 443 ssl; ssl_certificate /www/ssl/zhugao.net_bundle.crt; ssl_certificate_key /www/ssl/zhugao.net.key; ssl_session_timeout 5m;
(图:liza 提供的迷你下午茶)
nvm 有一个 nvm use 的命令,可以切换不同版本的 node,方便在不同项目中使用不同版本的 node,但是切换项目时经常会忘记打 use 命令,于是想有没有一个类似 nvm auto use 的东东,还确实是有的。
官方提供了 zsh 的解决方案(zsh 应该是 mac 程序员的标配了,还没安装的同学赶紧去 Install 吧)。
1、在项目根目录下创建一个 .nvmrc 文件,只要在这个文件里写一个数字就行,比如写个 6
2、vim ~/.zshrc
3、把官方提供的那段代码粘贴到 .zshrc 文件里,建议到 官方网页 去拷贝以下代码,以确保无误:
# place this after nvm initialization! autoload -U add-zsh-hook load-nvmrc() { local node_version="$(nvm version)" local nvmrc_path="$(nvm_find_nvmrc)" if [ -n "$nvmrc_path" ]; then local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")") if [ "$nvmrc_node_version" != "N/A" ] && [ "$nvmrc_node_version" != "$node_version" ]; then nvm use fi elif [ "$node_version" != "$(nvm version default)" ]; then echo "Reverting to nvm default version" nvm use default fi } add-zsh-hook chpwd load-nvmrc load-nvmrc
4、重启命令终端,以后 cd 到不同目录时,nvm 就会自动查找目录下的 .nvmrc 文件,然后自动执行 nvm use.
(图:怀念童年的成年人们)
Mac 上使用 Genymotion 模拟器调试 Android,安装过程有点麻烦,不过对于调试频率不高,前期懒得用真机调试的同学可以试试。
安装 App 很简单,直接把 apk 文件拖进去就行。
在 Android Studio 安装 Genymobile 插件,可以参考 这里。
React Native 项目修改后,Genymobile 无法刷新,网上有说可以双击 R,或者 cmd + m(拖动分隔线),然而并没有用,只能在 Android Studio 里重新 Run。
如果 Genymotion 模拟器已经运行,但是 Android Studio 在 Run 的时候检测不到,尝试以下操作:
(图:阳光下)
前几天边学边做的第一个 node 应用。通过微信 JS-SDK 实现:
G20 放假那几天,在家捣鼓如何在手机上调试代码,初衷是如何在手机上调试 node。
找到了serverauditor 这款神器,可以用它来登录服务器,爱干啥干啥,比如今天上午在小区里遛小朋友的时候,我用它来作了一次代码发布,想想就醉。
Serverauditor is a desktop and mobile SSH terminal
Everywhere. Handy. Functional.
Q(window).scroll(function() { if ((Q(window).scrollTop() + Q(window).height() > Q(document).height() - 40)) { // do something } });