惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

K
Kaspersky official blog
小众软件
小众软件
Engineering at Meta
Engineering at Meta
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Google DeepMind News
Google DeepMind News
Security Archives - TechRepublic
Security Archives - TechRepublic
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
MongoDB | Blog
MongoDB | Blog
L
LINUX DO - 热门话题
酷 壳 – CoolShell
酷 壳 – CoolShell
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Help Net Security
Martin Fowler
Martin Fowler
G
GRAHAM CLULEY
Simon Willison's Weblog
Simon Willison's Weblog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - Franky
V
Vulnerabilities – Threatpost
云风的 BLOG
云风的 BLOG
博客园_首页
C
Cybersecurity and Infrastructure Security Agency CISA
量子位
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
I
Intezer
Scott Helme
Scott Helme
A
About on SuperTechFans
博客园 - 司徒正美
Hacker News: Ask HN
Hacker News: Ask HN
The GitHub Blog
The GitHub Blog
Forbes - Security
Forbes - Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Spread Privacy
Spread Privacy
T
Tailwind CSS Blog
S
Security Affairs
宝玉的分享
宝玉的分享

Ember.js Blog

Ember 7.0 Released Announcing the Official TypeScript Types Public Preview Accessibility Working Group Update The 2020 Ember Roadmap Countdown to The New Year - Built-in Addons Countdown to The New Year - Ember Exam Countdown to The New Year - Ember Code Snippet Countdown to The New Year - Ember Changeset Countdown to The New Year - Ember In Viewport Countdown to The New Year - Ember CLI Update Countdown to The New Year - Ember Template Invocation Location Countdown to The New Year - Ember CLI TypeScript Countdown to The New Year - Ember Bootstrap and Ember Paper Countdown to The New Year - Ember CSS Modules Countdown to The New Year - Ember Mapbox GL Countdown to The New Year - Ember Shepherd Countdown to The New Year - Ember Template Lint Countdown to The New Year - Ember Composable Helpers Countdown to The New Year - Ember Leaflet Countdown to The New Year - Ember Intl Countdown to The New Year - Ember Test Selectors Countdown to The New Year - Ember Power Select Countdown to The New Year - Ember Simple Auth Countdown to The New Year - Ember SVG Jar Countdown to The New Year - Ember Page Title Countdown to The New Year- Ember A11Y Testing Countdown to The New Year - Ember Angle Brackets Codemod Countdown to The New Year - Ember CLI Sass Countdown to The New Year - Ember Animated Countdown to The New Year - Ember Auto Import Countdown to The New Year - Ember Concurrency Countdown to The New Year - Ember Tether Countdown to The New Year - Ember Modifier Countdown to The New Year - Ember CLI Mirage Countdown to The New Year - Ember Sortable Coming Soon in Ember Octane - Part 5: Glimmer Components Coming Soon in Ember Octane - Part 4: Modifiers Coming Soon in Ember Octane - Part 3: Tracked Properties Coming Soon in Ember Octane - Part 2: Angle Brackets & Named Arguments Preview Weekend: 2019 Ember Community Survey Coming Soon in Ember Octane - Part 1: Native Classes First Annual DecEmber Event! 2018 Ember Community Survey 2017 Ember Community Survey Announcing The Glimmer 2 Alpha Upcoming deprecation of baseURL in Ember CLI 2.7 2016 Ember Community Survey Announcing Ember Core Team Face to Face, January 2016 Ember.js 1.13.0 and 2.0 Beta Released Another Ember 2.x Status Update Ember.js 1.11.1 Released Ember.js 1.11.0 and 1.12 Beta Released Ember.js 1.10.0 and 1.11 Beta Released Compiling templates with Ember 1.10 Core Team Meeting Minutes - 2014/08/01 Core Team Meeting Minutes - 2014/08/14 Core Team Meeting Minutes - 2014/09/12 Cleaning Up Github Issues Core Team Meeting Minutes - 2014/07/11 Core Team Meeting Minutes - 2014/07/25 Ember 1.6.0 and 1.7 Beta Released Core Team Meeting Minutes - 2014/06/13 Core Team Meeting Minutes - 2014/06/20 Core Team Meeting Minutes - 2014/06/27 Core Team Meeting Minutes - 2014/06/06 Core Team Meeting Minutes - 2014/04/25 Core Team Meeting Minutes - 2014/04/04 Ember 1.5.0 and 1.6 Beta Released Core Team Meeting Minutes - 2014/03/07 Core Team Meeting Minutes - 2014/03/14 Core Team Meeting Minutes - 2014/03/21 Core Team Meeting Minutes - 2014/02/28 Core Team Meeting Minutes - 2014/02/21 Core Team Meeting Minutes - 2014/02/14 Ember 1.4.0 and 1.5 Beta Released Core Team Meeting Minutes - 2014/01/27 Core Team Meeting Minutes - 2014/01/31 Core Team Meeting Minutes - 2014/02/07 Core Team Meeting Minutes - 2014/01/17 Core Team Meeting Minutes - 2014/01/03 Ember 1.3.0 and 1.4 Beta Released Core Team Meeting Minutes - 2013/12/20 Core Team Meeting Minutes - 2013/12/06 Ember 1.2.0 and 1.3 Beta Released Ember 1.1.2 Released Ember 1.1.1 and 1.2 Beta Released Ember 1.0 Released Ember 1.0 RC8 Released Ember 1.0 RC7 Released Ember 1.0 RC6.1, RC5.1, RC4.1, RC3.1, RC2.1 RC1.1 Released Ember 1.0 RC6 Ember 1.0 RC5 Ember 1.0 RC4 Ember 1.0 RC3 Announcing the Ember.js Security Policy Ember 1.0 RC2 Ember 1.0 RC Ember 1.0 Prerelease 2 Ember 1.0 Prerelease
Ember.js 1.12 and 1.13 Beta (Glimmer!) Released
2015-05-13 · via Ember.js Blog

