2020 Ember Community Survey due this Sunday π, the possible future of app hooks and testing directories π, the evolution of Ember and Intercom ππΉ, splitting & migrating your project to a monorepo π, read the blog post on modifiers π¦, and find out how to use Ember with WebAssembly (Rust) π‘!
Since the early days of the framework, the Ember CLI has been a major factor for productivity and great developer ergonomics when developing Ember apps. And a while ago Mehul Kar (@mehulkar) submitted two new Requests for Comments (RFCs) to suggest even more improvements for the favorite productivity tool of any Emberista!
In RFC#575: Test Directories a new directory structure for testing is proposed. The change of test type names in the official Ember testing guides that followed the implementation of RFC#232: Simplify QUnit Testing API inspires the new directory format: f.e. files for testing component functionality used to be called integration tests in the former Ember QUnit testing API, and have been renamed to rendering tests. To reflect this change in the documentation, the new RFC suggests to move DOM-focused component tests from tests/integration/**-test.js to tests/rendering/**-test.js accordingly. You can learn more about the detailed design by reading the original proposal.
With RFC#578: Ability to hook into build process without addons, a suggestion for more developer flexibility for an app's build process is made. The proposal suggests that treeFor hooks provided by BroccoliJS - a core library for powering the Ember CLI build pipeline - should be available via the options parameter of an Ember app instance. This would allow future Ember developers to leverage treeFor hooks in an app itself without developing a supplementary addon (which is currently the only way to use these build pipeline APIs directly). To learn more about the motivation behind this RFC, be sure to check out the pull request on Github and feel free to leave your thoughts and questions in the comments below.
If you have not had a chance to check out Gavin Joyce's (@GavinJoyce) blog post on the evolution of Ember and Intercom, and the accompanying talk, you might want to give it a read / watch!
The blog post covers the massive growth of Intercom over 6 years, how the company came to choose Ember and how Intercom's growth tracks with the growth of Ember over time.
Interestingly, many of the principles of R&D, design and Engineering overlap with Ember's conventions and release cycles.
The blog post also provides some nice detail on the technical evolution in Ember's rendering engine and it provides a look at how Ember Octane can let us write beautiful, minimal and clean components in mostly native JavaScript.
It's a fascinating and encouraging read, and it's very cool to see how the stability and innovation of Ember has allowed Intercom to build the amazing product it is today!
Robin Philip Thomas (@MalayaliRobz) details his experience having worked with a huge codebase and the difficulties he and his team had faced with a massive monolith and how they split their codebase to multiple engines and add-ons. While that wasn't enough, he goes on to explain how dependencies caused problems related to version upgrades in each repository. As a result, he talks about how he arrived at using Yarn workspaces and how Lerna solves those problems.
We learn how to use the {{ opening_double_curly() }}on{{ closing_double_curly() }} modifier to track the focus state of a DOM element. The blog then describes how to handle key presses by creating our very own modifier such as the example {{ opening_double_curly() }}key-down{{ closing_double_curly() }} below:
Unlike attributes, element modifiers do not run on the server-side, because there is no general-purpose and complete way to serialize the results of an element modifier into HTML.
We encourage you to check out the article! Along the way, you can also pick up a little bit of TypeScript + Octane, dynamic import, and {{ opening_double_curly() }}ref{{ closing_double_curly() }} modifier. πΆ
Wondering about something related to Ember, Ember Data, Glimmer, or addons in the Ember ecosystem, but don't know where to ask? Readersβ Questions are just for you!
Submit your own short and sweet question under bit.ly/ask-ember-core. And donβt worry, there are no silly questions, we appreciate them all - promise! π€