写点什么

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

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

    关注

    评论

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

    Dubbo 3.1.0 正式发布,数据面原生接入 Service Mesh

    阿里巴巴云原生

    阿里云 云原生 dubbo

    这些并发容器的坑,你要谨记

    华为云开发者联盟

    后端 开发

    99 大促来袭,利用 MSE 服务自治体系为业务保驾护航

    阿里巴巴云原生

    阿里云 微服务 云原生

    基于龙蜥操作系统指令加速,降低云原生网关的构建成本

    阿里巴巴云原生

    阿里云 云原生 云原生网关 龙蜥

    [JS入门到进阶] 手写解析URL参数的工具,并部署。用起来又快又爽!

    HullQin

    CSS JavaScript html 前端 8月月更

    干货 | Pytest 结合 Allure 生成测试报告

    霍格沃兹测试开发学社

    Nft数字藏品app开发,开发数字藏品系统

    开源直播系统源码

    数字藏品 数字藏品软件开发 数字藏品开发 数字藏品系统

    APICloud 可视化编程 - 拖拉拽实现专业级源码

    YonBuilder低代码开发平台

    低代码开发 多端开发 可视化开发

    长安链源码分析启动(2)

    长安链

    低代码是什么意思?低代码平台的技术特点是什么?

    优秀

    低代码

    CI 可观测性使变更管理发挥作用|Foresight

    观测云

    9月17日 杭州站 | Serverless Developer Meetup 开启报名

    阿里巴巴云原生

    阿里云 Serverless 云原生

    阿里云金融创新峰会云原生分论坛圆满举办,加速金融行业落地云原生

    阿里巴巴云原生

    阿里云 云原生 金融行业

    AAX影响力实验室探究加密产业对各行业的影响

    股市老人

    SQL改写系列九:外连接转内连接的常见场景与错误-2

    OceanBase 数据库

    【DBA100人】李建明:一名普通DBA的14年技术之路与成长智慧

    OceanBase 数据库

    即时通讯安全篇(十一):IM聊天系统安全手段之传输内容端到端加密技术

    JackJiang

    网络安全 网络编程 即时通讯 IM openssl

    Python条件语句怎么用

    和牛

    Python 8月月更

    开源一夏 | 一场由serialVersionUID 引发的线上问题

    六月的雨在InfoQ

    开源 serialVersionUID transient Serializable接口 8月月更

    实战演示 H5 性能分析

    霍格沃兹测试开发学社

    长安链源码分析启动(3)

    长安链

    低代码适用于哪些应用开发场景

    力软低代码开发平台

    C/C++普通函数与函数模板的区别,调用规则,模板局限性

    CtrlX

    c c++ C# 8月月更

    聚四方之力,合四方之需:智能云网的持续进化

    脑极体

    干货 | 实战演练基于加密接口测试测试用例设计

    霍格沃兹测试开发学社

    「海格通信」化繁为简!云管升级助力海格通信创新之路提速

    嘉为蓝鲸

    云管理

    他只是试图运用自己的能力,给这个领域带来改变

    图灵社区

    通信 科学史

    2022年Q2银行APP活跃用户规模盘点:头部银行增长稳定

    易观分析

    金融 银行 用户规模

    长安链源码分析启动(1)

    长安链

    区块链商用案例:网间结算联盟链建设实战

    鲸品堂

    区块链 运营商 企业号九月金秋榜

    APICloud AVM 封装验证码输入框组件

    YonBuilder低代码开发平台

    程序员 前端开发 低代码开发 多端开发

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