We are please to announce the release of Ember.js 1.12 and the first beta in the 1.13 series.

1.13 beta is the first Ember.js release that includes Glimmer, the new Ember rendering engine, as well as the final batch of Ember 2.0 features. We will discuss those details more below.

New Features in Ember 1.12

Ember 1.12 is a relatively light release, and includes features that move Ember closer to ES6 class syntax and the first parts of the internal implementation needed for a stable release of the FastBoot addon.

New Computed Syntax

Per RFC #11, Ember is introducing a new syntax for computed properties. This change better aligns computed property syntax with JavaScript getters and setters and makes writing settable computed properties developer friendly.

It also has the nice side effect of improving performance, as the old syntax, with its two-in-one function signatures, was harder for JavaScript engines to optimize.

The simplest syntax for a computed property is to define the getter as a function:

export default Ember.Object.extend({

  height: 100,
  goldenRatioWidth: Ember.computed('height', function(){
    return this.get('height') * 1.618;
  })

});

This is still the way to write simple getters, the most common use-case for computed properties, in Ember 1.12.

To create a settable computed property in Ember 1.11 an if statement was used to differentiate the get from the set logic. For example:

export default Ember.Object.extend({

  height: 100,
  goldenRatioWidth: Ember.computed('height', function(key, value){
    if (arguments.length > 1) {
      this.set('height', value / 1.618);
    } else {
      return this.get('height') * 1.618;
    }
  })

});

This syntax was functional but error-prone, verbose, and hard to understand (for both humans and JavaScript engines).

In Ember 1.12, you can nicely separate the getter and setter into two different functions.

export default Ember.Object.extend({

  height: 100,
  goldenRatioWidth: Ember.computed('height', {
    get(key) {
      return this.get('height') * 1.618;
    },
    set(key, value) {
      this.set('height', value / 1.618);
      return value;
    }
  })

});

This also aligns Ember's API with JavaScript getters and setters, and simplifies the path towards using JavaScript getters in Ember 2.0, after IE8 support is dropped.

For more information see the initial implementation in #9527

Many thanks to @stefanpenner and @MiguelCamba for championing and shipping this feature.

One last thing: thanks to the experimental support for JavaScript decorators in Babel, we are also planning a further improvement in the near future:

export default Ember.Object.extend({

  height: 100,

  @computed('height')
  get goldenRatioWidth(key) {
    return this.get('height') * 1.1618;
  }

  set goldenRatioWidth(key, value) {
    this.set('height', value / 1.618);
  }

});

Instance Initializers

The next feature, instance initializers, makes it possible for FastBoot applications to run many requests concurrently.

