Skip to content

jabaraster/go-web-scaffold

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go言語でWebアプリ開発する雛形です.

事前準備

下記ソフトウェアをインストールしておくこと.

  • Go言語: サーバサイドはGo言語で実装
  • node.js: クライアント開発環境
  • npm: node.jsのライブラリ管理

フォルダ構成

___ 編集するファイルは以下のファイルです ___

  • srcディレクトリ以下
    • src/go:サーバサイドを実装するGoのソースディレクトリのルート
    • src/html:HTML. 編集したらgulpによりassets直下にコピーされる(フォルダ構造は保たれる). ※コピー先は変えるかも.
    • src/jsx:JSX(JavaScriptのreact.js向け拡張)を格納.
      編集したらgulpによりJSXコンパイル→require解決→圧縮→が施された上でassets/jsにコピーされる(フォルダ構造は保たれる)
    • src/less:Less(CSSを効率良く書ける言語)を格納.
      編集したらgulpによりlessコンパイル→圧縮が施された上でassets/cssにコピーされる(フォルダ構造は保たれる).
      なお、include用に、先頭が _ で始まるファイルはgulpから無視される.
  • gulpfile.js:node.js製のビルドツール__gulp__の設定ファイル.
  • package.json:node.jsのライブラリを記述. 手動で編集することはほとんどないはず.
  • その他:フォントなど、サードパーティ製の物はassets以下に適切なディレクトリを掘って置く.
    代表例はbootstrapのCSSやフォントファイル.
    ※サードパーティ製のJSは、jsxファイルの中にrequiredして欲しいので、assets/jsの下に置くことは極力しない.

クライアントサイドの開発

必要ライブラリのインストール

まずはnpmで必要モジュールをインストール.

npm install

このコマンドで、package.json の中に書かれているモジュールが全てインストールされます.

ビルドツールの起動

gulp

gulpはnode.js製のビルドツール.
上記コマンドを打つとgulpfile.jsの設定に従って、ファイルを監視→ビルドを実行してくれます.

サーバサイドの開発

Go言語で開発します.

ディレクトリ構成

  • src/go/main.gomain_test.goのみ格納.
  • src/go/configuration/:configurationパッケージを格納. JSON形式の設定ファイルを読み込む機能を実装.
  • src/go/env/:envパッケージを格納. 環境変数周りの処理を実装.
  • src/go/model/:modelパッケージを格納. DBテーブルに関連付くstructの定義、DBアクセス処理を実装.
  • src/go/web/:webパッケージを格納. Web特有の処理を実装. あまり出番はないかな.
  • src/go/web/handler/:web/handlerパッケージを格納. クライアントからのリクエストを受け付けるメソッド(=handler)を実装.

その他、拡張は適宜検討.

Webアプリの起動

go run src/go/main.go -bind=:<port>

jsx,less,htmlの変更はブラウザのリロードで反映されます.
Goの変更はWebアプリを再起動しないと反映されません.

技術情報

React.js関連

__React.js__はクライアントJavaScriptのフレームワーク.

  • シンプルで覚えやすい上にコードがすっきりする
  • 画面のコンポーネント化が進む
  • Facebookが開発/採用しており実績充分

Less関連

__Less__はCSSを効率良く記述するための言語.

  • 入れ子/変数/関数定義などの機能により冗長性を減らせる
  • 便利な組み込み関数群(例えば『ちょっと暗い色』みたいな関数がある)

CSSは極端に冗長なので、Less(のような動的スタイルシート言語)を使わない開発は__悪__だとさえ思います.


  • 本家
    このページだけで、重要な機能の説明は網羅されている.

gorm関連

__gorm__はGo言語のDBアクセスライブラリ.

  • 高機能かつ多機能っぽい
  • エンティティの関連が扱える
  • 単純なクエリを素早く書ける

ただし、ときどきドキュメントにウソがあるので、そこは要注意.


About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages