编注:本文作者是著名效率应用 Pin 的开发者钟颖,Pin 作为苹果的年度十佳 App 之一,今年发布 3.0 大版本,随后钟颖也写了一篇文章介绍了 Pin 3.0 的新功能以及他做这款产品背后的想法。

关联阅读:像浏览器扩展一样,苹果年度应用 Pin 3.0 让你也能自由编写、安装插件

JSBox 是他的新作品,在这篇文章里,钟颖仍将以通俗易懂的方式向我们介绍 JSBox 的强大功能以及设计思路。


JSBox 是什么

JSBox 是一个可以用来运行 JavaScript 脚本的 iOS 应用,你可以通过他来执行标准的 JavaScript 脚本。

这种执行不是指跑在浏览器上,而是执行在一个完全原生的环境,效率很高。

并且我们提供了很多 iOS 原生的接口,这意味着你可以通过他做很多事情,包括但不限于:

  • 写一个用来查询汇率的脚本;
  • 写一个用于计算小费的脚本;
  • 通过接口实现一个小小的应用,提供丰富的界面;
  • 写一个文本收藏工具,用于收藏常用的文字;
  • 写一个下载 Twitter 视频的小工具;
  • ……

其实 JSBox 是完完全全可编程的一个应用,他能做很多事情,所限制产出的往往只是动手能力。

为了更好的编写脚本,我们甚至提供了配套的 VSCode 插件,用于更高效率的编写和测试 JSBox 脚本,可以做的桌面端编写 iOS 端实时刷新。因为我们始终相信无论移动端的编辑器做的多么强大,编写代码的效率也始终被桌面端碾压。

所以,JSBox 并不是像 Pythonista 那样为了编写代码而生的应用,编写代码只是实现功能的手段,我们的一切最终都是为了效率的提高。

有趣的示例

我希望通过一些 GIF 图片来展现一下 JSBox 实现的一些有趣的样例,借此能对 JSBox 有一个认识(请忽略 GIF 质量带来的色差和卡顿)。

从 App Store 获取资源:

从 App Store 获取资源
从 App Store 获取资源

以图搜图:

以图搜图
以图搜图

汇率转换:

汇率转换
汇率转换

小费计算器:

小费计算器
小费计算器

拼音转换:

拼音转换
拼音转换

当然,JSBox 能做的事情还有很多,我们之后将会提供更多的样例脚本和更详细的教程。

为什么要开发这个应用

其实 JSBox 诞生和 Pin 3.0 有着千丝万缕的关系。

关注过 Pin 这款应用的朋友们可能知道,我们在 3.0 版本里面引入了执行 JavaScript 脚本的能力,尽管 Pin 不是第一个这么做的,也不是唯一一个这么做的,但之后我们还是在审核方面碰到了很多来自 Apple 的阻碍。

熟悉 iOS 平台的朋友可能知道,审核条款里面有一项就是关于应用不能下载执行代码的,但是 JavaScript 这种不需要编译的脚本语言,却处于一个模糊的区域。有很多应用提供了类似的流程却没有问题,我想一个可能的点是:Pin 之前作为一个效率应用,提供了太过方便的脚本安装方式。

这导致 Apple 认为这是不安全的,用户不能从外部安装一个脚本。

在长期提交修复不得通过之后,我不得不重新思考了这个问题,或许我应该做一个完完全全的编程类应用,这个应用并不提供很多方便安装脚本的方式,取而代之的是提供一些接口,让用户自己去实现需要的功能。

这样一个完完全全的编程类应用是教育类的,正如 App Store 推荐过的很多编程类应用一样,用户在使用一个脚本的时候,完全知道自己正在做什么。

在经过一段时间的重写和内测之后 JSBox 诞生了,这个应用里面,我们并不提供直接的功能,而是提供一些接口(能力),由用户去组织他需要的功能。

JSBox 是为谁而做的

显然,这样的应用不会是一个适应所有人的应用,他的小众程度可能要比 Pin 这样的剪贴板应用还要严重。但是这些并不成为阻止我开发这个应用的决心,因为我非常清晰地知道,我自己很需要这种应用。

随着人们对移动端生产力需求的提高,我们往往会花很多精力投入在生产力建设上面,希望通过效率工具来武装自己,近年来 Workflow 一类应用的崛起充分挖掘了这方面的需求。

但是依然有这么一个问题困扰着我,我这一类人是不适合在 Workflow 上面拖来拖去的,因为 Workflow 提供的并不是完备的编程能力,这对我这个程序员来说并不是一个完美的状态,我希望我的效率工具是可以完全由自己决定他的功能,他的界面,他的一切。

