2014Ember带来怎样的变化?

每隔几个月的时间,Ember的核心团队就会聚在一起讨论目前遇到的各种问题,并决定下一季度需要优先处理的各种事务。

这一次,在俄勒冈州的波特兰,大家聚在一起,商讨2014年的发展方向。

开发工具 & 模块

我们花了大量时间商讨将ES6模块和快速、强大、功能完备的开发工具整合的事宜。

我喜欢Ember交流会议的原因之一是:它越是快速地在实际中应用越能体现它的价值。对我们来说,解决问题比提出解决方案更加重要,因为针对解决方案的不同解决措施不会随着应用的成长而改变。

截止到目前为止,我们还没有认可任何一款特定的构建工具,因为我们已经对它们都进行了深入调查,目前可用的选择都有使你应用体积变大的致命缺陷,而这个缺陷会让你使用时很不愉快。

许多人也问过我们关于模块的事情。当我们启动Ember项目时还没有流行的模块格式。但自那以后,CommonJS的服务器端模块以及AMD的浏览器模块爆炸式地普及开来。虽然两个都是不错的选择,但它们的生态系统是断开的,而且它们的社区经常在Emacs/vi风格保持上争吵不休。

幸运的是,TC39——JavaScript的维护委员会,认识到了统一模块系统的必要性。ES6模块提供了AMD和CommonJS两个模块中最好的部分且被直接集成到语言中。

仅仅因为Ember社区是首批完全接受JavaScript承诺的社区之一,我们在过去几个月中一直在实现ES6模块,并将之投产。

已经有两个值得注意的项目得益于这个工作:

  • ES6 Module Transpiler,可以把使用ES6模块语法的JavaScript代码编译转换为浏览器的globals、AMD或者CommonJS代码。
  • Ember App Kit,使用ES6模块(通过代码转换器)而不是globals来构建Ember应用的基础。

记住我们一直以来在计划着模块的支持,这很重要。事实上,阻碍我们初始1.0版本发布的特性之一是让整个框架经受被称作resolver的对象的检查。

resolver是我们依赖注入系统的一部分,负责决定命名的转换。比如,想象一个用户访问你的Ember应用的/posts位置。默认情况下,Ember将搜索一个叫做posts的模板,向App.PostsRoute请求一个模型,并把它们挂在App.PostsController。但这些globals在框架中并不是硬编码的——对应的是,有一个默认的resolver封装所有这些命名转换。

使用模块写一个Ember应用,与替换默认的需要命名模块而不是寻找globals的resolver一样简单。

然而,为了使它足够友好,我们相信我们需要命令行工具,使创造、开发和部署应用的过程平滑。

我们在2014年第一个季度的重点将是利用现有满足我们需求的工具来开发优秀的编译工具,若不满足当前选项时,编写新的工具。我们将使模块成为优秀的工具,很快每个开始使用Ember的开发者也将使用ES6模块。我们很期待看到浏览器和服务器端JavaScript包和谐共处。

为了向你展示我们的想法,下面是一些CLI命令的例子和它们的效果。请注意这些都在开发中,很可能会有变化。

初始化

ember new my-app

初始化Ember.js工程并创建根目录,目录包括app、router等。

开启开发服务器

ember server

运行测试程序

ember test

为了运行Qunit测试程序,你需要Karma(浏览器端的PhantomJS插件),尽管我们正在计划将其迁移入开发程序以便更好地开发。

你也可以通过运行下面命令来启动QUnit测试:

ember test:server

加入更多的包

Ember CLI提供bower支持,只需使用下面命令:

bower install moment

Ember中的通用Franca模块是ES6模块中的一部分,我们会确保bower模块能通过AMD、CommonJS和浏览器的全局包的修正,自动被Ember应用所调用:

  1. 为AMD修正提供shim.json和shim目录。
  2. 根据所在的文件系统位置命名木块(包括版本)
  3. 在app.js中对模块进行关联 (根据资源地图)
  4. 从bower集成资源地体 (需bower支持)

