【255】43周 创造工具的工具——JSBox 深度测评

_RYAN_ 责编: Hum
06月26日

创造工具的工具——JSBox 深度测评

| 本文为付费栏目文章,您已订阅,可阅读全文 |
编注:Workflow 已经被 Apple 收编而久不更新,iOS 自动化方面也因此久违令人兴奋的作品。但实际上,有一款在 iOS 上足以匹敌、甚至超越 Workflow 的独立应用,它叫 JSBox,出自国人开发者 @StackOverflowError
因为这款作品的上手门槛和少数派的写作门槛,一直没有一篇来自用户对这款应用的测评。在 JSBox 首发时,开发者本人曾在少数派发表过介绍 文章,但那是比较简短的、从开发者角度来写的。于是我约了 iOS Power User 中名不见经传的 @Ryan 来写这篇深度长文,他对 Workflow 和 JSBox 这类创造工具的工具有很深的造诣。

当今国内 iOS 应用圈子里,优质的应用一直都不稀缺,然而已经很久没有人来「搞个大事情」了。
所谓「大事情」,不仅是设计出众的独立应用,更是那些具有无限可能的「创造工具的工具」。在这个定义上,JSBox 有资格称得上「大事情」,因为它是国内开发者给应用爱好者最「可玩性」的工具。
我希望通过这篇文章梳理选择 JSBox 需要关注的参考点,让大家好好认识这款应用,为大家解答这些问题:
我为什么选择 JSBox,既然 iOS 已经有众多优秀的独立应用,JSBox 也不是唯一一款可编程的工具,JSBox 的意义是什么。
就带着这样的问题,我们来一起细细品味 JSBox 的独到之处。

JSBox 是什么

把「JSBox」拆开两部分,「JS」指的是使用 JavaScript 语言编写和运行脚本,「Box」则是指这款应用的收纳作用,同时也有点意志它像一个黑盒子——你不需要知道它内在如何实现,只需要了解应用封装的 API 1 实现的功能,就已经可以动手尝试制作了。
JSBox 提供了丰富的 API 来实现 iOS 原生功能,利用它们可以完成很多事情。
下面是用 JSbox 完成倒数日的功能,完善度非常高,你甚至可能怀疑自己在使用独立应用。
使用 JSBox 实现「倒数日 Days」的核心功能,作者:ZiGma
不仅如此,JSBox还能做更多事情:操作 iCloud Drive、接入手机相册、控制 Apple Music 音乐 2 等数之不尽。搭配这些功能,能够创造出无限的可能性。

左:JSBox 调用 iCloud Drive Controller;中:JSBox 获取手机相册内容;右:JSBox 获取 Apple Music 资料库
在编程语言上,JSBox 选择了 JavaScript 作为其核心的语言标准。作为一门主流的通用语言,JavaScript 时常出现在 iOS 的身影。不少效率工具都选择 JavaScript 来扩展自身的功能,最具代表性的可能要数「Drafts」了。

「Drafts」编辑 JS 脚本代码
如果日常有使用这些效率工具的习惯,甚至可能不需要额外去学习新的语言,因为它们的语法标准是一致的。即便没有相关经验,基本的 JavaScript 语法也是十分平易近人。JavaScript 很大一个特点就是它的基本语法简单易学,而且,使用 JSBox 也只需要掌握最基本的语法就能够完成脚本编写。
JSBox 就是一个如此的存在,帮助我们用尽可能简单的方式实现复杂的逻辑功能,满足我们的需求,甚至实现奇思妙想。

JSBox 的优势

不同于一般的独立应用,JSBox 这种「创造工具的工具」不会帮你分析需求点,你必须拥有挖掘需求的能力。要做到这一点,你可能需要比较熟悉 JSBox 的各个方面,或者换句话说了解它与 iOS 环境可以有哪些连接。在大家还没有全局把握 JSBox 的可能性之前,我总结比较能体现 JSBox 优势的三个方面,它们分别是:
  • JSBox 独有的特色——同类竞品绝无仅有的特色;
  • JSBox 亮眼的地方——体现 JSBox 强大的扩展性;
  • JSBox 的应用体验——应用对用户使用体验的考虑。
