回答編集履歴

2

追加部分の誤字を修正

2017/11/17 06:34

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  特にスマホユーザーは多くのケースで回線速度やマシンスペックが低速になってしまいます。
14
14
 
15
- パフォーマンスを重視する為に</body>直前に設置する事が基本です。
15
+ パフォーマンスを重視する為に`</body>`直前に設置する事が基本です。
16
16
 
17
17
 
18
18
 
@@ -130,7 +130,7 @@
130
130
 
131
131
  この属性が付与されたscriptタグはDOMの読み込みを停止することなく裏で読み込み続けてくれます。
132
132
 
133
- ただし、依存ライブラ等がどの順番で読み込まれるか制御できなくなります詳しくはコメント欄へ)
133
+ デメットります詳しくはコメント欄へ)
134
134
 
135
135
 
136
136
 
@@ -144,6 +144,6 @@
144
144
 
145
145
  とりあえずは</body>の直前が好ましいと覚えておくと良いでしょう。
146
146
 
147
- ただし、フロントエンド技術者としての技術力が爺文にあればhead内に設置してあっても構いません。
147
+ ただし、フロントエンド技術者としての技術力が十分にあればhead内に設置してあっても構いません。
148
148
 
149
149
  色々調べてみたり試してみてください。

1

校正+おまけ追加

2017/11/17 06:33

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -1,4 +1,4 @@
1
- に於かで決まります。
1
+ を重視したいかで決まります。
2
2
 
3
3
 
4
4
 
@@ -8,11 +8,15 @@
8
8
 
9
9
 
10
10
 
11
- 基本的Webは回線速度やマシンスペックが速い人も遅い人も居るわけで、
11
+ インターネット上には回線速度やマシンスペックが速い人も遅い人も居ます。
12
+
13
+ 特にスマホユーザーは多くのケースで回線速度やマシンスペックが低速になってしまいます。
12
14
 
13
15
  パフォーマンスを重視する為に</body>直前に設置する事が基本です。
14
16
 
17
+
18
+
15
- (でも汚いでし、エンジニア的は整頓できてないからイライラするのでこういうサイトで聞く前者紹介されることが多いしょう)
19
+ るhead設置する主張はCSSやメタ情報等同じ位置にあり統一感ていることですね。
16
20
 
17
21
 
18
22
 
@@ -22,15 +26,13 @@
22
26
 
23
27
  何故構造と速度で分けたか?
24
28
 
29
+
30
+
25
31
  理由としては、JavaScriptはダウンロードから実行完了まで描画が停止します。
26
32
 
27
33
  その為Googleの検索エンジンでは「head要素内にJavaScriptは入れないでください」とアナウンスしています。
28
34
 
29
35
  アナリティクス等のコードも「</body>タグの直前に挿入してください」という一文があり徹底しています。
30
-
31
-
32
-
33
- headに書いたほうが統一感があるのはそのまんまなので割愛します。
34
36
 
35
37
 
36
38
 
@@ -42,11 +44,19 @@
42
44
 
43
45
 
44
46
 
47
+ その通り!
48
+
49
+
50
+
45
- その通り、DOMツリー構造が読み込まれる前なので、先に書いても期待通りの動作はされません。
51
+ DOMツリー構造が読み込まれる前なので、先に書いても期待通りの動作はされません。
46
52
 
47
53
  しかしJavaScriptはイベント駆動で動作しており、ブラウザが発行する様々なイベントをトリガーに関数を実行することが可能です。
48
54
 
55
+
56
+
49
57
  その中には「DOMツリー構造をブラウザが全て読み終わった」というイベントも用意されています。
58
+
59
+ 下記のような記述のスクリプトを見たことはありませんか?
50
60
 
51
61
 
52
62
 
@@ -89,3 +99,51 @@
89
99
 
90
100
 
91
101
  これならばhead要素内にJSを設置してもDOMツリー構造を解析するまで処理が遅延されます。
102
+
103
+
104
+
105
+ ---
106
+
107
+
108
+
109
+ 【追記】おまけ: 速度を犠牲にせず、headに設置できないか?
110
+
111
+
112
+
113
+ 結論から言えば可能です。
114
+
115
+ 例えばあまりの速さで大騒ぎになってる[dev.to](http://dev.to)というサイトでは、
116
+
117
+ headタグ内に全てのscriptタグが設置されています。
118
+
119
+
120
+
121
+ Googleの[PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights/)では
122
+
123
+ head要素内に設置したscriptタグは減点扱いになりますが、dev.toは減点されてません。
124
+
125
+ なぜ?Googleにお金払ったから?
126
+
127
+
128
+
129
+ HTML5で実装されたasyncという属性を利用しています。
130
+
131
+ この属性が付与されたscriptタグはDOMの読み込みを停止することなく裏で読み込み続けてくれます。
132
+
133
+ (ただし、依存ライブラリ等がどの順番で読み込まれるかも制御できなくなります、詳しくはコメント欄へ)
134
+
135
+
136
+
137
+ 他にも最近ではSPA(シングルページアプリケーション)という
138
+
139
+ JavaScriptで画面全ての面倒を見るWebアプリが増えています。
140
+
141
+ その場合ODMツリーを先に描画しようがしまいがあまり関係なくなってしまいますね。
142
+
143
+
144
+
145
+ とりあえずは</body>の直前が好ましいと覚えておくと良いでしょう。
146
+
147
+ ただし、フロントエンド技術者としての技術力が爺文にあればhead内に設置してあっても構いません。
148
+
149
+ 色々調べてみたり試してみてください。