即便某个库已被AMD所用,你仍可以将其作为ES6的模块使用:

import md from "markdown";

每当文件发生改变,最终被浏览器载入的关联文件(app.js, app.css等)都是被锁定的,每个访问其的HTTP请求都会被挂起直到新版本被编译完成。

加强检查工具功能

如果你正在使用Ember CLI工具开发你的应用,Chrome和Firefox将成为你的首选。开发服务器将会开放一个接口让检查工具进行连接,以便为浏览器提供额外的环境信息。

一旦在你的浏览器和开发工具之间建立了链接,你就可以做出许多有意思的事,但是我们必须事先决定一些事:

  • 看见一串bower包
  • 看见运行结果
  • 审查代码
  • 使用可视化编辑器配置package.json

文件系统布局

下面是一个简略的例子展示了当你通过CLI初始化一个新的Ember app时会看到的布局:

app/
  controllers/
  models/
  fonts/
  …
config/
  shim.json
vendor/
  underscore.js    // bower installed
  markdown.js
lib/
  ember-histogram/ // incubator for packages
    skylight/
    bower.json
modules/           // non-MVC stuff
  underscore.js

"Pod"目录的结构

到目前为止,许多Ember项目都采用Rails风格的目录布局,所有文件都按照类型来分组:

app/
  controllers/
    post.js
    posts.js
    index.js
  models/
    post.js
    user.js
  templates/
    post.handlebars
    posts.handlebars
    index.handlebars

我们讨论出在"pods"功能里把相关特性归到一组的布局:

app/
  config/
    application.js
  serializers/
  models/
    post.js
    user.js
  mixins/
pods/
  post/
    controller.js
    template.handlebars
  posts/
    controller.js
    template.handlebars
  index/
    controller.js
    template.handlebars
components/
  google-map/
    component.handlebars
    component.js
    component.css

这个提议的目录结构还有待更多的讨论。我们通过观察现实世界中许多的不同的app来看它是否能使Ember app的源代码管理变得更加容易。

精简Ember.js

我们相信在Ember的基础代码中依然存在着许多潜在的可以被精简的部分。我们会选取一个目标大小并力争将整个工程精简至目标大小之下。

目前为止我们还未决定到底这个目标大小是多大,但是我们大约划定了50k的范围。我们将会深入探讨这些候选要被精简的模块。

分布式组件

在分布式重用、第三方组件和库方面仍有一些开放性问题有待解决。通常我们会遵从Web组件说明书的指示,但说明书中也存在一些地方并未给出任何指导和提示。当处理这些问题的时候,我们会第一时间将其反馈给说明文档的作者,并详细阐述我们解决问题的方法。

还有一些限制是基于对旧浏览器的不支持而引起的,我们正在全力解决这方面的问题以便您能在所有浏览器中体验Web组件的强大。

命名空间

目前为止,Ember组件共享一个全局命名空间。如果我有一个组件叫做area-graphand你也有一个叫做area-graphand我想在我的app里使用你的组件,那将会发生冲突。

不久的将来,在包里的组件将会按照完全限定路径寻址。

下面是一个概念性的面积图组件:

[email protected] xValue=responseTimes

如果你发现你经常会输入完全限定路径,你可以在Handlebars模板的词法作用域内给helper起别名:

import "area-graph" from "d3"

我们也可以添加一个语法让在一个包里的 所有helper可用:

import "d3"

模板版本/编辑

Handlebars将模板编辑成了一个中间版本AST. AST在不同的Handlebars版本之间切换。 另外,Handlebars的语法有可能在2.0版本中被扩展。

既然这些组件都提供在bower中了,它们是否需要通过模板预编译进行精简?或是不去理会直到需要的时候再去编译它?

目前为止,我们正在学习如何将这些模板精简到其原始形式,但我们仍需更深一步的调查。

审查 CSS

今天,许多浏览器已经不再支持”格式审查“了。分布式组件将会为其分配相关的uuid,所有的CSS规则都将封装在一个选择器中并通过uuid格式化相应的页面元素。