从这三方面,我们一起来探索这款应用的独特之处。

JSBox 独有的特色

JSBox 具有几个相比于同类竞品独有的特色,仅仅从 App Store 应用展示我们很难发现它们的存在。经过稍长一段时间的使用,在我体验过类似应用后依然爱上它、需要它,离不开以下三点独特的地方:
  • 突破小部件限制,使得小部件不但摆脱了「无法加载」的困扰,而且可以胜任几乎任何运行要求;
  • 具有广泛的运行方式,你几乎可以在任何一个场景下使用它,尤其「脚本任务」和「键盘」两种运行方式,最大限度地拓展了 JSBox 的可用范围;
  • 支持小部件唤起键盘,在小部件上使用键盘进行汉字等输入,能够脱离主应用本身完成各种输入查询任务。
下面,我们来逐一仔细感受这些特色的魅力。

1. 突破小部件限制

众所周知,苹果对通知中心小部件的定义只是作为辅助显示而存在。然而对于同类竞品而言,稍微运行一些体量较大的脚本、流程,小部件都难逃「无法加载」一劫。

一般意义上的小部件容易出现奔溃的情况
JSBox 的一大黑科技是让目前两类小部件「启动器」和「小部件」均「不受内存限制」,使得运行体量庞大的脚本成为可能。

突破小部件限制后内存占用可以更大
虽然它不是真正意义上的没有任何限制,但在小部件上使用而言,它已经可以胜任几乎任何运行要求了,在同类竞品中,只此一家,绝无仅有
这里「几乎任何运行要求」一点都不夸张,它不仅仅可以运行内存占用较大的脚本,使得绝大部分情况下不需要为小部件内存限制而绞尽脑汁去精简和适配,也可以在小部件直接运行并完整地展示出来。而且更有意义的一点是,这种小部件可以完成与主应用程序完全一致的复杂交互,包括上下滚动、左滑等手势操作。

左:在小部件完成滚动下拉动作;右:在小部件完成左滑动作
iOS 其实并没有为严格意义上的小部件开放独立的滚动、滑动交互,因为这些手势与小部件页面的全局手势相互冲突了。但突破了限制的小部件在交互体验上却完全没有减分的地方,操作时只需要离开小部件范围,就不会影响页面的正常滚动、滑动全局操作,在丰富了小部件可展示内容同时,得到了与主应用程序一致的交互体验,仅仅通过小部件就能完成太多太多任务了。

2. 具有广泛的运行方式

除了小部件、分享扩展等常见运行方式以外,极具特色的两点是「脚本任务」和「键盘」两种运行方式。
在我使用下来强烈推荐的是「脚本任务」运行方式。如果说 JSBox 在宏观上达不到我们对效率的追求,那么「脚本任务」就是能够让每一个脚本具有自身使用效率的方式。JSBox 定义的脚本任务有五种,但其实常用效率工具的我们都不会感到太陌生。

脚本任务种类
如果我们更专注于效率提升的问题,那么定制专属脚本的同时就可以更进一步附加脚本的触发方式,让应用通知你什么时候该做什么事情。与一般的文本通知不同,基于时间、日期、位置的任务可以在通知上运行一个脚本浏览完整的脚本内容,并与展示的元素进行点击、输入等交互,不需要进入主应用程序就能完成一系列任务。用好它,你就不需要在启动器上添加密密麻麻的脚本图标,像盲头苍蝇一样一遍又一遍地寻找想要运行的脚本是哪一个了。

通过「时间任务」定时推送流量使用情况,通知内元素可交互
而对于键盘运行脚本,在同类竞品中把工具延伸到键盘上使用目前除了 JSBox 还没能看到其他这么做的。这是一个很值得玩味的事情,因为它本身不是一种很便捷的运行方式,但在不脱离文本输入的情况下,键盘运行方式的存在还是具有一定实用意义的。
使用键盘进行动图、静图表情搜索,作者:匿名
在操作字符输入、表情查询等任务时,使用键盘运行脚本使得精神更专注于输入这件事情上,而不会因为通知、应用的影响分散我们在处理事情的注意力。

3. 支持小部件唤起键盘

放眼整个应用圈子,能够这样玩小部件的,Pin 第一个,JSBox 第二个。这项黑科技虽然被 iOS 11 通知中心的调整隐藏了光芒,但是它在使用效率上具有十分突出的优点,能够脱离主应用本身完成各种输入查询任务。
小部件唤起键盘输入完成查词任务
在 iOS 11 上讨论小部件的使用效率似乎有点可笑,但是它比起任何文字输入都需要依靠复制完成而言,小部件唤起键盘输入提供给使用效率的可能性要大得多。它不仅可以完成一次性输入操作,在输入完成后自动收回键盘,还可以输入大量文本内容,甚至自由切换输入键盘、换行等。
小部件「中英互译」,可实现换行等长文本输入翻译,作者:Linger
所以这样的输入体验可能性很大,对于简单的查询任务而言,输入键盘可以满足任何输入要求,汉字、英文、特殊符号和表情等不在话下;对于复杂的文本输入任务而言,它也可以完成 包括换行在内的任何内容输入,并且可以随意唤起、收回键盘3 ,从而得到完整的输入体验。
不过,万事皆无完美,更何况这是一项黑科技呢。唤起的键盘不可避免的会阻挡大部分可视范围,尤其在尺寸较小的设备上。这可能不是一个可以解决的问题,但是它会影响我们正常使用小部件的体验,如果输入框的位置不在小部件最顶部的话,键盘很有可能会完全遮挡着它。因此,折中地把 JSBox 小部件摆放在页面的最顶部是最好的选择。

左:输入位置在最顶部的情况;右:输入位置不在最顶部的时候出现输入框、界面遮挡

JSBox 的亮眼之处

从功能上看,JSBox 似乎只是一个可以运行脚本的应用,没有什么特别的地方。但其实不然,JSBox 一些隐藏在代码和功能背后亮眼的地方,我们同样不可忽视,因为这些地方决定了 JSBox 所具备的可能性。
最能代表 JSBox 可能性的地方,我想莫过于:
  • 提供了丰富的功能接口,可以实现大量的 iOS 原生功能;
  • 提供了完整的界面绘制方案,可以实现更多交互功能。
如果希望借助 JSBox 满足自己的需求,这两点确实非常值得我们细细品味。

1. 丰富的功能接口

说到底,JSBox 还是一款通过代码实现功能的工具,这是一类「创造工具的工具」特别之处。你可能会质疑:「Workflow 就没有涉及任何代码呀」。的确如此,但它们的本质是一样的,只是 Workflow 的每一条动作都把代码隐藏在图形框背后而已,通过可视化图形界面和交互简化编程过程,广义上它依然是实现逻辑功能的「代码」。
JSBox 在代码编写上确实先天不足,它无法做到对新手友好的编程体验。不过 JSBox 也很好地平衡了自己的定位,在需要零基础实现简单功能时可以很容易找到替代品,而需要强大可扩展性时它能够「相对简单地实现复杂功能」。JSBox 之所以能够做到这一点,恰恰是因为它没有选择「重新创造一种语法」,而是使用 JavaScript 最基本的语法搭建起整个框架,所有 API 基本上都是在与 JS 对象和 JS 函数4 两种数据类型打交道,从而把 iOS 原生功能实现问题转变为 JavaScript 基础语法编写问题。
JSBox 的潜力主要体现在实现 iOS 原生功能上,为此它为我们提供了丰富的功能接口,可以实现大量的 iOS 原生功能,包括我们可能最常用的 HTTP 请求Safari剪贴板 等等。这些接口不但可以从 官方文档 查阅得知,也可以在开发者提供的 API Samples 脚本运行来体验,不过主要还是以文档为准。

开发者提供的「API Samples」,作者:@cyanapps
除此以外,受限于环境的特殊性,开发者也不断听取用户的需求和建议,为 JSBox 提供更多实用、便捷的接口。例如 Markdown 相关接口,它可以将输入内容以 Markdown 样式显示出来,也可以进行 HTML 与 Markdown 相互转换,对带样式的文本输入体验十分友好。

简单的 Markdown 相关接口示例
还有像 SSHPingHTTP Server 等接口,在我们需要的时候也是极大的便利。

2. 完整的界面绘制方案

我们不难发现 JSBox 的 UI 制作相当亮眼,在展示的角度来说,简单的界面布局比起作为类似 CLI5 的方式完成一系列操作往往具有更高的使用效率。人的第一感官来源于视觉,它是最直接、最快速捕获信息的方式,我们可能不熟悉某个脚本的具体操作,但我们可以很容易通过展示的界面信息理解它具有的功能,比起文字描述要深刻得多。
JSBox 提供的界面绘制方案,让我们并不只能通过「工作流」的方式实现一系列任务,还能通过界面和触发事件建立复杂的交互逻辑,从而给大脑保留充分思考和停顿的时间。以「删除照片」为例解释这句话的意思,就是:
  • 假如我们根据逻辑顺序去思考「删除照片」的步骤,大致过程是:「选中最后一张照片 - 确认删除 - (循环)再选中最后一张照片 - (循环)再确认删除」。
    通过顺序逻辑「循环删除相册内容」,作者:@jun_m
  • 假如我们通过界面完成「删除照片」,那么操作的过程将变为:「浏览一系列照片 - 选中一张照片 - 再浏览其他照片 - 再选中其他照片 - 确认删除」。
    通过交互界面删除照片
可见,使用界面完成任务会让逻辑更直观,每一个步骤都由用户自身主动触发,而不是一步接着一步的选择让人产生「逼迫感」。使用界面的好处是显而易见的,它对使用效率的提升不只是一星半点,但同时也增加了额外的时间成本,我们需要花时间去设计比较合适的交互界面。当然,UI 制作并不是使用 JSBox 的刚需,它只是整体润色的一部分,而 JSBox 为我们提供了更丰富的选择。
简单的界面布局,不论在功能实现上、使用效率上都具有相当的意义和价值。JSBox 不但提供了制作 UI 的方案,而且整合了相当完整的 UI 控件,包括 标签按钮列表图片 等常用控件。这些控件也是 iOS UIKit 最基本的组件,绝大部分 iOS 应用都能看到它们的身影,JSBox 则将它们逐一实现了一遍。通过组合这些控件来设计交互界面,就已经可以胜任各式各样简单需求的展示工作了。
同样,这些接口不但可以从 官方文档 查阅得知,也可以在开发者提供的 UIKit Samples 脚本运行来体验。

开发者提供的「UIKit Samples」,作者:@cyanapps

JSBox 的应用体验

JSBox 是一款十分复杂的应用,它的复杂不只是体现在实现功能的高度扩展性上,还体现在应用自身零零散散的配置项上。因为它实在可以实现太多功能,所以难免事情会变得不那么简单。但在应用体验上,JSBox 确实关注了应用使用的问题,在几个地方做得比较亲近广大用户:
  • 一个是提供了脚本商店,让「淘脚本」这件事变得更加轻易和方便;
  • 另一个是提供了脚本排序、分类功能,让脚本列表稍微不那么混乱。

1. 脚本商店

没有现成脚本的 JSBox 对大多数用户来说是没有灵魂的,因为极大一部分用户都处于使用现成脚本的阶段,要全新地完成一个脚本的编写可能要求比较高。当我们安装并打开 JSBox 的时候,我们看到的只是零碎的几个示例脚本,要真正用起来还需要丰富的脚本支撑。所幸的是,JSBox 已经整合了「脚本商店」云脚本,里面的脚本除了示例以外还会持续更新短期内优质脚本,让「淘脚本」这件事变得更加轻易和方便。
这个「脚本商店」在主应用程序第一个标签页面的右上角云朵图标点击进入,里面「最新」分类可以看到近期最新收录的一些脚本。

脚本商店
在我们初次使用 JSBox 的时候很容易陷入既不知道如何使用,又不知道从哪里获取资源的困惑之中。官方提供的「脚本商店」则是对新手最友好的脚本获取途径之一,它整合到了应用内部,可以很容易、很方便地发现和安装脚本。脚本安装也比较人性化,点击一个脚本时,已经拥有的脚本提示信息会从「获取脚本」变为「更新脚本」。

左:脚本未获取时提示信息;右:脚本已经获取时提示信息
除此以外,「脚本商店」的脚本还能提示更新信息,我们通过更新页面就能够看到哪些脚本可以更新,让脚本信息更有效地聚合在一起。不过更新页面仅仅从「脚本商店」安装有效,通过其他途径安装的脚本不会出现在这个页面中。
这些内容是动态更新的,目前由开发者收录和维护。到目前为止,已经有众多作者通过不同途径分享了不少相当精致的优质脚本,夸张一点地说基本可以达到「拿来就用」的程度了。不过需求这方面仁者见仁智者见智,脚本满足的需求点是无法穷尽的,还需要每位用户共同努力。日后如果继续增加用户上传渠道,将会使 JSBox 的生态进一步拓宽,借助用户共享来进一步丰富 JSBox 的现成资源。

2. 脚本排序、分类

脚本一旦多起来,主应用程序脚本列表就很容易变得特别凌乱,过滤脚本时相当费劲。JSBox 在应用体验上特别好的一点是提供了脚本排序、分类功能,虽说这些功能是一般效率工具的标配,但是对于一个这么「自由」的应用来说,能够考虑到细致的用户体验还是相当值得嘉许的。
脚本排序是为了让较常用的脚本排在比较靠前的位置,使它拥有更高的曝光率。我们只需要长按一个脚本并上下拖动就可以实现脚本排序。脚本分类稍微麻烦一些,需要进入脚本设置进行配置,或直接对分类列表全局管理。

对单个脚本进行分类设置

对分类列表进行全局管理
分类的意义在于,我们可以更方便地让同类脚本聚合在一起,减少不必要的筛选工作。同时,JSBox 可以记住当前显示的分类列表,即使我们退出应用再重新打开,首先显示的依然是最后显示的分类列表,这样能够让大量不必要的脚本「隐藏」起来,只保留需要在主应用程序运行的少量脚本。

合理设置分类列表可以让常在主应用程序运行的脚本更集中地显示,替代冗长的「所有脚本」列表
如何合理地排序和分类这些脚本是一门技术,未来有望详细展开讨论。不过只要在管理脚本时理清适合自己的逻辑,就已经足够整理好这些繁杂的脚本,让它们用起来更加得心应手了。如果没有这些功能,JSBox 就仅仅是一个「容器」而已,是为脚本而不是用户而存在。

为什么选择 JSBox

了解了这么多 JSBox 的特色,其实我们还没能建立起选择 JSBox 的充分依据,它只是我们其中一部分参考,我们还需要从最根本的「需求」上衡量自己是否需要这款应用。

JSBox 与独立应用的关系

就如同前面所说,仅仅从 JSBox 的特色来衡量自己对应用的需求是不充分的,考虑清楚为什么需要一个创造工具的工具而不使用同样功能的独立应用尤为重要。一般我都会建议大家优先考虑优秀的独立应用,一方面是支持独立开发者的付出,另一方面他们在自己的领域里确实做得很优秀。把功能完整、庞大的需求交给正确的应用,相信是广大效率追求者的共识。
然而不可避免的我们会遇到种种不舒适感,毕竟没有任何一款独立应用是为我们量身定制的,哪怕我们是付费订阅会员。这时候我们可以试着把应用中最核心的需求从华丽的糖衣中剥开,针对一个需求点定制最适合自己的脚本。例如其中一个例子:「Add to Playlist」。

使用 JSBox 辅助 Apple Music 离线音乐
我在 Apple Music 听到喜欢的音乐的时候都会把它离线到本地资料库。正常情况下我应该打开「Music」App 浏览歌曲再添加,而使用脚本只需要在小部件运行就能直接添加,并且更进一步地我可以让它显示相似的离线歌曲,省得我去检查是否已经下载了同一首不同版本的歌。
当然现在不是讨论如何实现的时候,我想要传递的信息是,使用脚本的意义应该是辅助独立应用的功能,或者实现独立应用满足不了的需求点,它与独立应用的关系是共存的而不是取代的。
说 JSBox 是效率工具的神器是不公平的,因为如果没有现成的脚本重新造轮的话,前期投入的时间成本本身就很不效率。确实要给 JSBox 一个定位的话,我认为它在可扩展性上具有突出贡献,你可以实现自己的需求、定制自己的 UI,甚至专注于生活、工作效率。就像 七牛云管理 既不好用(上传重复资源无法覆盖、CDN 资源刷新麻烦)又缺失功能(检索资源困难),制作一个脚本对工作效率的提高十分有价值。

使用 JSBox 实现七牛云管理的核心功能
这是「为什么需要 JSBox」最核心的答案,我们不是希望借助它来取代哪些独立应用,而是分离需求上的痛点,让一些用着不舒服、功能缺失的需求点为自己而生。

JSBox 在 iOS 上的限制

最后,我们也要指名这样的工具在 iOS 上有什么限制。
JSBox 的扩展性很高,我们可以借助它完成绝大部分自己的需求。但同时,我们必须认清一个事实,任何能够上架 App Store 的应用都不可能突破 iOS 的限制。换句话说,不管今天讨论的对象是不是 JSBox,它的终极底线都是 iOS 应用的限制。
要展开讨论 iOS 能做什么又将是长篇大论,但是只要我们对自己的手机用得比较清楚且知其所以然,这个问题已经可以大大简化。我们就假想其中某个需求在 iOS 独立应用中可不可能实现,在日常生活使用独立应用时多关注这些点就可以了。举个简单的例子比如 Launcher,我想借助 JSBox 快捷进入 Wi-Fi 设置 二级菜单,然而在 iOS 11 上这个需求受 iOS 限制无法实现,因此不管使用独立应用还是 JSBox 最终都是白搭。
iOS 10 可以快捷进入 Wi-Fi 二级设置菜单,感谢 @pandashi0809
iOS 11 系统限制原因暂无法实现
从这个角度来说,了解清楚 iOS 本身的特点对应用使用会有很大的帮助,我们起码不会把 iOS 想得如此开放和自由,并且能够把握在 iOS 应用上什么样的体验是较为理想的。

答案

回到最初的问题本身,我们「为什么需要 JSBox」?JSBox 像是一把瑞士军刀,可以应对各种各样应用场合,尽可能满足我们各方面需求。在我们某些需求点无法借助独立应用满足、或满足得不如意的时候,创造自己的工具是最好的选择。JSBox 带给我们的就是像应用开发一般的体验,从需求的提出、实现的方式、展示的效果,始终围绕自身的喜好和习惯展开。但它又不与应用开发流程一一对应,弱化了技术知识概念的同时,简化了背后复杂的实现方式。
JSBox 最核心的特点,就是能够以尽可能简单的方式极大化地实现 iOS 原生功能,搭配着这些功能来定制每个人的专属工具。尽管 iOS 在使用体验上仍有诸多不便,但它仍然是一套优秀的智能操作系统,借助 JSBox 高度定制的工具,弥补日常工作、生活手机使用效率的不足,足以让它们改变我们的手机生活。
如果只是单纯希望傻瓜式地「编写程序(广义上)」来提升工作、生活效率,那么我们能够很容易找到替代品(没错,我暗示的就是 Workflow 甚至未来的 Shortcuts);而如果我们希望寻找一款拥有更强扩展性、能够尽可能逼近 iOS 极限的应用,JSBox 是相当有力的候选,配合 JSBox 的众多黑科技和特色,可以玩出非常多花样。

结语:正确看待 JavaScript

以上就是我希望刚开始接触 JSBox 这款应用的朋友了解的信息。
在最后,我希望谈谈自己对编程语言的看法,帮助一些人不敢迈出第一步的人走出误区。
每每谈到代码的编写人们总与「程序员」划上等号,认为这是无法越过的门槛。其实看看下面这张图,你或许是时候应该转变一下自己对编程的观念了。

人人能编程
和自然语言一样,编程语言往往不会是阻碍功能实现的最终因素,它只是让你更好地与机器交流。想要具有较强的定制、自定义能力,必不可少的需要让机器理解你的需求,自然而然也免不了编程语言的学习。
JSBox 的特别之处不在于编程上,引用开发者的一句话:
编写代码只是实现功能的手段,我们的一切最终都是为了效率的提高。
换句话说,JSBox 并不是单纯提供运行 JS 脚本的环境,而是与 iOS Native 6 打通的桥梁,当中 JavaScript 的地位,其实只是你与 Native 环境交流的载体而已,在实际使用时大可不必关注 JavaScript 基本语法以外的知识。
我也不希望大家看完文章就被 JSBox 的复杂性吓跑,你可能一看到 JSBox 的代码就感到一头雾水,但事物的「复杂」具有两面性,从积极的角度,它的复杂是高度可定制的根本保证。我猜测,大多数望而却步的人并不是觉得 JSBox 不够吸引,而是担心自己没有办法用好这款应用,觉得自己无法越过 JavaScript 这道坎。
这样的顾虑是不可避免的,首先 JavaScript 一摆出来可能就已经吓住了一批连编辑 iOS Workflow 都有压力的人。但是这样思考问题也太消极,正如整篇文章的脉络,我认为选择一款应用不是从它难与不难衡量,而是我是否需要它以及它是否值得被我需要来衡量。
所以,怎么去选择应用是一个问题,怎么去物尽其用又是另一个问题。如果我们确实看中了 JSBox 某些特色,需要借此来解决某些需求痛点,那么它就是值得被选择的,后续如何学会编写 JSBox 脚本的问题,我可以大胆地说,只要愿意花费时间学习,即使没有语言基础,照葫芦画瓢也能做出一个属于自己的脚本。而至于能不能真正用好 JSBox,毕竟用好可以分几种,不只是能够编写华丽的界面和动画才叫用好了,只用现成脚本也能用好它。未来有望面向不同用户群体对 JSBox 的使用展开深入的分析和讨论,让每个群体都能找到使用 JSBox 的落脚点。
最终,是否值得花时间学习 JSBox 的基础 JavaScript 语法,我没法给出太多建议。但我可以保证,即便不碰任何代码,也能用出 JSBox 的价值,而且需要关注的内容还不少。不过,从心理上抵触任何代码以致不愿意稍微踏出一步尝试编写脚本,还是令人十分惋惜的。因为,你能体验的,只是 JSBox 的冰山一角。
最后的最后,我想和大家分享一个 Apple 视频7 的一段对白,也推荐大家看完这个视频。虽然讲的是自家的 Swift 语言和应用开发,但传达的观念,值得我们思考。

Apple 传达的对编程的看法

声明

以上截图、视频示例均取得作者同意,如无特殊说明示例均来自本人。
  • Pin、API Samples、UIKit Samples:出自 JSBox 开发者钟颖,Telegram @cyanapps。
  • Days Pro:出自 ZiGma,Email pyrogas7@gmail.com。
  • 中英互译:出自 Linger,Website http://liuguogy.com。
  • 循环删除相册内容:出自 Junm,Telegram @jun_m。
  • Launcher 进入 Wi-Fi 二级设置菜单:感谢提供 iOS 10 视频,Telegram @pandashi0809。
  1. API(Application Programming Interface,应用程序编程接口)是一系列预先设定的功能接口,开发人员无须考虑其底层的源代码为何、或理解其内部工作机制的细节,就能调用一组例程功能。
  2. 截止至 JSBox V1.12.0,应用尚未提供音乐相关的独立接口,本例通过 Runtime 实现。
  3. 需开启 $app.keyboardToolbarEnabled,详见开发文档:https://docs.xteko.com/#/foundation/app?id=appkeyboardtoolbarenabled
  4. JS 对象类型可以简单理解为一系列「键-值」对,如 {name: "ryan"};JS 函数类型可以简单理解为可重复使用的代码块,如 function hello(){ alert("Hello, world."); }。
  5. CLI(Command-line Interface,命令行界面)是没有图形用户界面的指令操作界面,表现为只显示输入、输出的信息。
  6. 这里的 Native 是相对于 JavaScript 来说的,指 iOS 环境的 Objective-C 代码。
  7. 出自 Apple 人人能编程:https://www.apple.com/cn/everyone-can-code/

上一期
第 43 周预告:你觉得通讯软件会干扰你的工作时间吗?
下一期
如何提高搜索的精度与速度
 
精选评论(1) 我的评论
  • Bestony
    "使用键盘进行动图、静图表情搜索" 地址:https://jsboxbbs.com/d/241--
    07月17日 1