回答編集履歴

3

冒頭を調整

2022/02/20 04:42

投稿

miyabi-sun
miyabi-sun

スコア21403

test CHANGED
@@ -42,18 +42,21 @@
42
42
 
43
43
  んで、訪問者のChromeはWebサーバにHTML文字列よこせとHTTP通信投げましたよね。
44
44
  この時、別に相手側はNode.jsだろうが、Ruby・PHP・Pythonであろうが心底どうでもいいと思ってます。
45
- HTTP通信の仕様に従ってリクエストを受け取ってレスポンスを返してくれれば……
45
+ HTTP通信の仕様に従ってリクエストを受け取ってレスポンスを返してくれれば問題ない。
46
46
 
47
47
  これがクライアントとサーバの絶対な差です。
48
- 独立している存在であり、双方向で相手が何者なのかに関しては干渉もしないしどうでも良いと思ってます。
48
+ お互いが独立している存在であり、双方向で相手が何者なのかに関しては干渉もしないしどうでも良いと思ってます。
49
+ インターネットの仕様、HTTP通信の仕様というものが存在してまして、
49
- この辺、インターネットの仕様、HTTP通信の仕様というものが存在し、その仕様通りに動作するならば手段は問わないよみたいな所があります。
50
+ その仕様通りに動作するならば手段は問わないよみたいな所があります。
50
51
 
51
- この時のサーバがNode.jsで実行されていたとしても、
52
+ この時のサーバが「たまたま」Node.js製のWebサーバだったとしてだから何?なんですよね
52
- HTTPリクエストを受け取ってHTTPレスポンスという文字列を返すのが仕事なのに、
53
+ HTTPリクエストを受け取ってHTTPレスポンスという文字列を返すのが仕事ですからね。
53
- JavaScriptでDOMツリーを弄る?俺Webサーバだからブラウザやろ?どこのだれが用意してくれんの?」という話なんですよ。
54
+ 「DOMツリーを弄る?俺Webサーバだからブラウザも無んだが?どこのだれが用意してくれんの?」という話なんですよ。
54
55
 
55
- DOMツリーを用意するのはHTMLを持ち帰ったChromeが
56
+ DOMツリーはHTMLを持ち帰ったChromeが
56
- 訪問者のパソコンのメモリ空間上に展開するのがDOMツリーです
57
+ 訪問者のパソコンのメモリ空間上に展開して初めて準備されます。
58
+
59
+ 以上の理由からNode.jsで`innerHTML`等のDOMを操作する機能を使う事は出来ません。
57
60
 
58
61
  Node.js触り始めの人が大抵躓くポイントの一つが、
59
62
  このNode.jsにはDOMツリーがないよ問題です。

2

ちょっと修正

2022/02/18 11:42

投稿

miyabi-sun
miyabi-sun

スコア21403

test CHANGED
@@ -1,5 +1,10 @@
1
+ > 質問 1: そもそもnode.jsでHTMLを後からいじるという考え方が間違っていますか?(だからinnerHTMLやappendが使えない?)
2
+
3
+ ……なるほど、Yes / Noでウミガメのスープみたいな事を続けてると日が暮れると思うので、
1
- JavaScriptとNode.jsの関係性に関しての理解が必要そうで
4
+ JavaScriptとNode.jsの違いが一発でわかるよう解説していきます。
5
+ 非常に長いし、知ってる箇所もあると思いますが、さらりと読んでみてください。
6
+
2
- まずJavaScriptとはなんぞやを掻い摘んで説明します。
7
+ まずJavaScriptとはなんぞやを掻い摘んで説明してきます。
3
8
 
4
9
  あなたはChrome等のWebブラウザでWebサイトにアクセスします。
5
10
  この時ChromeはHTTPリクエストをWebサーバに送信し、

1

2022/02/18 11:35

投稿

miyabi-sun
miyabi-sun

スコア21403

test CHANGED
@@ -39,15 +39,19 @@
39
39
  この時、別に相手側はNode.jsだろうが、Ruby・PHP・Pythonであろうが心底どうでもいいと思ってます。
40
40
  HTTP通信の仕様に従ってリクエストを受け取ってレスポンスを返してくれれば……
41
41
 
42
- これがクライアントとサーバの絶対な差で独立している存在です。
42
+ これがクライアントとサーバの絶対な差です。
43
+ 独立している存在であり、双方向で相手が何者なのかに関しては干渉もしないしどうでも良いと思ってます。
44
+ この辺、インターネットの仕様、HTTP通信の仕様というものが存在し、その仕様通りに動作するならば手段は問わないよみたいな所があります。
43
45
 
44
46
  この時のサーバがNode.jsで実行されていたとしても、
45
47
  HTTPリクエストを受け取ってHTTPレスポンスという文字列を返すのが仕事なのに、
46
- 「JavaScriptでDOMツリーを弄る?俺Webサーバだからブラウザないやろ?どこのだれが用意してくれんの?」という話なんですよ。
48
+ 「JavaScriptでDOMツリーを弄る?俺Webサーバだからブラウザないやろ?どこのだれが用意してくれんの?」という話なんですよ。
47
49
 
48
50
  DOMツリーを用意するのはHTMLを持ち帰ったChromeが
49
51
  訪問者のパソコンのメモリ空間上に展開するのがDOMツリーです。
50
52
 
53
+ Node.js触り始めの人が大抵躓くポイントの一つが、
54
+ このNode.jsにはDOMツリーがないよ問題です。
51
55
  質問1の回答としてはこんな所でしょうか。
52
56
 
53
57
  ---
@@ -56,7 +60,7 @@
56
60
 
57
61
  方法は2通りです。
58
62
 
59
- 1. calendar.jsを捨てて、EJSで相応しいHTMLを生成してやる
63
+ 1. calendar.jsを捨てて、EJSで相応しいHTMLを生成してやる
60
64
  2. クライアントにcalendar.jsを読み込ませて、各々が勝手にDOMツリーを編集して画面に反映せえよと投げる
61
65
 
62
66
  EJSにはループやif文が使えます。