-
-
Notifications
You must be signed in to change notification settings - Fork 224
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor(ajaxapp): データを表示する/Promiseを活用する のリファクタリング #914
Conversation
<script src="index.js"></script> | ||
</body> | ||
``` | ||
[import, title:"index.html"](./src/index.html) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
あえて部分を表示する必要も無いかなと
Deploy preview for js-primer ready! Built with commit 0a9f5c8 |
@@ -121,6 +108,14 @@ function fetchUserInfo(userId) { | |||
|
|||
### Promiseチェーンのリファクタリング {#refactor-promise-chain} | |||
|
|||
<!-- textlint-disable ja-technical-writing/sentence-length --> | |||
|
|||
現在の`fetchUserInfo`関数は、HTMLの組み立て(`createView`)と表示(`displayView`)も行っています。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Promiseチェーンの説明から入ると結局どうしたいのか伝わりにくい感じがした。
なので、最初になにをするかを宣言するようにしてから、Promiseチェーンの説明という流れに変えた
|
||
## HTMLを組み立てる {#markup-html} | ||
|
||
HTML文字列の生成にはテンプレートリテラルを使います。 | ||
テンプレートリテラルは文字列中の改行が可能なため、HTMLのインデントを表現できて見通しが良くなります。 | ||
また、文字列の埋め込みも簡単なため、HTMLのテンプレートに対して動的なデータを当てはめるのに適しています。 | ||
また、変数の埋め込みも簡単なため、HTMLのテンプレートに対して動的なデータを当てはめるのに適しています。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
埋め込むのは変数?
@@ -7,7 +7,7 @@ | |||
<h2>GitHub User Info</h2> | |||
|
|||
<button onclick="fetchUserInfo('js-primer-example');">Get user info</button> | |||
|
|||
<!-- 整形したHTMLの挿入先 --> | |||
<div id="result"></div> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Todoアプリに合わせるなら #js-result
だけど、あっちはクラスがでてくるかというのもあるか。
prefixつけるとここで説明でてきちゃうからこのままで
@@ -39,6 +39,7 @@ GitHubのAPIに対してHTTPリクエストを送信しましたが、まだレ | |||
また、`Response`オブジェクトの`json`メソッドも`Promise`を返します。これは、HTTPレスポンスボディをJSONとしてパースしたオブジェクトでresolveされます。 | |||
ここでは、書籍用に用意した`js-primer-example`というGitHubアカウントのユーザー情報を取得しています。 | |||
|
|||
{{book.console}} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
一応ブラウザで実行はできるのでつけた
diffはdiffとして表現する必要性があるきがした。 |
<!-- textlint-disable ja-technical-writing/sentence-length --> | ||
|
||
現在の`fetchUserInfo`関数は、HTMLの組み立て(`createView`)と表示(`displayView`)も行っています。 | ||
`fetchUserInfo`関数に処理が集中しているため見通しが悪くなるため、`fetchUserInfo`関数はデータの取得だけを行うように変更します。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
〜ため〜ため は避けたい?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
集中していて
かな
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTMです。diffの件も同意ですがどう表現すると良いんでしょうね...
TODOだと .js コードとしては全体書いておいて、 |
さて、今の`fetchUserInfo`関数ではFetch APIが返したPromiseの`then`でHTMLの組み立てと表示も行っています。 | ||
このPromiseチェーンを次のように書き換えてみましょう。 | ||
`fetchUserInfo`関数では、Fetch APIが返すPromiseの`then`メソッドで、`Reponse#json`メソッドの戻り値を返しています。 | ||
`index.js`の`fetchUserInfo`関数と`main`関数を次のように書き換えます。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
コードの説明にした。
No description provided.