你可能会说,那就开发一个应用不就好了?但是有些需求的大小是不足以撑起一个应用的,例如:把最近拍的几张照片拼接起来,分享出去。这样规模的需求非常适合用 JSBox 这样的工具来实现,你只需简单的几行脚本,就能提供类似的功能。

与上述描述最接近的产品形态,其实是微信的小程序。但是微信小程序其实不是设计给我这种效率狂的,更确切地说,微信小程序有很多硬伤是我接收不了的:

  • 微信不会提供一个 URL Scheme 让你启动一个小程序;
  • 你永远也无法通过微信小程序实现一个分享面板上的扩展;
  • 有很多小程序基于某些原因微信是不会让你上线的;
  • 有很多接口小程序微信基于自己的考虑而不会提供。

如果你会写一点代码,希望完全定制自己的工具,希望有比 Workflow 更灵活的编程模式,以及极其方便的各种启动方式,那 JSBox 就是为你做的。

如果你虽然不懂代码,但是非常愿意折腾,有较强的动手能力来使用别人编写好的代码,希望通过技术手段来提升自己生活、工作的效率,那 JSBox 也是为你做的。

JSBox 不是为这一类人做的:希望应用打开后就是一个完美的状态,有你各种想要的功能。对不起,这不是 JSBox 要做的事情。

JSBox 究竟能做什么

上面举了一些 JSBox 能做到效果的例子,但是其实能做到什么程度并不是几句话可以说的清楚的,因为一个编程工具理论上他能做到的事情,是取决于用他编程的人。

我们在 JSBox 里面大概内置了 7 个样例脚本,但这是远远不够的,甚至不能作为了解接口设计的必备内容,除此之外我们还准备了两个内容用于提供教程和样例:

同时欢迎各路对编程感兴趣的朋友来完善这个项目,尤其当你发现自己的一个需求用 JSBox 实现不了时,请一定通过应用内的反馈方式联系到我,合理的需求都会被尽快满足。

出于审核限制的原因,我们并不会将上述的一些样例代码以在线下载的方式集成到 JSBox 应用内,但你完全可以自己实现一个下载工具把脚本安装进去。

下一个里程碑

上面说了很多关于 JSBox 适合的人群,其实还有一类人群是目前没有很好的照顾到:完全没有任何编程经验的新手

这个其实算是一个愿景了,因为我已经在这个行业工作多年,深知传播编程并不是一件容易的事情,但这件事情的重要性正在不断地变高。

可能下个十年,编程几乎会成为人人都会的一种基础能力,就像英语那样成为世界性的语言。

我也始终相信,兴趣永远是最好的老师,任何事情都是如此,这句话其实是最近玩 Human Resource Machine 有感而发(顺便说下这个游戏实在是太棒了必须推荐)。

关联阅读:这是程序员的「无聊」工作,也是有趣的烧脑游戏:Human Resource Machine

所以在之后,JSBox 里面将会提供一个循序渐进的学习环境,引导用户一点点地去实现一个个的功能。这很难,但我对此很感兴趣。

关于售价

我近一年的探索基本都和 JSBox 有关,这是我真正想做的事情,这个意义远远地超过了他能带来多少收入,当然,收入越多越好。

他的售价不会太便宜也不会太贵,目前首周促销的价格是 30 元人民币,之后将恢复 40 元人民币的售价,同时如果你通过 18 元购买过 Pin 的话,可以通过补齐应用套装来优惠 18 元。

后记

关于为什么要做这么一款应用,我其实还有一个私心。

我始终都记得童年时代用电子词典玩各种程序的日子,那段时光很美好,也在一定程度上培养了我们的兴趣。

当时的电子词典上也有各种各样的编程平台,例如 GVBASIC/LAVA/BBASIC,尽管童年一去不复,这些名字也已经被人所遗忘,但是对于编程的热情却不会停止,指引我们在这件事上做出更有趣的东西。

我始终相信,这些驱动我们去不断折腾的精神,是让世界变得更美好的原因之一。所以我们为真正的极客,做了这个应用。


评论送码(已结束)

在评论区说说你对 JSBox 有什么期待或者建议,也可以聊聊你对我的另一款应用 Pin 的使用感受,分享几个你常用的动作。

本周五(12 月 22 日)我们将从评论区抽 10 位认真评论的读者,各赠送 JSBox 兑换码一枚。

恭喜 guyao、jerryisme、Ontides、evannoah、Thence、一颗心、Nicked、鸡蛋仔、Mosaic、wolola 各获得 JSBox 兑换码一枚。请在账号设置打开私信,并注意查收。