写点什么

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:001453
用户头像

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

关注

评论

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

点云标注技术在智能制造中的应用

来自四九城儿

Scrum的三个角色及其核心职责

顿顿顿

Scrum 敏捷开发 敏捷开发管理工具 scrum敏捷工具

2023-05-23:如果交换字符串 X 中的两个不同位置的字母,使得它和字符串 Y 相等, 那么称 X 和 Y 两个字符串相似。如果这两个字符串本身是相等的,那它们也是相似的。 例如,“tars“

福大大架构师每日一题

golang 算法 rust 福大大

Mac视频后期特效工具 motion5 v5.6.4进行了额外修复和优化

Rose

mac软件下载 Motion 5 motion5中文 视频后期特效处理 Motion 5破解版

阿里大牛熬了一个月肝出这份40W 字 Java 面试手册,全是面试必问技术

架构师之道

编程 java面试

C语言编程—判断语句

梦笔生花

fastposter v2.15.0 从繁琐到简单,简洁好用的海报生成器

物有本末

FastApi Pillow 海报生成器 海报编辑器 海报小程序

mac上好友的git客户端:SourceTree 最新中文版

真大的脸盆

Mac Mac 软件 Git客户端

【线下|05.27】|StarRocks & Friends 杭州站

StarRocks

数据库 大数据 Meetup 杭州

浪潮数据:智能网卡在分布式 SDN 网络加速的应用与实践 | 第 79 期

OpenAnolis小助手

开源 sdn 龙蜥大讲堂 浪潮数据 智能网卡

从ROI出发探究自动化测试

QE_LAB

自动化测试 测试策略 ROI

名侦探白洞(一):智能家居灵异事件

脑极体

AI 智能家居

通过 HTTP/2 协议案例学习 Java & Netty 性能调优:工具、技巧与方法论

阿里巴巴云原生

阿里云 云原生 dubbo

Scrum框架和流程

顿顿顿

Scrum 敏捷开发 敏捷开发管理 scrum工具

苹果Mac视频转码编辑工具Compressor v4.6.4最新中文激活版

Rose

下载 fcpx Compressor Mac下载 苹果视频编码工具 Compressor破解版

龙蜥白皮书精选:利用 io_uring 提升数据库系统性能

OpenAnolis小助手

开源 高性能存储 龙蜥sig IO栈 iGraph

理解JVM工作机制(一) JVM内存区域

Geek漫游指南

Java JVM

Logic Pro X(苹果专业音频制作软件)v10.7.8中文版

Rose

苹果mac软件下载 Logic Pro X下载 Logic Pro X破解 Logic Pro X教程 音频制作软件

2022年中国标准创新贡献奖获奖名单公示,海尔再添两项标准创新奖

Openlab_cosmoplat

开源社区 海尔

科技引领,亮出高质量发展新引擎!

Openlab_cosmoplat

工业互联网 开源社区

玩转 LLMs 之「为什么不问问 Milvus」

Zilliz

Milvus 向量数据库 autogpt zillizcloud langchain

如何使用Go实现代理模式

Jack

golang 设计模式

低代码平台中的分布式RPC框架(约3000行代码)

canonical

开源 dubbo RPC框架

什么是 Final Cut Pro? fcpx视频剪辑下载安装

Rose

Final Cut Pro下载 Final Cut Pro破解版 FCPX软件 fcpx Mac视频剪辑软件

MOSN 基于延迟负载均衡算法——走得更快,期待走得更稳

SOFAStack

负载均衡 架构 分布式 开发者 云原生

大模型总是「胡说八道」怎么办?手把手教你如何应对!

Zilliz

Milvus 向量数据库 ChatGPT zillizcloud langchain

PoseiSwap IDO在Bounce上启动在即,如何参与?

股市老人

Django笔记三十五之admin后台界面介绍

Hunter熊

Python django admin

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