QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

与 Ember 共同创作者 Tom Dale 聊 Ember 3.0 及其他

  • 2018-04-07
  • 本文字数:1882 字

    阅读完需:约 6 分钟

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

Ember 的共同创作者兼 LinkedIn 高级软件工程师 Tom Dale 最近与 InfoQ 谈论了最新发布的 Ember 3.0 版本、Ember 项目的方向、它与现代 Web 标准的一致性以及 Ember 在 Rust 和 Web Assembly 方面进行的最初实验。

Ember 3.0 版本本身没有增加新的功能,而是取消了一些过时的功能。 Tom Dale 说:

我们在 Ember 2.x 中实现了很多很棒的东西。 与许多其他项目相比,我们希望将好的东西带入 2.x 系列,而不是强迫用户升级来获得新的东西。

对于能够在没有重大变更的情况下实现大规模改进,Ember 团队感到非常自豪。 例如, Glimmer 渲染引擎成功地在 Ember 2.10 中实施,而没有破坏 Ember 现有的构建组件的方法。

当被问及即将发布的 3.x 版本将会有什么重大变化时, Dale 说:

Ember 整体上不需要进行重大的根本性改变。 我们有清晰的愿景,Ember、Ember Data 和 Ember CLI 之间必须要有很好的分离。 对于 Ember 3.x,我们将专注于简化,使 Ember 更清晰,并与 JavaScript 社区的最佳实践保持一致。

对于 Ember 用户来说,Glimmer 堪称是视图层方法的重大变革,它与 React 普及的单向数据绑定方法在许多方面类似。 Dale 解释了 Glimmer 的不同之处:

最新的单向数据流方法是“数据向下、动作向上”(简称 DDAU)。我相信您在 Ember 社区中已经听过无数次“DDAU”这个规则了,因为它可以帮助你避免陷入双向绑定,而 Glimmer 组件则将该模式直接应用在 API 中。

多年来,人们对于 Ember 的印象一直是所有功能必须一起使用,但实际上 Glimmer 可以单独使用。 Ember 项目的目的是希望为 Glimmer 提供一个让用户选择或退出其他 Ember 功能的途径。 Dale 解释了导致这种转变的原因:

前端工程已经成为高度状态化的分布式客户端,并且在高复杂度的情况下,一切都会崩溃。 许多新开发人员很热情,但需要帮助才能实现他们的目标。 对于这点,一个很好的比喻是你打保龄球时的球道护栏。 Glimmer 也是一样,它能防止用户在与 DOM 交互时发生错误。

Ember 的元件库将继续扩大。 尽管 Dale 提醒说,Glimmer 组件可以作为 Web 组件导入应用程序中,

但 Web 组件并不能替代 Ember、React 和其他框架的组件系统。 Web 组件主要用于叶子组件,但它们多少有点像黑盒子。跨组件共享资源并不容易,所以这限制了 Web 组件的高效渲染。

Ember 支持使用 Ember 组件作为 Web 组件,这是 Ember 在符合现有标准上的一项更大的尝试。 Ember 团队还参与了 TC39,一项推动 JavaScript 语言发展方向的过程。 譬如,Dale 说

ES6 类和装饰器非常重要,它们永远拥有类似于 Ember 的东西,但是现在它们可以使用约定俗成的东西,所以与标准语言功能相比,人们可以使用该框架,而无需学习框架中的所有内容。

Ember 对待标准的方法类似于其他框架(如 Angular 2+、Dojo 2+、React 和 Vue),目的是尽可能与语言功能保持一致。

除了这些标准之外,Ember 团队也是 TypeScript 的粉丝,因为 TypeScript 给其团队带来了极高的生产力。并非所有人都是 TypeScript 的粉丝,Ember 团队对此表示尊重并且一直致力于确保该项目的 API 对于 JavaScript 工程师来说是合理的。

该团队开发了框架的一部分,包括支持 TypeScript 的 Glimmer,并且最近开始在 Ember Core 中使用。 Dale 解释了他如何克服他最初对 TypeScript 的怀疑:

我们有一个在任何地方都需要的数据结构,我们对它做了很小的改动。 我已做好了准备,预计变更需要两周时间。 然而,使用 TypeScript 及其重构工具,我只是通过跟踪 TS 错误,便让测试套件在两天而不是两周后通过测试!

Ember 还为 TypeScript 用户提供服务,因为在 TypeScript 中发布的 npm 软件包会自动提供 TS 定义,以支持喜欢使用 TypeScript 开发应用程序的 Ember 用户。

采访以 WebAssembly 作为结束。 目前一项有关 Glimmer 虚拟机的工作正在紧锣密鼓地进行之中,该虚拟机是使用 Rust 开发的,并在浏览器中使用了 WebAssembly。 Dale 指出:

Rust 团队在推出 WebAssembly 方面已经付出了很大的努力。 但 WebAssembly 功能仍然相当有限,但 Ember 团队希望确保他们已经为 WebAssembly 做好了准备,或许它将是 Ember 部分框架的未来。

感谢 Tom Dale 花时间与 InfoQ 谈论了关于 Ember 的最新进展。 要了解有关 Ember 的更多信息,请访问 Ember 网站

查看英文原文 Ember 3.0 and Beyond with Co-creator Tom Dale


感谢无明对本文的审校。

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

2018-04-07 19:001129
用户头像

发布了 34 篇内容, 共 19.4 次阅读, 收获喜欢 47 次。

关注

评论

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

架构实战营 - 模块八作业

李东旭

「架构实战营」

B站就是一个神奇的地方

IT蜗壳-Tango

9月日更

数据驱动的前提,数据质量

奔向架构师

数据治理 9月日更

【架构图话说】我们怎么就做上了“中台”

超哥图话说

架构 中台 复杂 增长

WEB 剪切板操作navigator.clipboard的使用

devpoint

Blob 9月日更

深入理解rtmp(四)之协议实现分析

轻口味

android 音视频 RTMP 9月日更

如何应对老板项目?

石云升

项目管理 9月日更

如何将集合中的数据List,对比写入系统中

卢卡多多

集合 同步 9月日更

架构训练营模块七作业(补)

老实人Honey

Typora+PicGo+Gitee搭建博客写作环境

Simon郎

Typora PicGo markdown编辑器 免费图床

Python——内置模块中的内置函数

在即

9月日更

架构实战营模块八作业

老猎人

架构实战营

字符串池化,减少了三分之一的内存占用

newbe36524

C# string 内存

【VueRouter 源码学习】第十篇 - 全局钩子函数的实现

Brave

源码 vue-router 9月日更

坚决抵制造星炒星等畸形价值观,资本是如何通过造星收割粉丝的

石头IT视角

模块三作业

Geek_fc100d

「架构实战营」

redis主从实践(二)

风翱

redis 9月日更

☕【Java技术指南】「并发编程专题」CompletionService框架基本使用和原理探究(基础篇)

洛神灬殇

Java CompletionService Executor 9月日更

网络攻防学习笔记 Day134

穿过生命散发芬芳

网络安全 9月日更

外包学生管理系统架构设计

陈家豪

架构实战营

在线JSON转Rust工具

入门小站

工具

CentOS 7 小技巧合集

耳东@Erdong

centos Centos 7 9月日更

极客时间架构实战营作业三

jjn0703

架构实战营

看好创业项目,避免藏在乐观下的无知状态

boshi

创业

架构实战营模块7作业

技术是伙伴

架构实战营

linux之chroot命令

入门小站

Linux

中秋节快到了,确定不爬点月饼送岳母娘?

Regan Yue

爬虫 后端 Go 语言 引航计划 月饼

浏览器缓存之强缓存和协商缓存

Augus

浏览器 9月日更

老师偷偷塞给我一份资料,封面写着《操作系统》,下面一行小字

梦想橡皮擦

9月日更

外包学生管理系统架构文档

穿裤子的云

架构实战营

Golang 接受 Interfaces, 返回 Structs

baiyutang

设计模式 Go 语言 构架 9月日更

与Ember共同创作者Tom Dale聊Ember 3.0及其他_JavaScript_Dylan Schiemann_InfoQ精选文章