虽然经常可以因为开发框架和编程范式之类的东西吵架,但前端开发者们对于工具其实是非常杂食的:看看业内有多少人是在苹果的硬件上用微软的编辑器编写运行在谷歌浏览器里的代码就知道了。本着这种开放的心态,用了五年 Mac 的笔者尝试了下 Surface Go,体验嘛两个字:

真香

在入手 Surface Go 之前,笔者身边有这么些相关的设备(玩具):

  • 日常工作用的 13 寸老款 MacBook Pro
  • 送妹子以后偶尔蹭来当备机的 12 寸 MacBook
  • 记录笔记和看文档用的 10.5 寸 iPad Pro
  • 推白色相簿 2 和测 IE 兼容性的 Surface 3

附上对比照片若干:

1

2

虽然已经有了这么多设备,但笔者在入手 Surface Go 之后,发现它不仅没有吃灰,反而一跃成为了工作时间外自己使用得最多的设备(手机不算)。对笔者来说,它的定位非常清晰,就是一台能发挥生产力和创造力的便携备机。这要从何说起呢?对于一台备机,笔者大致有这么些需求:

  • 阅读 - 能用来查阅技术文档和源码。
  • 书写 - 能用笔涂涂画画(比起各种花哨的导图,笔者更喜欢纸笔)。
  • 开发 - 能编码实现原型,快速验证想法。

相信这也是与不少开发同学相近的需求。在这些维度上,这台迷你 Surface 体验如何呢?且听笔者从头说起……

阅读

在用来阅读时,Surface Go 的 3:2 比例屏幕在 4:3 与 16:9 之间取得了一个不错的折衷。笔者没有感受到它在色彩、对比度等专业指标上与 10.5 寸 iPad Pro 的屏幕有什么差异。不过在画面流畅的主观感觉上,Windows 10 的体验似乎没有苹果系那么「顺滑」。当然了,动效并不影响核心体验,Surface Go 在阅读文档时的表现还是可圈可点的。

和全尺寸的 Mac 相比,Surface Go 的平板模式对阅读而言显著地更加便携易用,尤其在出门在外时更是如此。而和 iPad 相比,在 Surface Go 上阅读 PDF 和网页的体验也是基本等同的。但是这里有一个巨大的区别:Windows 10 不会像 iOS 那样偷偷杀掉浏览器页面!笔者经常会打开一些一篇 README 顶一本小书的文档抽空阅读。而 iPad Pro 上的 Safari 即便始终挂在后台,页面也常常会在打开时重载,这在没有网络的环境下体验是非常差的。

既然提到了浏览器,那么就不能不提微软特色的 Edge。在这么些天的尝试中,Edge 的表现如何呢?说实话,只能用「平庸」来形容。除了是出门在外时为了续航考虑而使用 Edge 挂着一些静态文档页,否则实在很难找到理由让笔者弃用 Chrome:除了收藏夹、密码的同步之外,熟悉的扩展插件和调试工具也增加了迁移成本。不过这些其实都不是什么过不去的坎,在笔者这台 Surface Go 上,Edge 最致命的问题还是一个字:慢。

