写点什么

Basecamp 发布 JavaScript 框架 Stimulus 1.0

  • 2018-02-21
  • 本文字数:1704 字

    阅读完需:约 6 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

Basecamp 全新推出 Stimulus 1.0,该产品强调 HTML 页面上 JavaScript 轻量级的实现,取代了固有的全功能 JavaScript 应用程序。

Basecamp 称其为“你所拥有的最适用于 HTML 的 JavaScript 框架”。

在 Stimulus 推出之前,Basecamp 团队尝试使用了一系列的技术和库(例如 jQuery)来搭建 Basecamp,但他们并没有获得一个比较全面的解决方案,并且他们发现自己的代码库中有太多不同的模式,很难实现一致性、复用性,对于新入职的团队成员来说很难上手。Basecamp 团队认为大多数现代的框架和 Basecamp 需要解决的问题相违背,它们大多数强调 HTML,而 JavaScript 仅仅起到辅助作用,可是 Basecamp 恰恰相反。

单页面 JavaScript 应用程序提供了更及时的用户交互反馈,在页面加载之间不会白屏,并在内存中保存了 JavaScript 库,因此受到了越来越多的欢迎。Stimulus 旨在通过搭建库 Turbolinks 来保持单页面应用程序的优势,Turbolinks 库可以通过后台持续过程的 HTTP 请求拦截链接,并加载新的 HTML 视图。Turbolinks 起源于 pjax ,pjax 是由 GitHub 开发的。和大多数框架不同的是,Stimulus 加载来自服务器的新 HTML 片段,而不是在客户端将 JSON 数据转换为新的 HTML。

与大多数通用或同构的 JavaScript 框架有所不同,Stimulus 重点仍然加载新的 HTML 视图,而大多数同构的框架仅使用服务器端呈现初始页面视图。

Stimulus 发布强调了三个主要的方面:控制器、动作和目标,并不断增强 HTML 上这些功能。开发人员可以在 HTML 配置一些自定义属性:

复制代码
<!--HTML from anywhere-->
<div data-controller="hello">
<input data-target="hello.name" type="text">
<button data-action="click->hello#greet">
Greet
</button>
<span data-target="hello.output">
</span>
</div>

然后写一个控制器作用于 HTML:

复制代码
// hello_controller.js
import { Controller } from "stimulus"
export default class extends Controller {
static targets = [ "name", "output" ]
greet() {
this.outputTarget.textContent =
`Hello, ${this.nameTarget.value}!`
}
}

Basecamp CTO 兼 Ruby on Rails 创造者 David Heinemeier Hansson 称

Stimulus 关注于如何处理现有的 HTML 文档。有时候这就是增加一个 CSS 类,可以隐藏、动画或强调一个元素。有时候这就是重新以组排列元素。有时候这就是操作元素的内容,比如转换 UTC 时间为本地时间,并显示本地时间。

有时候你希望用 Stimulus 来创建新的 DOM 元素,当然你可以这样做。在未来,我们甚至会开发新的功能让它变得更加简单。但这只是少数人的用例,重点还是在操作而不是创建元素。

从很多方面来说,Stimulus 可以说是回到了十年前,当框架不能完全控制 web 应用程序的时候,创建并渲染 DOM 并追踪状态。它旨在为需要逐步增强的内容网站服务,而不是为已成熟的 JavaScript web 应用程序服务。

HOOQ 的软件工程师 Zufrizal Yordan在 Twitter 评论

我喜欢 Stimulus 的原因是其逐渐增强,而不是通过 JS 为 UI 服务,有时候这样做比较容易。不同的人,不同的方法。很高兴在现在的大环境下能有一款产品不提供完全的 JS。

和一些小的 JavaScript 框架不同的是,Stimulus 是由 TypeScript 编写的。

Basecamp 团队选择 TypeScript 有几个原因,包括适宜的类型注解、工具、重构、防止错误产生、类、代码完善和内嵌文档。Basecamp 工程师 Sam Stephenson 向 InfoQ 解释了使用 TypeScript 的好处:

首先,无论我写不写,这些类型都在我的代码中。TypeScript 的可选注解让编辑和重构过程变得更加适宜。我不喜欢使用类似 Cocoa 风格的委托接口紧耦合地组合类。TypeScript 的接口系统在这里很实用,因为编译器和编辑器会在实现的时候给我列出很多待写的方法。

