使用Golang快速構建WEB應用

發表於2015-03-13

1.Abstract

在學習web開發的過程中會遇到很多困難,因此寫一篇類似綜述類的文章。作為路線圖,從web開發要素的index出發,來介紹golang開發的學習流程以及Example程式碼。在描述中多是使用程式碼來描述使用方法不會做過多的說明。最後可以方便地copy程式碼來實現自己的需求。

本文適應物件:

  1. 對web開發有一定經驗的人
  2. 能夠靈活使用ajax的人(至少懂得前後分離)
  3. golang web 開發有一定了解,至少略讀過一些golang web開發的書籍

看完本文之後您會收穫:

  1. golang web開發的一些技巧
  2. golang web開發的一些實用API

本文在描述的時候為了解釋儘量詳細,已經把解釋寫到程式碼註釋中。

 

2.golang web 開發check list

略過的部分:基本流程控制,OOP等基礎語法知識。

2.1本章節提供golang web開發的知識面參考。

  • 1.Abstract
  • 2.golang web 開發check list
    •     2.1 本章節提供golang_web開發的知識面參考。
  • 3.路由器
    •     3.1 手動路由
    •     3.2 手動路由的繫結
      •         3.2.1 靜態檔案
      •         3.2.2 固定函式與資源獲取
  • 4.頁面載入
    •     4.1 純靜態頁(HTML)
    •     4.2 模板頁面的載入
  • 5.表示層指令碼
    •     5.1 require.js
      •         5.1.1 載入
      •         5.1.2 頁面Business
    •     5.2 JQuery
  • 6.業務層
  • 7.持久層
    •     7.1 Mysql
    •     7.2 Mongodb
  • 8.單元測試注意事項
  • 9.LOG
  • 總結

3.路由器

路由器是整個網站對外的靈魂,如果路由做的不好URL會非常噁心。
所以這部分設計成第一個要說的內容。

路由分兩種一種是手動路由為了通過tul排程固定的功能,另外一點就是資源
的獲取,通過url的分析來模仿靜態頁的方式來獲取資源(類似get)

自動路由,主要使用OOP的COMMAND模式來實現。所有功能使用post,
統一入口,方便許可權管理,安全管理,跨域管理。但是如此強大的功能還是
交給框架來做吧。這裡就不給新手做參考了。

3.1手動路由

在httpserver執行之前先繫結路由

3.2 手動路由的繫結

3.2.1 靜態檔案

3.2.2 固定函式與資源獲取

他們都是一樣的

4.頁面載入

4.1 純靜態頁(HTML)

直接交給路由就行了。自動就訪問那個資料夾了。不過生產環境果然還得是cdn,如果自己伺服器比較多。可以nginx反向代理。
主要好處前後分離,能上CDN就是通訊次數多了。不過通過優化改善之類的都還ok啦。

4.2 模板頁面的載入僅提供關鍵程式碼。

      僅提供關鍵程式碼。
  1. 字串陣列作為輸入引數差錯比較困難
  2. 總結:雖然減少的通訊次數,但是沒辦法上CDN蛋疼,另外,模板的mapping蛋疼。

5.表示層指令碼

表示層指令碼做的比較困難也不是很好學。
但是一旦搞定了,程式碼的複用性會有非常可觀的提升。

就普通情況而言JS開發效率是非常高的靈活度高,並且使用的是客戶端的cpu
效能好,免費資源多,學習的人也多,好招聘。

5.1 require.js

5.1.1 載入

整個網頁之留這麼一個載入指令碼的入口(每個頁面最好只有一個js檔案)

好處

  • js是延遲載入。不會出現網頁卡死的情況
  • 最大化使用快取。(HTTP 304)
  • 一個網頁只用一個js
  • dom事件繫結,不用在html控制元件上寫js繫結了

壞處

  • 學習比較難
  • 網站更新始終有快取沒更新的瀏覽器。造成錯誤(所以有些情況客戶自己就知道多重新整理幾次了,已經成使用者習慣了)

引數解釋

  • data-main 業務邏輯入口,載入當前字串.js這個檔案
  • language 不解釋
  • defer async 字面意思
  • src r.js就是require.js的意思。程式碼到處都能搞到。

5.1.2 頁面Business

載入依賴檔案

執行頁面business

執行裡面做的最多的就是dom跟事件繫結而已。載入各種js庫直接引用。
程式碼美觀,開發效率,執行效率都是非常棒的。

頁面MODEL

5.2 JQuery

JQ的功能只要require.js引用了之後基本上都是一樣的。
如果有需要可以到w3school上學習一下。

6.業務層

Post分析

資源入口函式資源require分析(url分析固定寫法)

直接輸入object

7.持久層

7.1 Mysql

其實不管什麼語言的Mysql驅動都是從PRO*C來的,所以會PRO*\C之後,啥都好說

Insert Delete Update

Query

7.2 Mongodb

這裡只給出最簡單的例子。具體的看mgo的開發文件就ok。還是比較簡單的。

8.單元測試注意事項

  1. 測試命令 go test -v (沒有其他引數了!!!) 如果不帶-v只顯示結果,不顯示除錯過程,主要是除錯開發的時候用
  2. 檔案格式 xxx_test.go 但是建議改成 xxx_test0.go 或者喜歡改成別的也可以。
    1. 由於測試先行的原則,在開發的時候一次測試也就一兩個函式。
    2. 這樣相當於把其他測試註釋掉
  3. 測試的時候的配置檔案要放到測試目錄下面。別忘了。
  4. 心態,錯誤太多一個一個來,要有個好心態。

9.LOG

  1. 注意在除錯中Log的不可缺失性。
    下面api如果不知道從何而來直接doc搜尋就可以了。

使用方法:

總結

  1. 看完這裡copy程式碼日常工作還是能好應付一點。
  2. 如果是新手看完這個之後,看那麼厚的書就有一定的目標性了。能方便一點在學習web開發的過程中會遇到很多困難,因此寫洗一篇類似綜述類的文章。作為路線圖從web開發要素的index出發來介紹golang開發的學習流程以及Example程式碼。

相關文章