UDN-企业互联网技术人气社区

板块导航

浏览  : 255
回复  : 2

[原生js] 向Web平台添加JavaScript模块

[复制链接]
葡萄柚的头像 楼主
发表于 2016-12-30 15:12:08 | 显示全部楼层 |阅读模式
  长期以来,我们一直致力于研究WHATWG标准新特性。我们也一直在试图做件有意义的事情,就是告诉我们的博客读者更多这些新特性。现已经发生了一堆积压已久却令人着实兴奋的事,而我也被提名开始向你讲述关于 <script type="module"> 的故事。

  JavaScript 模块 已有很长历史。它们最初定于2015年年初完成(将其纳入JavaScript规范"ES2015"版本的一部分),但随着截止日期临近,才发现模块的语法虽然已经准备就绪,但模块如何加载的语义仍然悬而未决。这是个难题,因为它涉及JavaScript引擎和它的宿主环境(可能是web浏览器,也可能是Node.js等其他宿主环境)的广泛集成。

  最后达成妥协的解决方案是让JavaScript规范指定模块语法,然而却没有任何方法能让它真正运行。需要借助HostResolveImportedModule ,宿主环境才能通过执行这些模块并加载模块的依赖关系将模块声明符(在"import x from x" 中的"x")解析为模块实例。然而一年过去了,由于虽然明确规定了模块语法,却未规定其语义,JavaScript模块还没在各浏览器中实现。

  在发起的如史诗般的 whatwg/html#433 的请求中,我们努力指定这些缺失的语义。这涉及到对脚本执行流程的重大改变,以更好地整合现代JavaScript规范。WHATWG社区不得不讨论一些细微的问题,例如如何获取跨源模块脚本,是否应该或怎样应用 async , defer , 和 charset 这些属性。讨论的最终结果在HTML标准中大部分都可以看到,能明显看到的是 script 元素 和 脚本处理模型部分 。根据Edge团队的申请,我们还 添加了worker模块 ,在 创建 workers 部分中可以看到。(这也即将 纳入service workers 规范 )。最后,我们给出一些示例:a couple for <script type="module"> 和 one for module workers .

  当然,只是指定特性还没完,还需要落实!目前四个主要的渲染引擎都在积极实现这一特性,如果该引擎是开源的话,你还可以参与修复BUG,如下面这些BUG:

  我们还要做许多关于规范方面的工作,也一直在讨论如何添加更高级的动态模块加载API,有像一个promise返回 self.importModule 这样的易事,也有像将这些实验性的想法在 whatwg/loader repository中做出了原型这样更复杂的事。

  当你发现在HTML标准中允许添加JavaScript模块的时候,希望你能和我们一样激动不已。接下来我们会尽快告诉你更多关于 WHATWG 标准近期发生的重要变化。

  在 GitHub上的标准开发定义WindowProxy,Window和Location对象

相关帖子

发表于 2016-12-30 15:12:40 | 显示全部楼层
貌似看过类似的文章恩,排版更清晰点就更好了
使用道具 举报

回复

发表于 2017-1-1 22:16:15 | 显示全部楼层
占坑编辑ing
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部