Ember.js 1.0.0-rc3发布


Ember.js 1.0.0-rc3发布了。正如在发布rc1时曾经提到过的那样,在1.0版本结束之前的所有版本都只会做bug修复和代码完善,不会有其他重大变化。

性能

自RC2以来,Embe.js改善了一系列性能问题。

  • 当相关联的多个子视图准备做插入时,不再像以前那样一个一个添加,而是批量插入。
  • 删除对象改成异步操作,这样做可以保证在删除一个对象的时候,与其相关联的对象不会出现不必要的扰动。
  • 减少了在视图渲染时分配的对象的数量。

测试

App#reset做了大量的修复以及改善工作,现在,当它被调用的时候,应该会正确的清理应用程序状态。通常情况下,这只用于集成测试。

1
2
//before each integration test
App.reset();

请注意:现在 App.reset()本身包含了一个run循环,不需要在再外部套一个run循环了。

创建了ember-testing。这个项目的目的是使测试Ember应用程序更简单,尤其是在需要测试异步性的情况下。随着工作日渐成熟,会给出完整的文档,例子以及指南。

Ember构建

每一个成功的CI都会把结果发布到http://emberjs.com/builds。这会使引用及使用最新的Ember构建更简单。

新的{{input}}{{textarea}}助手

现在,TextField,TextAreaCheckbox也有相应的Ember助手了。

1
2
3
{{view Ember.TextField valueBinding="name"}}
{{view Ember.Checkbox  checkedBinding="isActive"}}
{{view Ember.TextArea  valueBinding="name"}}

可以像下面这样写了

1
2
3
{{input value=name}}
{{input type=checkbox checked=isActive}}
{{textarea value=name}}

推荐使用动态标签而不是{{view}}助手,因为他们等价于静态标签,而静态标签被大家熟知和喜爱。

要注意的是使用动态标签时,不需要使用Binding后缀,也不需要为值添加引号。在这里,Ember将把常量字符串视为静态字符串。

文档

对API文档进行了精炼和补充,在这期间,很多社区成员提供了帮助。

变更记录:

  • 如果不需要thisArg的话,那么也不需要执行fn.call了。
  • 不再需要交叉构建insertViewCollection
  • 如果LinkView中没有使用a标签,那么将不能使用href
  • 修改了{{linkTo}}文档。
  • 在完整的构建代码中增添了ember-testing
  • 针对Opera,将jQuery.js(':disabled')修改为jQuery.js(':disabled').length
  • 移除声明却未使用的变量。
  • 增添run.scheduleOnce文档,删除run.once文档。Fixes #2132。
  • 修复outerHTML回退的测试。
  • 不再依赖EXTEND_PROTOTYPES == true
  • 修复Ember.EnumerableUtils没有继承prototypes
  • 不对文档标记.generateController
  • 不为.cachable构建文档。Fixes #2329。
  • 清理MutableEnumerable文档。
  • 新增Ember.Application#removeTestHelpers
  • 修复几个有争议的问题。
  • 首次通过了ember-testing包的工作。
  • 修复'自定义绑定'部分的文档错误。
  • 修复方法注释bug。
  • 修复重定向到子路由bug。
  • 修复MetamorphViewDOMManager replace。
  • 修复#870延迟析构以及App#reset问题。
  • 清除无用变量。
  • 使用最新的Ember构建更新JSFiddle/JSBin的入口点配置。最新的构建已经自动上传到builds.emberjs.com
  • 修复#22388: 为_resetSubControllers添加if语句。
  • 将缓存的状态转换哈希值作用域限定到状态管理器类,因此状态管理器的继承和混合行为与预期的保持一致了。
  • 修复发行版本构建的上载。
  • 更新到最新的ember-dev以便发行任务可以正常工作。
  • 配置Travis以便能自动部署到AWS
  • 新增漏掉的条目类型。
  • 在测试时不产生Ember.alias废除警告。
  • ViewCollection新增invokeRecursively
  • 失败的测试显示使用mixins获取状态的StateManager有未知行为。
  • 修复HistoryLocationrootURL处理器及webkit方案。
  • 清除助手函数中的无用参数。
  • 使用toArray移除副本。
  • 允许了option视图以便可以重写Ember.Select
  • 真正的使Ember.alias()输出弃用警告。
  • 使用Ember.String.fmt代替String扩展。
  • 自动上载所有通过的构建到s3。
  • 修复#2424 App#reset。
  • s/nexts/these(nexts不是单词)。
  • 针对linkTo路由提供更多更详细的错误信息。
  • viewName成为属性。
  • 清除不需要的闭包。
  • JSDoc应该对混合类型使用{*}而不是{anything}或者{any}。
  • invokeRecursively增加一个includeSelf参数。
  • 修复ArrayController#length在其content没有显示设置的问题。
  • 关闭#2043 - 修复在集合中删除最后元素的问题。
  • 阻止应用程序模板复制时被二次渲染。
  • mixins被传递给Object.create时提供断言。
  • 增强Ember.TargetActionSupport并引入Ember.ViewTargetActionSupport
  • 修复{{textarea}}断言信息。
  • 测试unwatch方法的length属性。
  • 测试watch方法的length属性。
  • 测试iswatching方法的length属性。
  • Ember.typeof移动到metal。
  • 修复数组watching问题。由于typeofisArray的差异,曾经不止影响普通数组。
  • 移除提到的将mixins传递给create。
  • 还原Fix Application#reset destroy问题。
  • 修复视图助手文档和例子以便反映上下文。
  • 在命名空间查找阶段忽略webkitStorageInfo以消除警告。
  • 修复Fix Application#reset destroy问题。
  • 使Chrome的初始栈状态环境指导rootURL
  • RenderBuffer中,使用字符串代替数组。
  • 将循环中的for语句转化为一个简单的for循环。
  • 改善视图容器的查找性能。
  • 清除Ember.Deferred测试中的无用的异步性代码。
  • 清除路由测试中的无用的异步性代码。
  • 增加{{text area}}。
  • enter提供默认的text input action
  • 增加{{input action="foo" on="keyPress"}}。
  • 清除更多metal。
  • 更好的组织ember-metal和缓存函数查找表。
  • 移除从渲染到缓存的同步性。
  • 使测试不依赖于同步改变的事件。
  • 修复测试以便不期待同步的观察者。
  • 在原型中定义Minix属性。
  • 更新ember-devgem到最新版本。
  • Ember.View原型中共享空数组。根据操作来区分。
  • 根据DOM中的insertion来添加views到Ember.View.views,而不依赖初始化。Fixs #1553。
  • 使对象的异步析构以便在处理相互联系的对象时减少扰动。
  • 定义Ember.CoreObject#willDestroy. Fixes #1438。
  • 清除不需要的volatile()。
  • 匹配transitionTo APIs。
  • 避免递归调用transitionTo。
  • 改善视图通知及转换性能。
  • 提取一个私有的ViewCollection辅助类来使同时处理多个视图成为可能。
  • 为{{input type="checkbox"}}增加支持。
  • 增加Ember.Handlebars.helper
  • 增加{{input type="text"}}。
  • 批量插入相关联的子视图而不是一个一个的添加。

博客评论基于Disqus