目标控制

相比于使用#each itemController="postItem"来控制目标,你只需要定义App.PostsItemController(or theapp/controllers/posts-itemmodule),然后它会自动生效。

HTMLBars

我们仍在跟踪测试HTMLBars,它很有可能在明年与大家见面。Yehuda 、Kris Selden 和Alex Matchneer花费了很多时间在HTMLBar的部署上,他们正在逐步将HTMLBar整合进Ember中。

如果你对HTMLBar并不熟悉,其实它就是个HTML5和Handlebar语法组成的组件,它的重要性主要体现在两个方面:

首先,它允许我们抛弃bind-attrHandlebars帮助,而不是下面这种写法:

<img bind-attr src=imageUrl>

你可以这样:

<img src="imageUrl">

其次,它使我们可以淘汰掉笨重的metamorph.js 脚本标签,现阶段我们使用这些标签追踪DOM中反馈的值。

在 HTMLBars之前,DOM看起来是下面这个样子:

在运用HTMLBars之后:

消除 jQuery 依赖

一旦我们转移到 HTMLBars,Ember.js 和 DOM 之间的相互作用就越小。我们可以把 jQuery 当作是一个可选的依赖,只有通过全局变量或者 AMD 模块才能使用它。在力所能及的范围内,我们只想确保通过 jQuery 来删除组件或者视图,所以,jQuery UI 部件把存储在 DOM 上的数据通过 jQuery.data() 合理的清理掉。

动画

我们仍然在做支持动画的框架,但是现在我们并没有特定的 API 建议可以分享。一如既往,我们会优先考虑 API 的正确性而不是在后面的版本重做 API。

支持 IE8

尽管 Windows XP 的生命即将到达尽头,我们还是会继续支持 Internet Explorer 8 。我们知道很多 Ember.js 用户仍然需要目标企业和教育客户,他们还需要使用 IE8 一段时间。

EmberConf

EmberConf 2014:正在进行中,不久之后我们会提供更多细节,但是我想说,尽可能免费到三月。

时间: 2024-10-11 22:39:44

2014Ember带来怎样的变化?的相关文章

ERP条码解决方案,金蝶盘点机条码解决方案,应用PDA的信息化管理能给我们的生产管理带来怎么样的变化的探讨

ERP条码解决方案,金蝶盘点机条码解决方案,应用PDA的信息化管理能给我们的生产管理带来怎么样的变化的探讨. 当前越来越多的大大小小的中国企业已经接受了ERP的思想,大多数的商店,企业,工厂都会上一套ERP软件来进行仓储管理,物流管理,财务管理等,提高了管理水平.但是仍然存在手工录入麻烦,没有脱离无纸化操作的问题,自动化程度较低.因此武汉汉码科技ERP条码解决方案就能很好的解决这个问题,实现扫描录入,数据实时传输,真正体现了信息化管理的高效与准确. 通过条码应用系统对条码的数据采集和处理,代替了

2018年人工智能带来了哪些变化,2019年又会发生什么?

人工智能(AI)已经持续火热了几年,在2018年人工智能技术让企业和个人感受到了哪些变化,在发展的过程中我们发现了人工智能技术的拿些问题?2019年人工智能又会朝什么样的方向发展?一起看一看Red Hat的两位分析师的观察和看法. AI是激发大众和商业想象力的技术之一,在科幻小说中早已成为最受欢迎的主题,现在它在日常生活中也获得了关注. 2018年,全球采用和接受人工智能技术的人数大幅增加,企业也利用它来改善运营,创新和提升客户体验.金融服务,通信和高科行业带领人工智能成为主流,汽车,医疗健康,

HTML5会为你的生活带来怎样的变化?

你手机里的原生APP会变少. 原 生APP,就是你到应用商店里选一个应用.等待下载.确认权限.等待安装,然后点击打开的那种移动应用,它专门针对某一类移动操作系统生成,必须被完整安装到手机里.而有一种"假"APP,它们打开后基本利用手机中的浏览器来运行,而且不需要下载后安装,就能立即在手机界面中生成一个APP图标-- HTML5培训就是生产这种"假"APP的利器.比如你玩<神经猫>就不需要下载一个APP,而这个游戏正是用HTML5网页实现的. 你那个当程序

