回答編集履歴
3
冒頭を調整
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
|
-
|
50
|
+
その仕様通りに動作するならば手段は問わないよみたいな所があります。
|
50
51
|
|
51
|
-
この時のサーバがNode.js
|
52
|
+
この時のサーバが「たまたま」Node.js製のWebサーバだったとしてだから何?なんですよね
|
52
|
-
HTTPリクエストを受け取ってHTTPレスポンスという文字列を返すのが仕事
|
53
|
+
HTTPリクエストを受け取ってHTTPレスポンスという文字列を返すのが仕事ですからね。
|
53
|
-
「
|
54
|
+
「DOMツリーを弄る?俺Webサーバだからブラウザも無いんだが?どこのだれが用意してくれんの?」という話なんですよ。
|
54
55
|
|
55
|
-
DOMツリー
|
56
|
+
DOMツリーはHTMLを持ち帰ったChromeが
|
56
|
-
訪問者のパソコンのメモリ空間上に展開す
|
57
|
+
訪問者のパソコンのメモリ空間上に展開して初めて準備されます。
|
58
|
+
|
59
|
+
以上の理由からNode.jsで`innerHTML`等のDOMを操作する機能を使う事は出来ません。
|
57
60
|
|
58
61
|
Node.js触り始めの人が大抵躓くポイントの一つが、
|
59
62
|
このNode.jsにはDOMツリーがないよ問題です。
|
2
ちょっと修正
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
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で相応しい
|
63
|
+
1. calendar.jsを捨てて、EJSで相応しいHTMLを生成してやる
|
60
64
|
2. クライアントにcalendar.jsを読み込ませて、各々が勝手にDOMツリーを編集して画面に反映せえよと投げる
|
61
65
|
|
62
66
|
EJSにはループやif文が使えます。
|