Stimulus 基于 MIT 开源协议,可以在GitHub 上下载使用。

查看英文原文: Basecamp Releases Stimulus 1.0 JavaScript Framework


感谢罗远航对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2018-02-21 18:001929
用户头像

发布了 218 篇内容, 共 78.8 次阅读, 收获喜欢 76 次。

关注

评论

发布
暂无评论
发现更多内容

腾讯云AI存储解决方案持续升级,为AI全业务场景提供全面支持

极客天地

通义灵码与魔搭 Notebook 深度集成:在线编码开箱即用,开发效率倍增

阿里云云效

阿里云 云原生 通义灵码

10倍降本、10倍无损弹性!Kafka Serverless 基础版与专业版重磅发布!

阿里巴巴云原生

kafka 阿里云 云原生

模型即产品?从应用角度看AI产品发展趋势

秃头小帅oi

TUSD运营商亏空近5亿美元,FDUSD发行方是罪魁祸首?

TechubNews

去中心化 孙宇晨 FDUSD

AI时代的数据底座:火山引擎多模态数据湖的设计与实践

极客天地

堡垒机软件有哪些?举例一个说说!

行云管家

网络安全 堡垒机 云堡垒机

1688商品详情API接口(1688.item_get)

tbapi

1688API 1688数据采集 1688商品详情API

Excel百万数据如何快速导入?

不在线第一只蜗牛

Excel

【解决方案】多租户技术架构设计入门(一)

量贩潮汐·WholesaleTide

架构 多租户

Go 语言常见错误——标准库

FunTester

淘宝商品详情API+拍立淘实战:如何用技术重新定义"找货"?

代码忍者

淘宝API接口

蚂蚁清华联合发布 AReaL-boba,代码数据全开源,助力社区轻松复现 SOTA 推理模型

蚂蚁开源

开源 强化学习 蚂蚁

全彩LED大屏幕亮度过高的影响以及如何调整?

Dylan

行业 LED显示屏 全彩LED显示屏 户外LED显示屏 led显示屏厂家

深度解析:通过 AIBrix 多节点部署 DeepSeek-R1 671B 模型

极客天地

抖音商品详情 API 接口(dy.item_get)全解析

tbapi

抖音API 抖音商品详情API

智能制造:ERP的发展介绍与理解感悟

积木链小链

数字化转型 制造业 智能制造

25年河南等级保护测评公司名单看这里!

行云管家

网络安全 等保 等保测评

首批!天翼云息壤智算一体机顺利通过信通院三项测试!

天翼云开发者社区

人工智能 云计算 智算一体机

故障定位系列-1-Web应用接口级故障如何定位

乘云数字DataBuff

运维 故障定位 智能运维 运维监控

BeeWorks内网im即时通讯,安全的企业内部沟通工具

BeeWorks

IM 即时通讯IM 私有化部署 局域网视频软件

从 DeepSeek 看25年前端的一个小趋势

极客天地

数智先锋 | 博睿数据赋能蒙牛集团构建大型企业的应用高级可观测能力

博睿数据

量子计算与人工智能的结合:未来科技的双重革命

天津汇柏科技有限公司

人工智能 量子计算

【FAQ】HarmonyOS SDK 闭源开放能力 —Account Kit(3)

HarmonyOS SDK

harmoyos

BOE(京东方)打造东北首个沉浸式数字艺术体验空间 科技解码文明释放数字文旅想象力

爱极客侠

Kafka 4.0 重磅升级:架构革新与性能飞跃,全面拥抱 KRaft 时代!

测试人

人工智能

仅3步!即刻拥有 QwQ-32B,性能比肩全球最强开源模型

阿里巴巴云原生

阿里云 Serverless 云原生

通义灵码与魔搭 Notebook 深度集成:在线编码开箱即用,开发效率倍增

阿里巴巴云原生

阿里云 云原生

AI 网关代理 LLMs 最佳实践

阿里巴巴云原生

阿里云 云原生 云原生AI网关

Apipost协议全栈支持+国密算法,调试效率飙出星际!

数据追梦人

Basecamp发布JavaScript框架Stimulus 1.0_JavaScript_Dylan Schiemann_InfoQ精选文章