写点什么

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

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

    关注

    评论

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

    语音识别端到端模型解读:FSMN及其变体模型

    华为云开发者联盟

    大数据 模型 语音识别

    华为云&跟谁学|华为云API入门学习赛·AI人脸识别 未来工程师梦想的起点

    DT极客

    「五大常用算法」一文搞懂分治算法

    bigsai

    算法 分治算法;

    淦!终于有人把Java 8和Spring 5完美合体了,业界堪称“神迹”

    Java架构追梦

    Java spring 架构 面试 springboot

    从零开始搭建Kafka+SpringBoot分布式消息系统

    小Q

    kafka zookeeper 学习 面试 springboot

    数字货币管理三大新模式

    CECBC

    数字货币

    年轻人,快来看看分布式与集群的区别是什么?

    程序员小灰

    redis 分布式 后台开发 集群 Linux服务器开发

    专访阿里云 Serverless 负责人:无服务器不会让后端失业

    阿里巴巴云原生

    Serverless 微服务 云原生 CloudNative 无服务器

    深入解读:KubeVela 与 PaaS 有何不同?

    阿里巴巴云原生

    阿里云 开源 容器 云原生 CloudNative

    架构师训练营 -week11-作业

    大刘

    极客大学架构师训练营

    SpringBoot整合Mybatis-Plus 实战之动态SQL,Mybatis最拿得出手的功能之一

    比伯

    Java 编程 架构 面试 计算机

    稳坐开发领域霸主之位,揭秘C语言无可取代的几大原因!

    华为云开发者联盟

    c rust Go 语言

    AOT星辰生态系统APP开发|AOT星辰生态软件开发

    系统开发 现成系统

    记一次GC频繁且间隔较长解决实战总结

    AI乔治

    Java 架构 JVM GC

    为什么short、byte会被提升为int?及基本类型的真实大小

    烫烫烫个喵啊

    Java JVM

    小心踩雷,一次Java内存泄漏排查实战

    AI乔治

    Java 架构 JVM 内存

    LiteOS基于Sensorhub的超声波模组移植

    华为云开发者联盟

    物联网 LiteOS 超声波

    开发技巧 | mPaaS 小程序自定义事件,如何取消注册?

    蚂蚁集团移动开发平台 mPaaS

    小程序 API mPaaS

    整天都在讨论使用SpringBoot,可你居然连缓存都不清楚

    小Q

    Java 缓存 学习 面试 springboot

    解锁高速 IT 团队利器:Jira Service Management

    Atlassian

    DevOps Atlassian Jira ITSM ITIL

    「linux」Socket缓存是如何影响TCP性能的?

    linux大本营

    Linux 后台开发 socket 架构师 TCP/IP

    将项目发布到 Homebrew 官方仓库

    郭旭东

    macos brew homebrew

    面对日益严峻的网络安全问题,CDN可以做什么?

    阿里云Edge Plus

    🤳你要悄悄变优秀,然后惊艳所有人

    蚂蚁集团移动开发平台 mPaaS

    mPaaS 智能投放 界面改版 产品资讯

    接口测试之post常见数据提交方式

    测试人生路

    post 接口测试

    AWS IoT Core设计解析

    soolaugust

    边缘计算 AWS 工业4.0 工业物联网 iiot

    框架设计

    raox

    极客大学架构师训练营

    双非本硕四面百度竟意外成功?看完我的面试经历 网友都称:过于优秀

    比伯

    Java 编程 架构 面试 计算机

    3本书免费学习数据科学与统计学

    计算机与AI

    统计学

    了不起的 Deno:带你极速获取各大平台今日热榜

    华为云开发者联盟

    Java 安全 deno

    高并发的核心 - AQS【哪些琐是基于AQS来实现的】

    Java架构师迁哥

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