emberjs/ember.js

`{{debugger}}` in template-only glimmer components has a misleading DX

クローズ

#17,962 opened on 2019/04/24

 (3 件のコメント) (1 件のリアクション) (0 人の担当者)JavaScript (4,216 件のフォーク)batch import
BugDocumentationHelp Wanted

Repository metrics

Stars
 (22,437 個のスター)
PR merge metrics
 (平均マージ 11d 14h) (30d で 20 merged PRs)

説明

When using {{debugger}} in template-only glimmer components, context is understandably null because there's no backing object (by design).

The user will see the following upon arriving at a breakpoint

The following DX issues need a little cleanup

  1. context no longer applies in this situation
  2. the "For example... context === get('this');" no longer applies in this situation

We may want to add something about get('@foo') to indicate the productive path for debugging these kinds of templates.

It might even be worth splitting this debugging path up (i.e., you'll end up in a template-only-specific debugger, or the standard debugger ) since, with the introduction of these components, the debugging mechanisms have diverged

  function templateWithBackingObjectDebugCallback(context, get) {
    console.info('Use `context`, and `get(<path>)` to debug this template.'); // for example...

    context === get('this');
    debugger;
  }

  function templateOnlyDebugCallback(get) {
    console.info('Use `get(<@path>)` to debug this template.'); 
    // for example... `get('@foo');`
    debugger;
  }

  function debugCallback(context, get) {
      if (context) templateWithBackingObjectDebugCallback(context, get);
      else templateOnlyDebugCallback(get);
  }


コントリビューターガイド