Before FastBoot, you would only ever run applications one at a time. Even in automated tests, tests were run one at a time, in serial, so one application was destroyed before the next one was created.

In FastBoot, it is important for a single node server to be able to serve a second request while the first one is fetching its data.

Thankfully, Ember already ensures that all state is stored in the container, so in theory, all you need to do is give each request its own container instance and you get concurrent requests in FastBoot.

In practice, there was a minor API change we needed to make in order to make it work involving initializers. In Ember 1.11, initializers would run on app boot (or once per test). Some initializers were setting up code (and injection rules), which are the same across all FastBoot requests, while other initializers were creating instances, which are different across requests.

In Ember.js 1.12 application boot is separated into two phases:

  • Application initializers run. At this phase of boot, the goal of initializers should be to register dependencies and injections. These initializers are doing work that is shared across all FastBoot requests, and therefore should not create instances. This phase runs once. Because these initializers may load code, they are allowed to defer application readiness and advance it.
  • Instance initializers run next. This is the right time to do work that is specific to each FastBoot request. You can create instances and modify their state here. This phase runs when the browser application runs, for each integration test, and for each FastBoot request. These initializers run after code has loaded and are not allowed to defer readiness.

The two-phase initialization process is safer when multiple addons may be registering factories and injections.

Ember-CLI 0.2.3 supports instance initializers. For example:

// app/instance-initializers/sleep.js

export function initialize(application) {
  application.container.lookup('service:websocket').connect();
}

export default {
  name: 'sleep',
  initialize: initialize
};

To define an instance initializer in globals mode use the Ember.Application.instanceInitializer method. For more information about instance intializers see the implementation in #10256.

Thanks to @tomdale, @wycats and @dgeb for this feature and other refactoring work around application initialization.

Initializer Context

Previously, the this scope of an initializer was the global scope. #10179 changed initializer scopes to be the initializer object itself.

Thanks to @gf3 for suggesting and adding this feature.

Ember 1.13 Beta

And now, the big enchilada!

Together with the release of Ember 1.12, we are releasing the first beta of Ember 1.13.

Ember 1.13 is:

  • the last minor release in the 1.x series
  • the first release that includes the new Glimmer rendering engine

To recap; what is Glimmer?

  • A new faster rendering engine that is especially fast at updates.
  • An implementation of the React-inspired "just re-render it" programming model for components, with one-way data flow by default and better enforcement for data-down, actions-up.
  • Supports angle-bracket components (<my-component />), ergonomic attributes (<my-link href="{{url}}.html">go home</my-link>), that hews closely to HTML syntax with a few small enhancements.

We'll be writing a blog post that expands on the programming model of Ember 2.0 and talks about the most important new features in the next few days, and full docs are coming as well.

We'd like to give a big thank you to the entire community for all the nights and weekends over the past few months getting Glimmer (almost) over the finish line. It's inspiring.

The 1.13.x Series

In most cases, you should expect Glimmer to be faster at both initial rendering and updates. If you find performance regressions in idiomatic usage in your app, we definitely want to hear about it. Please file bugs.

The Glimmer rendering engine changes parts of Ember that have been largely untouched since the days of SproutCore 2.0. In practice, this means that you may be relying on implementation details of the pre-Glimmer implementation that were not captured by tests, and that were not discovered during the Canary period.

Because of the magnitude of the internal change, we expect the first few Ember 1.13 betas to be less stable than other betas in the 1.x series. We need your help to find and fix compatibility regressions.

Please report any incompatibilities that you discover. We will investigate and consider shimming any regression that affects a significant number of apps, even if the root cause is a change in internal implementation details.

We know that there will likely be some compatibility regressions, especially in implementation details, that we do not catch during the 1.13 beta period. We plan to continue to release point releases to the 1.13 series to fix those details after 2.0 beta is released, and perhaps even for a while after 2.0 final is released.

Our goal is to ensure that most applications can upgrade to Ember 1.13.x, remove deprecations, and then upgrade to Ember 2.0 with minimal fuss. If a significant number of apps that are earnestly trying to upgrade this way cannot, we will continue to fix problems that are blocking upgrades.

For an in-depth look into our transition plan for users with existing Ember 1.x apps, please see the recent Transition to Ember 2.0 in Detail blog post.

CHANGELOGS