回答編集履歴
2
よく読んだらGoでDOM操作と書いてありました。すいません。
test
CHANGED
@@ -1,78 +1,6 @@
|
|
1
|
-
|
1
|
+
GoでDOM操作はGopherJSを使う方法とGo本家のWASM出力機能を使う方法があります。
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
- バックエンドをGo、フロントエンドにReact/Elm/Vueなどを連携させたい
|
6
|
-
|
7
|
-
- フロントエンドをGoで書きたい
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
前者は何も迷うことなくフロントエンドのライブラリを選んでそのチュートリアルへ。
|
12
|
-
|
13
|
-
GoのバックエンドはAPIをGoで提供すれば基本はOK。
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
nodeの開発サーバーと連携をとる場合はGoのサーバーで一旦受け取ってリバースプロキシーで
|
18
|
-
|
19
|
-
|
3
|
+
以下の内容が参考になるかと思います。
|
20
|
-
|
21
|
-
(リロードでフロントエンド用のファイルが再構築されるので)
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
Goのサーバー記述例(nodeの開発サーバーがlocalhost:3000にサーブされている場合)
|
26
|
-
|
27
|
-
```go
|
28
|
-
|
29
|
-
import (
|
30
|
-
|
31
|
-
"net/http"
|
32
|
-
|
33
|
-
"net/http/httputil"
|
34
|
-
|
35
|
-
"net/url"
|
36
|
-
|
37
|
-
"fmt"
|
38
|
-
|
39
|
-
)
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
func main() {
|
44
|
-
|
45
|
-
// New functionality written in Go
|
46
|
-
|
47
|
-
http.HandleFunc("/api", func(w http.ResponseWriter, r *http.Request) {
|
48
|
-
|
49
|
-
fmt.Fprint(w, "API Handler")
|
50
|
-
|
51
|
-
// TODO: implement
|
52
|
-
|
53
|
-
})
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
// Anything we don't do in Go, we pass to the old platform
|
58
|
-
|
59
|
-
u, _ := url.Parse("http://localhost:3000/")
|
60
|
-
|
61
|
-
http.Handle("/", httputil.NewSingleHostReverseProxy(u))
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
// Start the server
|
66
|
-
|
67
|
-
http.ListenAndServe(":8080", nil)
|
68
|
-
|
69
|
-
}
|
70
|
-
|
71
|
-
```
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
後者であれば、それなりに個人的に取り組んでいて以下にやり方をまとめています。参考にどうぞ。
|
76
4
|
|
77
5
|
|
78
6
|
|
1
質問の意図が複数考えられるので追記
test
CHANGED
@@ -1,4 +1,78 @@
|
|
1
|
+
質問の意図が以下のどちらなのでしょう?
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
- バックエンドをGo、フロントエンドにReact/Elm/Vueなどを連携させたい
|
6
|
+
|
7
|
+
- フロントエンドをGoで書きたい
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
前者は何も迷うことなくフロントエンドのライブラリを選んでそのチュートリアルへ。
|
12
|
+
|
13
|
+
GoのバックエンドはAPIをGoで提供すれば基本はOK。
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
nodeの開発サーバーと連携をとる場合はGoのサーバーで一旦受け取ってリバースプロキシーで
|
18
|
+
|
19
|
+
nodeの開発サーバーに中継すると便利です。
|
20
|
+
|
21
|
+
(リロードでフロントエンド用のファイルが再構築されるので)
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
Goのサーバー記述例(nodeの開発サーバーがlocalhost:3000にサーブされている場合)
|
26
|
+
|
27
|
+
```go
|
28
|
+
|
1
|
-
|
29
|
+
import (
|
30
|
+
|
31
|
+
"net/http"
|
32
|
+
|
33
|
+
"net/http/httputil"
|
34
|
+
|
35
|
+
"net/url"
|
36
|
+
|
37
|
+
"fmt"
|
38
|
+
|
39
|
+
)
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
func main() {
|
44
|
+
|
45
|
+
// New functionality written in Go
|
46
|
+
|
47
|
+
http.HandleFunc("/api", func(w http.ResponseWriter, r *http.Request) {
|
48
|
+
|
49
|
+
fmt.Fprint(w, "API Handler")
|
50
|
+
|
51
|
+
// TODO: implement
|
52
|
+
|
53
|
+
})
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
// Anything we don't do in Go, we pass to the old platform
|
58
|
+
|
59
|
+
u, _ := url.Parse("http://localhost:3000/")
|
60
|
+
|
61
|
+
http.Handle("/", httputil.NewSingleHostReverseProxy(u))
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
// Start the server
|
66
|
+
|
67
|
+
http.ListenAndServe(":8080", nil)
|
68
|
+
|
69
|
+
}
|
70
|
+
|
71
|
+
```
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
後者であれば、それなりに個人的に取り組んでいて以下にやり方をまとめています。参考にどうぞ。
|
2
76
|
|
3
77
|
|
4
78
|
|