写点什么

Meteor 0.8:发布全新的渲染系统 Blaze

  • 2014-04-14
  • 本文字数:1390 字

    阅读完需:约 5 分钟

Meteor 最近发布了 0.8 版本,该版本“对 Meteor 的渲染系统做了一次彻底的检查”。Meteor 的下一代实时模板引擎 Blaze 支持细粒度的 DOM 更新、jQuery 集成和更简单的 API。Blaze 替代了在 2012 年发布的 0.4 版本中所引入的实时页面更新引擎 Saprk。

Matt Debergalis 在 Meteor 的博客上将 Blaze 描述为“对开发者友好的”,同时它的架构比起 Spark 有几个方面的提升。

Blaze 包含两部分:第一部分是一个构建时编译器,它将模板转换成 JavaScript 代码。Spacebars——Handlebars 风格的编译器——将 HTML 模板转换成实时更新的 DOM 元素,用户能够编写普通样子的 HTML 模板和帮助器。

“当某个用户修改了数据或者某个模板依赖的新数据通过网络抵达的时候,Blaze 就会自动地更新你的屏幕,不需要声明任何依赖,也不需要编写管理应该如何更新屏幕的代码。”Debergalis

Blaze 的第二部分是运行时 API,它“渲染元素,跟踪元素的依赖,在元素的完整生命周期内随着依赖的变化更新元素”。

对之前 Spark API 的替代包括移除了Meteor.render,为定制块帮助器的定义引入了一个新模式。添加和废弃的API 列表包括UI.body 现在是与整个BODY 元素相关的一个模板。

Spacebars 解析器让用户能够做一些之前不能做的事情,例如:

  • HTML 感知更新。模板解析器现在会解析 HTML 元素,这让细粒度的响应更新成为可能,包括对 DOM 元素进行属性级的更新。
  • 预编译。Spacebars 编译器会生成调用内部 Meteor 接口的简单程序代码以便于在将来执行客户端或者服务器端的渲染工作。这比在运行时解释模板或者解析它的 HTML 输出更加有效。
  • 语法扩展。Handlebars 语法极小,我们预见随着时间的发展需要添加一些额外的、精选的扩展。我们还会实现 Handlebars 现在支持但是 Meteor 并不具备的顶层特性,例如支持对象,让你能够访问当前索引或者键的#each。

在 Meteor 0.8 中 Handlebars 命名空间已经被废弃。现在 Handlebars.SafeString 改成了 Spacebars.SafeString,而 Handlebars.registerHelper 则变成了 UI.registerHelper。

Spacebars 需要 HTML 是“格式良好的”。引用 Blaze 项目 GitHub 页面上的说明:“在 Spark 中 HTML 解析是通过浏览器完成的,这种方式更加宽容”。

另外,Blaze HTML 解析器目前还没有完全实现 HTML 规范。发布说明中还特别指出它并不会自动地关闭某些标签,例如

  • 。Meteor 社区非常欢迎 0.8 版本的发布。在 LinkedIn 网站上的 Meteor中,用户 Uğur Toprakdeviren 发起了一个讨论,他问道:“对于新版本的 Meteor(Blaze、Spacebars 等)你的观点是什么呢?”。

    Ongo Works 的创建者和 CTO Aaron Singmaster-Judd 回复说:“真了不起,做的好,感谢 Meteor 团队和在新代码库上工作的社区包开发者。”。

    “升级已有的包可能需要一些努力,而这也会导致 Web 上呈现出大量无效的信息,但是这是值得的。”

    Hacker News 上的用户对于该更新的反应也很不错。用户 elsherbini 对 jQuery 集成的评论是“jQuery 兼容的工作量非常巨大,赞一个!”。其他用户也分享了自己对 Blaze 的正面评价,TylerE 对编译器的评价是:“不得不说,我非常兴奋,因为现在终于可以按照一种非旁门左道的方式去使用 jade 模板了,对我而言这是重大的胜利。”。

    Debergalis 指出实时模板引擎是 0.8 版本中仅有的新特性,它向 Meteor 1.0 版本迈出了重要的一步。

    查看英文原文 Meteor 0.8: Blaze Release Overhauls Rendering System

  • 2014-04-14 02:122078
    用户头像

    发布了 321 篇内容, 共 118.9 次阅读, 收获喜欢 19 次。

    关注

    评论

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

    Binder驱动

    北洋

    Andriod 7月月更

    Spring IOC

    武师叔

    7月月更

    【C语言深度剖析】详解strlen与sizeof的区别及用法

    Albert Edison

    7月月更

    应用上容器云的准入条件和最佳实践

    穿过生命散发芬芳

    7月月更 应用上云

    IoT物联网安全架构设计方案

    明亮安全观

    网络安全 IoT IoT安全

    康威定律如何解释微服务的合理性

    源字节1号

    程序员 软件开发

    【愚公系列】2022年07月 Java教学课程 02-Java语言JRE和JDK

    愚公搬代码

    7月月更

    【Python技能树共建】python selectolax 模块 & Python爬虫模拟登录

    梦想橡皮擦

    Python 爬虫 7月月更

    想要治好水,龙王也要拜拜这朵云

    脑极体

    Qt | 定时器的使用 QTimer

    YOLO.

    定时器 qt 7月月更

    leetcode 932. Beautiful Array 漂亮数组(中等)

    okokabcd

    LeetCode 分治 算法与数据结构

    spring篇之属性注入

    邱学喆

    spring 属性注入 @Autowired注入原理 @Resource注入原理 @Qualifier

    浅尝了一下TypeScript,上头了!

    为自己带盐

    typescript 7月月更

    模块六作业 - 拆分电商系统为微服务

    Elvis FAN

    OKALEIDO:我们为何如此看好多媒体NFT板块?

    西柚子

    【问道】计算机er要掌握的计算机思维

    小明Java问道之路

    计算机体系结构 编译原理 计算机组成原理 汇编语言 7月月更

    Python Asyncio 初探:基本概念和模式

    宇宙之一粟

    Python asyncio 7月月更

    《MySQL入门很轻松》第4章:数据表的创建修改删除

    乌龟哥哥

    7月月更

    小程序页面介绍

    小恺

    7月月更

    拆分电商系统为微服务

    joak

    电商微服务

    intelamd

    图解网络:什么是DHCP动态主机配置协议?

    wljslmz

    网络协议 DHCP 网络技术 7月月更

    怎样的工作要辞职呢?

    KEY.L

    7月月更

    如果设计业务微服务架构 - 作业

    阿拉阿拉幽幽

    Ark UI中的问题汇总【系列1】

    坚果

    Open HarmonyOS OpenHarmony Open Harmony 7月月更

    【C#】System.Linq,万能的查询语句

    萧然🐳

    C# 7月月更 Linq

    初始Envoy项目

    阿泽🧸

    envoy 7月月更

    Python 入门指南之输入和输出

    海拥(haiyong.site)

    7月月更

    计算机操作系统之进程与线程

    未见花闻

    7月月更

    5G NR RRC协议总体介绍

    柒号华仔

    5G 7月月更

    闭包

    Jason199

    js 闭包要点 闭包函数 7月月更

    Meteor 0.8:发布全新的渲染系统Blaze_JavaScript_James Chesters_InfoQ精选文章