在渲染大页面时,Edge 的速度显著低于 Chrome。如果只是速度差一点也就罢了,问题在于 Edge 在打开这类页面的过程里,有个十分诡异的行为:它会在很长的一段时间里停下进度提示并展示出 favicon,但内容却是一片空白,就好像页面完全崩溃了一样 :( 比如,在打开 RxJS 的 Observable 文档时,你就可以非常明显地感受到这种差异。作为对比,Chrome 的分块加载体验明显地好了很多。不过,只要能够成功打开页面,就不用担心这个页面被莫名其妙地干掉。单纯这一点就足够让笔者放弃 iPad Pro 了。

插句题外话,微软推广 Edge 真是不遗余力啊。比如你可以在 Windows Store 中搜索 Chrome,然后看到这样:

4

对于阅读这个话题,另一个避不开的地方就是屏幕 DPI 了。在很多 Surface Go 的使用反馈中,有不少同学提到默认 150% 的 DPI 会让可视区域过小。实际使用中这确实算是个问题。不过,笔者在尝试了 125% 和 100% 一段时间后,还是选择了回到默认设置:默认 150% 的 DPI 基本可以保证横屏浏览主流站点时不需要左右滚动,但缩小后即便改成 125%,也很费眼睛。

不过,阅读这种层面的需求即便是 Kindle 都能胜任,区分度并不高。下面还是对比一下软家和果家各具特色的书写体验吧。

书写

笔者对 OneNote 这类速记软件的使用,还要追溯到 Surface 3 时代。可以说 iPad Pro 最吸引笔者的也就是那支配套的 Apple Pencil 了。那么 OneNote 在几个平台上的表现如何呢?简单地说,在这个维度上,Surface Go 体验和 iPad Pro 相比算是各有千秋。

首先来说说笔。Surface Go 标配的这支笔明显对标的是 Apple Pencil,这两支笔的具体技术参数笔者不懂,在此直接列出一些实际体验上的差异点吧:

  • Apple Pencil 一代的优点是书写非常平滑流畅,缺点则是不能吸附、笔尖有些滑、续航拙计和充电方式奇葩。
  • Surface 手写笔的优点是方便且定制性强,不仅可以磁吸,笔尖和功能按钮还都可以定制。不过它的槽点也不少:易误触、笔尖不牢固、虽然无需充电但电池不好买……

放两张用它们写的截图吧:

在 iPad Pro 上写的部分魔方还原算法(伪)代码:

onenote-1

在 Surface Go 写的草稿:

onenote-2

是不是注意到了二者字迹粗细的差别了?没错,这两个版本的 OneNote 字迹粗细的配置本身就不同……从 iPad 迁移过来的时候笔者还是花了些时间才习惯 Surface 上默认较宽但粗细变化更多的笔画的。Apple Pencil 与 Surface 触控笔在 OneNote 涂鸦时的差异,大致相当于稳定的 0.5 中性笔和豪放的 0.7 签字笔的区别,哪个更好就见仁见智啦。

不过,Surface Go 在书写方面还有些需要注意的地方。比如虽然 OneNote 是微软自家儿子,但 Windows 上有些地方似乎并没有很好地优化:除了缩放、拖拽时的卡顿外,最影响体验的问题在于书写时键盘非常容易意外弹出,这可以麻烦到让你感觉几乎没法用。最后笔者找到了两个配置项,按照如下方式修改即可:

  • 在系统设置 → 设备 → 笔和 Windows Ink 中,打开「使用手写笔时忽略触摸输入」。
  • 在系统设置 → 设备 → 输入中,关闭「不处于平板电脑模式且未连接键盘时显示触摸键盘」。

除了使用笔来涂涂画画的 OneNote 之外,键盘和触摸板的体验对于与文字相关的工作来说也是很重要的。其实在全面屏 iPad Pro 推出前,笔者还对于 iOS 上的触摸板支持有着一丝期待。结果苹果的新产品完全没有交互层面的革新,让人大失所望:iPad Pro 一如既往地没有光标,对着屏幕指指点点愚不可及,而只用键盘则更是开历史倒车。这方面 Surface Go 做得明显好得多。这里总结几点对这个键盘盖配件的体验:

  • 键盘盖的材质挺温润的,不过合上时的绒面有些容易脏的隐患,求教它该如何清洁呢?
  • 键盘手感稳定性稍逊于新款 Mac 标配的蝶式键盘,但肯定好于进了可乐的旧款 MacBook 键盘(多么痛的领悟)。
  • 玻璃材质的触摸板比 Surface 3 宽大得多,可惜没有 Force Touch 和个人非常喜欢的三指拖移。在办公室或回家使用的话,有个鼠标还是会更好一些,笔者选了小米的蓝牙鼠标,看起来还是挺搭的。

对于键盘盖,还有两个很赞的细节:

  • fn 键的指示灯状态,即使拆下键盘重装也会保留。
  • 将 Surface 当作平板使用而将键盘翻折至背面时,键盘按键会被禁用。

所以 Surface Go 的键盘录入体验如何呢?前段时间的那篇 反对函数式编程的政治正确 就是笔者在旁听晋级评审会的时候在 Surface Go 上一路噼里啪啦地敲出来的。整个过程很流畅,不过有一点还差些意思,那就是对于那种「自带小桌板」的椅子,Surface 家族的设计会导致比较难找到稳定的放置角度,就像这样:

5

其实对于上面我们介绍的阅读与书写需求,应该已经有不少更为详尽的评测文章了。不过作为开发者,最关心的地方可能还是 Surface Go 对开发环境的支持吧。在它推出时笔者就在知乎提过相关的问题,下面的内容应该可以作为回答 :)

开发

在现在的各路前端分享会上,你可能甚至很难找到一个使用 Windows 设备的分享者:Mac 在这个领域里已经非常普及了。不过,8102 年的 Windows 是否就不适合前端开发者了呢?你可别小看现在的 Web 了……

一个小插曲是,如果想在 Surface Go 上跑起完整的开发环境,首先必须退出购买时预装的 Windows 10 S 模式。在系统设置里可以很轻松地退出它(注意这个过程是不可逆的):

3

从硬件方面上说,除非出门在外,否则 10 寸的屏幕对于编码来说确实有些小。这方面 Surface Go 的外接显示器能力还是靠谱的,画风大致如下图所示:

6

在 Surface Go 上外接显示器的一个有趣的优势在于,由于它在 USB-C 之外还有一个磁吸充电口,因此不需要那种支持一边充电一边输出显示信号的转接头,而这类产品在笔者 12 寸的 MacBook 上发热很大。外接显示器的时候,Surface Go 的机身背面会比平时热一些,不过远远没有到令人担心的程度。多显示器的窗口管理也挺方便的,除了「流畅度」等细节向的指标外,与 Mac 上的差别并不大。

