Git Product home page Git Product logo

go-web's Introduction

從零開始學程式(實戰Web應用Go)

本篇是一個總覽,會寫出動機、架構,與介紹後面篇章,並且放上最終成果在此。

[TOC]

一直以來有記錄薪水的習慣,最近正面臨工作轉換之際。剛好也想想學習一個新的後端語言,並建立一個練習Web應用,苦於找不到一個學習的目標。因此突發奇想,利用這個機會,學習如何開發一個完整的網站。因此才有了這篇文章,是做個記錄,也是留給未來的自己看看過往成長的歷程。

目標與需求

目標:希望建立一個Web應用

  1. 利用資料庫存放個人資訊。如:自我介紹、公司、薪資、薪資結構、福利等
  2. 透過後端API進行資料交互
  3. 透過前端框架將頁面load出來

需要練習:

  1. cluster or loading balance + ngix
  2. GoLang目錄結構化

規格

硬體

在硬體規格挑選上,使用現有的notebook。比較特別的是選擇使用Ubuntu的OS,原因也沒什麼特別的,就是使用open source習慣了。軟體這裏就得思考了一下,因爲要建立一個Web應用,必須使用到資料庫、後端語言、前端框架。

  • ACER notebook
  • Processor:Intel® Core™ i7-7700HQ CPU @ 2.80GHz × 8
  • Memory:16 GB
  • Graphics:NVIDIA GeForce GTX 1050 Ti/PCIe/SSE2
  • OS:Ubuntu 18.04 LTS

軟體

資料庫可以使用PostgreSQLMongoDB;後端語言可以選擇GoLangNode.JS;前端框架基本上是依照後端的選擇,使用該語言最熱門的框架,這樣可以少走一點冤枉路。

話不多說,先上規格:

  • DataBase:PostgreSQL
  • Back-End:GoLang
  • Front-End:Gin

最終資料庫選擇PostgreSQL。一方面是開源的RDB,在未來在工作上使用機會可能也較多,另一方面是NoSQL的MongoDB過去工作已經用的比較熟悉了。所以就無腦選擇PostgreSQL作爲這次實驗的資料庫啦~

後端語言選擇的是GoLang。原因是個人比較熟悉的PythonJavaScriptNode-RedNode.JS都是弱型別的語言。我們都知道弱型別雖然可以高速開發省去很多麻煩,但也容易遇到runtime errors,而且還特別不好除錯!也因爲是給自己的練習,所以趁這個機會,好好入手一個強型別語言,因此就挑選使用GoLang啦~

針對GoLang來選擇時下最流行的前端框架,看起來是Gin。剛好我也喜歡喝琴酒,作爲一個初學者,看來我是沒有選擇,因此就跟跟大家的風,來一杯82年的Gin吧~

來一個奇怪的知識點,GoLang的前端框架還有一個叫做Martini,這些阿兜仔怎麼那麼奇怪,都喜歡用酒來命名... GoLang 前端框架排名 GoLang 有哪一些好用的前端框架

任務拆解

  • 建立GoLang開發環境
  • 利用GoLang建立Web應用
  • 建立PostgreSQL環境
  • 利用GoLang調用DB
  • 利用Gin整合
  • 使用RestFul API實現調用DB(到這裏基本的網頁應該大致上成型了,再來就是開始練習結構化)
  • 進階與其他應用
    • 調整架構爲Loading balance
    • 導入測試 go test
    • 開始自動化測試CI/CD
    • 加上Swagger godocs
tags: Go GoLang Web DataBase

go-developer-roadmap https://github.com/eddycjy/go-developer-roadmap

Gin实践 连载一 Golang介绍与环境安装 https://segmentfault.com/a/1190000013297625

Day7 | 使用 GoLang 與資料庫進行互動 https://ithelp.ithome.com.tw/articles/10234657

Go 建立一個簡單的 web 服務 https://willh.gitbook.io/build-web-application-with-golang-zhtw/03.0/03.2

graph TD;

subgraph 軟體架構
Front-End:Gin --> Back-End:GoLang
Back-End:GoLang -- API --> DataBase:PostgreSQL;
end

Loading

go-web's People

Contributors

isaaclu0897 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.