• 页面禁止滚动

    最近做了个图表的东西,图表上有拖拽的交互,在拖拽的时候不小心就会拖动到页面,为了避免这个交互带来的影响,很自然的我们想到了阻止页面滚动常用的伎俩:

    document.body.addEventListener('touchmove', e => {
        e.preventDefault();
    }, false);
    
  • webpack4 抽离公共 css 产生的问题

    webpack4 对 css 的默认处理是同步引用的 [s]css 合并成一个文件,其他异步引用的分别单独打成独立文件
    但是在 [s]css 文件中使用 @import 引用的公共模块并不会被抽离出来合并,这导致引用了大量的重复代码,可以看看 sass-loader 其中一个 issue 对此问题的讨论

  • http 请求被 307 到 https

    问题复现

    1. 先访问 https://a.com, 该网页 JS 会请求 https://api.a.com 接口
    2. 再访问 http://a.com, 该网页 JS 会请求 http://api.a.com, 但是查看网络请求发现,http://api.a.com 被强制 307 到了 https://api.a.com
  • 对 peerDependencies 的理解

    最近在搞 webpack@4.x 的时候,安装各种插件后总是会出现 UNMET PEER DEPENDENCY 这个东西,它到底是个什么错误呢?在通读了 Domenic Denicola这篇文章后,才有了个大致的理解

  • 迟迟未到的 babel-preset-env@2

    babel-preset-env 之前官方 github 的 release 列表中可以看到,距离可追溯的第一个 2.0 的 alpha 版本 v2.0.0-alpha.4 (2017-04-07) 已经过去了 382 天,在经历了几十个 alpha 版本和几个 beta 版本后版本号变成了 7.0.0-beta.3, 与之对应的 babel-core 也接连发布了多个 7.0.0 的 alpha 和 beta 版本,目前也已经到了 7.0.0-beta.3. 猜测接下来应该会和 babel@7 一起发布吧

  • 再谈 webpack-dev-server 之 proxy

    今天在折腾 proxy 代理的时候,遇到了这么个需求:只匹配不包含 /js/ 的路径,然后理所当然的认为 proxy 的路径应该是支持正则匹配的,不匹配某个特定组合的字符需要用到零宽度负预测先行断言(?!exp)^(?!.*\/js\/).*$

  • webpack-dev-server 编译文件写入磁盘

    了解 webpack-dev-server 的同学们都知道,启用它之后编译生成的文件是存在内存里不落磁盘的,但如果我就是想落磁盘应该怎么操作呢?

  • npm Wanted vs Latest

    今天在使用 vue-cli 的时候报了更新提示,于是直接 npm update vue-cli -g, 发现并没有任何作用,使用更暴力的 npm update vue-cli -g --force 依然没有作用。看了官方提示后执行了 npm update vue-cli -dd 来显示更新过程中的细节,发现有这么一句:

  • 编辑网易邮箱签名的奇幻之旅

    今天有个同事接到了编辑邮箱签名的需求,但是遇到了个问题:编辑的好好的,保存后签名预览也没问题,可邮件发出去签名图片就是不显示。

  • 腾讯云 centos7 安装 gitlab 及数据迁移

    前几天花 360 元撸了 4 年 1 核 2G 腾讯云,最近打算把原来阿里云上的 gitlab 迁过去,主要原因是这东西开起来就吃掉 1G 内存,当初为了能装这个玩意还升配了阿里云,花了不少银子。

  • React 服务端渲染

    写了这么多年博客,本来就没几篇,被百度收录的更是少之又少,可能因为之前大部分时间都是为了追求页面效果而使用了前端模板,导致百度蜘蛛过来的时候没有东西可爬吧。所以最近打算搞成前端+服务端共同渲染,实现用户手点页面的时候在前端跳转,直接请求页面则由服务端直接返回拼装好的页面。本篇主要记录使用 react 服务端渲染来实现这个需求所以到的几个问题,所使用的 react 版本为 15.5.4

  • babel-preset-env 前端狗的又一个福音

    之前的文章提到我的小伙伴踩中了 babel 的坑,当时只是找到了问题的原因,然后给了一个比较潦草的解决方法:直接引入低版本浏览器不兼容的 API. 但是在实际开发中我们不可能熟知各个浏览器对 API 的兼容情况,导致只能报错之后再去补救,显然这不是个优秀的方案,下面我们就探讨一下如何优雅的避免此类问题的发生。

  • javascript 中的冒号

    最近小伙伴又遇到了问题,告诉我以下代码会报错:

    ['m', 'd', 'h', 'n', 's'].forEach(v => {
        console.log(v);
    }
    //TypeError: Cannot read property 'forEach' of undefined
    

    但是这么写就不会:

    const arr = ['m', 'd', 'h', 'n', 's'];
    arr.forEach(v => {
        console.log(v);
    }
    
  • 理解 babel

    最近有小伙伴发现某页面在 iOS8 微信环境下显示空白页,跑过来问我可能导致此问题的原因,因为这是个前端模板渲染的页面,所以首先想到的是 js 抛错了,找个 iOS8 来试试吧。

  • nginx 配置小结

    刚开始配置多个 server 的时候,发现一个奇怪的现象,比如有两个域名 a.com 和 b.com, 将监听 a.com 的 server 注释掉,居然还能访问到 a.com, 并且是 b.com 的内容

  • 开启 https 小记

    每次用微信打开我的博客页面,总能看到运营商那个恶心的注入广告,所以近期打算折腾下用上 https. 开始折腾新东西的时候,总是有种不知从哪里下手的感觉,那就先上某乎看看有哪些免费证书吧。

  • 搭建 ngrok 实现内网穿透

    一直想从外网访问家中的网络,以前听说可以设置端口转发,但必须进入小区的交换机设置,一般运营商是不允许这么做的。后来甚至想过自己用 socket 实现,外网请求阿里云,阿里云 socket 推送给家中内网

  • 树莓派 raspberry 连接蓝牙音箱播放音乐的小折腾

    前段时间入手了一个树莓派,一直没怎么折腾,最近事情少就打算搞一搞

    让我惊奇的是官方提供的系统:RASPBIAN JESSIE(2016-05-27) 版本居然内置了 Nodejs, 虽然版本只有 v0.10.29

    后续提到的折腾都是在 RASPBIAN JESSIE 这个版本下

  • 单页面 web 应用避免白屏

    ajax 的兴起给 web 开发带来了新思路,彻底划清了前后端开发的界线,一些优秀单页面 SPA 也应运而生,然而事情的发展总是有两面性的,单页面应用同样也会有些缺陷,如不利于搜索引擎抓取,首页白屏等,本篇将着重对第二个问题进行分析、解决。

  • npm 的又一记坑

    以前开发 npm 包都是直接 publish 到 npm 官网,然后 install 下来使用,遇到有 bug 的情况就要反复上传新版本,很麻烦,后来有小伙伴说可以使用本地目录或者 github 地址进行测试,今天正好打算尝试下,npm 官方文档: