惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
J
Java Code Geeks
腾讯CDC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
博客园 - 司徒正美
Stack Overflow Blog
Stack Overflow Blog
美团技术团队
L
LangChain Blog
WordPress大学
WordPress大学
A
About on SuperTechFans
Martin Fowler
Martin Fowler
月光博客
月光博客
Y
Y Combinator Blog
U
Unit 42
D
Docker
Recent Announcements
Recent Announcements
Hugging Face - Blog
Hugging Face - Blog
B
Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
G
Google Developers Blog
Last Week in AI
Last Week in AI
T
The Blog of Author Tim Ferriss
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
ScriptWidget 发布,创作专属你的小组件 - 少数派
2021-03-10 · via 少数派

想法来源

iOS14的Widget功能着实让iPhone的桌面热闹了起来,各种Widget雨后春笋般开发出来。作为开发者自然就想去开发一款App,然而在试用了各种Widget应用后,不擅长UI开发的我退缩了,这些Widget都太漂亮太好看了。其中在试用了JSBox和Scriptable后,惊叹Widget还可以用JavaScript编写,只是开发起来“不那么直观”。开发Widget应用的想法暂时搁置了。

直到去年年底,工作中接触了ReactJS这个强大的前端框架。突然某一天想到,能否用React JSX这样的标签语法来强化一下JSBox和Scriptable的Widget开发体验呢。

class ShoppingList extends React.Component {
  render() {
    return (
      <div className="shopping-list">
        <h1>Shopping List for {this.props.name}</h1>
        <ul>
          <li>Instagram</li>
          <li>WhatsApp</li>
          <li>Oculus</li>
        </ul>
      </div>
    );
  }
}

直到过年期间,各种查阅资料后,发现并不复杂。和普通JavaScript代码之间,只需要用babel来做一层翻译。

于是,就诞生了ScriptWidget。

简单介绍

先看最简单的ScriptWidget脚本:

$render(
  <text font="title">Hello ScriptWidget</text>
);
  1. $render 就是指把括号中的UI结构画出来。
  2. <text></text>标签是文本标签,显示出一个文本。
  3. font="title" 就是设置文本的字体大小。title是内置的字符串描述的文本大小,还有其他的数值,可以见文档。

上面的代码,可以显示出下图的Widget(下图是在Widget中的预览功能)。

好了。就这么简单。

还支持哪些标签

上面展示了text标签,目前ScriptWidget所有支持的标签如下:

  • text 显示文本
  • image 显示图片
  • vstack 垂直布局
  • hstack 水平布局
  • zstack 上下布局(Z轴布局?不知道怎么称呼了)
  • spacer 自动填充空间
  • date 日期

是的,目前只支持这几个标签。

再看个稍微复杂的代码:

$render(
  <vstack frame="max">
    <text font="title">Hello ScriptWidget</text>
    <text font="caption" color="red">
      Hello ScriptWidget
    </text>
    <text font="caption" background="blue" color="white">
      Hello ScriptWidget
    </text>
  </vstack>
);

可见vstack下的所有的text都是垂直排列。

支持哪些API

  • console 控制台输出日志,主要用于调试
  • fetch 发起网络请求
  • $device 获取设备信息
  • $gradient 创建渐变颜色
  • $render 渲染UI结构

emmm,目前确实只支持这些,刚发布第一个版本嘛~

今天是星期五吗?

再实现个稍微复杂的,直接上手机截图:

预览是这样:

手机里展示这样:

emmm,貌似显示不全,可以调整文字大小哈。

下载地址

App Store搜索 ScriptWidget 即可,或点击链接:

https://apps.apple.com/cn/app/scriptwidget/id1555600758

使用步骤

使用方法很常规,大家直接见图哈

创建脚本

点击右上角加号,进入 Create from templates:

img

例如选择星期五这个 Is Friday Today, 然后点击创建 Create 

添加Widget

  1. 长按iPhone的桌面
  2. 找到 ScriptWidget 应用.
  3. 选择一个Widget大小
  4. 然后点击桌面上的Widget,默认显示 No script selected ,选择刚才创建的脚本。
  5. 选择执行频率,不选择的话,默认1小时执行一次脚本。
  6. 完成。
img
img
img