移动广告给我们生活带来了什么变化?

随着互联网和移动终端的不断发展,移动广告越来越深的融入人们的生活模式中.作为移动广告联盟中的keymob ,http://www.keymob.com 从 中的一小点,揭露移动广告联盟的这一趋势. 网络音乐还有一个独一无二的特性,就是用户体验能够延伸至各种不同的环境以及活动.星巴克的"送一杯咖啡"活动就是在声破天网上进行的.目前点击量已达69,648次,贵宾礼品卡的激活量粗略计算达348,240美元.把一杯免费咖啡送到赠与人手上,假如赠与人并非现有会员,星巴克将能收获一个新的消费者帐号

xcode7beta发布swift20带来哪些新变化

snaker250%E5%8F%91%E5%B8%83java%E8%BD%BB%E9%87%8F%E7%BA%A7%E5%B7%A5%E4%BD%9C%E6%B5%81%E5%BC%95%E6%93%8E http://www.zcool.com.cn/collection/ZMTY5NjYxMDg http://www.zcool.com.cn/collection/ZMTY4NDk4MDA=.html http://www.zcool.com.cn/collection/ZMTcxODky

Qt 5.4发布,详解Android特性变化

2014年12月10日, Qt 5.4 终于发布了!官方博客的博文:http://blog.qt.digia.com/blog/2014/12/10/qt-5-4-released/ . 下载链接:http://www.qt.io/download/. 版权所有 foruok,转载请注明出处:http://blog.csdn.net/foruok . Qt 5.4 有哪些变化 Qt 5.4 带来了很多变化,比如 Qt Quick 2D renderer 使得 Qt Quick 可以不使用 Ope

高位压迫——萨基给世界足坛带来的技术革命

谈到意大利足球,人们最根深蒂固的印象就是过于偏重防守,那是拜链式防守体系所赐.然而到了1987年,一个贩履出身的男人却给意大利足球带来了一套闻所未闻的全新理念. 今天的阿里戈-萨基早将教鞭高高挂起,大概也不会重新执起,但他为这项运动打下的烙印却经久不灭.这个烙印就是他的压迫式打法,不但给90年代他靡下那支AC米兰带来了成功,同时也给其他所有球队的无球防守方式带来革命性的变化. 当代教练们对小球员传授战术原理的时侯,是按照他们的成长道路一步步来的.一旦小球员们掌握了基本的技能(差不多在18-21岁

人工智能涉足清洁行业,将带来哪些机遇和挑战?

随着人工智能技术的发展,越来越多的行业都在向科技靠拢,AII IN AI将是更多公司的发展战略. 去年11月,"第九届中国清洁环卫论坛"在京召开.清洁领域的专业人士和众多企业家都在积极探讨如何改善环境质量,如何加速企业转型升级,如何加速新商业模式在传统产业中的推广和应用.在这些新契机下,将会诞生更多的商业机会. 北京清洁行业协会会长 冯亚君 Leatu-Robot 据清研智库发布的<2016-2017年度商业清洁行业发展趋势研究报告>数据显示,预计到2021年,大清洁市场规

机器学习技术将给企业电气系统带来哪5个好处?

机器学习技术在企业电气系统中的工作和维护中发挥重要作用,人们需要了解采用机器学习的益处. 机器学习正在为能源行业带来关键的变化.行业媒体Towards Data Science的一篇文章对于机器学习带给这个领域的变化进行了阐述.文章指出,比尔·盖茨在2017年给美国各地的研究生写的一封信中指出机器学习将成为能源行业最大的颠覆者. 企业电气系统采用机器学习技术的5个好处 企业需要考虑使用依赖于机器学习技术的电气系统的好处.人工智能可以使其更具成本效益和效率. 精明的企业使用依赖机器学习的电气系统