code-corps / code-corps/code-corps-ember

Discussion: Reconsider the route/template structure for donate and thank-you

オープン
#1,122 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
Difficulty: Medium
主要言語
JavaScript
スター
120
フォーク
75
PR マージ指標
30日以内にマージされた PR はありません

説明

# Problem

Right now, our route structure is as follows:

```
project.hbs
project/
index.hbs
settings.hbs
tasks.hbs
donate.hbs
thank-you.
```

`project.hbs` is just an `{{outlet}}`. `index`, `settings` and `tasks` share most of the same layout, but the code needs to be duplicated because `donate` and `thank-you` have a completely different layout.

This is somewhat confusing by itself. An additional, unfortunate side-effect is that the `index`, `settings` and `tasks` share the same `project-details` component, which internally, defines a `joinProject`action. This action can't be handled at route level, because it's used in 3 different routes. Instead, right now, it's handled by the component internally.

I'm really not sure what the best architecture here is, but it doesn't feel right. I think `project.hbs` should have the outlet for the varying content, but it should also have the default project layout components such as the header, etc. The subroutes should either share the layout or not be subroutes, or we should find a third way to render it.

That means that our options are either:

- `donate` and `thank-you` should not be part of the project route structure.
- `donate` and `thank-you` can be part of the project route structure, but should then share the project layout
- we should add a named outlet to our application route. "Layoutless" routes such as `donate` and `thank-you` should render directly into this named outlet. This gives us an explicit way to specify a route as layoutless. We could use the route's [`renderTemplate` hook](http://emberjs.com/api/classes/Ember.Route.html#method_renderTemplate) to achieve this behavior

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

一覧にある project.hbs と project/{index,settings,tasks,donate,thank-you}.hbs の構造を確認し、重複したレイアウトと project-details コンポーネントの joinProject アクションに重点を置きます。Ember の renderTemplate フックのドキュメントを読み、issue にある 3 つのルーティング方法を比較します。重複したレイアウトコードを避け、アクションの明確な所有者を定めるルート/レイアウト構造を選択して文書化すれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
javascript
領域
frontend
issue の種類
リファクタリング
難易度
5/5
見積もり時間
1週間以上
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
20/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。