有了基本的硬件支持,最核心的体验当然还是要看软件了。笔者还依稀记得在 Node.js 刚刚火起来的那个年代,基于 Windows 上蹩脚的 cmd 命令提示符来使用它时的种种烦心事。不过,这台 Surface Go 上,开发工作流的建立其实比预期的要简单得多。大概只需要安装下面这些软件包就足够了:

  • Chrome,有现成的图形化安装包
  • VSCode,有现成的图形化安装包
  • Git Bash,有现成的图形化安装包
  • Node.js,有现成的图形化安装包
  • 科学上网软件,无需多言了

这些东西的安装都是相当傻瓜式的,相当多同学应该也有不少自定义的配置。这里笔者的风格是尽可能不做任何定制,去适应默认配置就行了。如果非要说有什么重要的配置步骤,最多也就是下面这几个用来保证 git 在 Windows 和 Mac 上能无缝使用的几条命令吧:

git config --global user.name your_name
git config --global user.email 'your_mail@example.com'
git config --global core.filemode false
git config --global core.autocrlf true

前一段时间经常看到的 Linux 子系统笔者也做了一些体验,只要在 Windows Store 上下载一个 200MB 出头的包就可以体验原汁原味的 Ubuntu 了。虽然它工作得很好,但由于 Git Bash 已经能胜任基本的命令行需求,笔者并没有重度使用(折腾)它的打算。

下面举几个例子说明笔者尝试在 Surface Go 上搞的事情以及相应的体验:

  • 使用 Hexo 撰写静态博客并通过 Git 发布的体验和 Mac 上基本一致,缺点在于构建速度显著较慢。
  • 使用 Jest 测试驱动开发的体验也很流畅。具体一点地说,笔者在 Surface Go 上实现了一个多图层顺序调整的算法原型和相应的测试用例,但是由于 Jest 的测试总费时显著较高,最后的调试工作倒是在 Mac 上完成的。这里可以提供一些数据:Jest 的测试用例在 Surface Go 上的完整执行速度超过 6 秒,但 Mac 上只要不到 2 秒。不过,在真正的用例运行时间上,Surface Go 需要 44ms 跑完的用例在老款 MacBook Pro 上也要 40ms,这倒没有很明显的差别。为什么 Windows 上 Jest 的冷启动时间这么长呢?希望大佬解惑。
  • 使用 Parcel 开发原型并在 Chrome 中调试的流程相当容易跑通。这里的麻烦之处主要在于 10 寸的小屏幕导致 Chrome 的开发者工具不管用什么方式展示都显得有些尴尬。另外,Parcel 的构建速度也比 Mac 上要明显慢一些,但完全可以接受。
  • 使用 Puppeteer 操控 Chrome 的流程在跨平台时有些路径配置需要折腾,不过为 Chrome 开发插件的体验也和 Mac 上基本没有差异。但在处理这类工作的时候,笔者遇到了比较明显的稳定性问题:在 VSCode 和 Chrome 中来回切换并跑着 Puppeteer 任务的时候,Windows 10 莫名其妙地崩溃了两三次。这不同于应用级别的崩溃,是必须长按电源键重启的系统崩溃。

总体来说,拿 Surface Go 快速地做个原型来玩玩还是非常趁手的,但现阶段笔者还不会考虑在它上面开发与工作直接相关的内部项目。实际上,笔者不打算在 Surface Go 上安装任何国内开发的桌面应用:这既可以保证自己不会收到任何烦人的推送,也有利于一种主观的「纯粹性」:只安装了前端相关工具链的 Windows 10,心理感觉上甚至比 Mac 还要干净些呢 :-p

最后提供一些和续航相关的参考数据:

  • 无 WiFi 连接,本地 Chrome + VSCode + Parcel 做一些开发,辅助 OneNote 记录,4 小时后剩余电量 67%。
  • WiFi 连接下使用 Edge 看在线的 720p 视频,70% 亮度观看 100 分钟后,剩余电量 68%

所以在续航方面,它应该勉强能和电池老化后的旧款 MacBook Pro 五五开吧 :)

总结

Web 的蓬勃发展对于开发者无疑是个重大利好:即便迁移了系统平台,你还是很容易就能获得一致的体验,这也多少动摇了一些笔者对于 Mac 的执着。不过,Surface Go 对笔者最大的一点影响还是:在周末往返在两个不同的城市之间时,原本需要带着 Mac + iPad 的沉重行李现在可以简化成一台二合一设备,而重量还不到二者之和的一半。换句话说,它确实能「做到」原本需要两台昂贵的苹果设备才能「做好」的事情,笔者也会向与自己有类似需求的同学强烈推荐它。当然了,这篇文章本身也是在 Surface Go 上敲出来的,希望对感兴趣的同学有所帮助 XD

P.S. 现有闲置的 95 新银色 iPad Pro 10.5 寸 + Apple Pencil 出售,有意请私信哦 :)