爲何又要推薦一個Web開發框架??

很難找到一款開發效率高易上手可以普遍推廣性能好(節省成本抗住大併發C10k), 部署簡單(一鍵部署,無需配置任何環境)的Http項目開發框架。若是有,那麼必定是用Go語言開發的吧!看到不少php的仁兄還沒接觸Go語言。想起以往用php框架像laravel開發,php-fpm部署運行,併發起來瘋狂加機器的日子,眼淚就流下來。儘管後來有了swoole這種優秀的解決方案。Go的天生底層網絡處理優點仍是獨樹一幟(請忘了它的語法)。因而,我向即將或已經遭受併發之苦,成本之痛,部署之心累的底層碼農們推薦一門神奇的語言Go,以及一個優秀的Web開發框架Gin。Beego?聽過不少吐槽,不敢輕易用。因爲Gin很"簡單",根據一些我的的開發習慣,整理了一個基於Gin新手入門項目開發骨架,歡迎下載一波感覺一下。如下正文:php

地址:https://github.com/chenhg5/mo...css

MorningGo : Gin WebApp Project Skeleton

基於Gin的web項目開發框架。僅供參考。前端

更高的開發效率,

更好的性能,

更簡單整潔的項目組織結構,

更快的部署。mysql

適合於小型項目,大中型項目(pv高、需求複雜度高)移步 kitgo-microkitenginx

環境要求

項目安裝運行

使用安裝器安裝laravel

安裝項目

cd $GOPATH/src

wget https://gitee.com/cg33/morningo-installer/raw/master/morningo-installer       # mac
wget https://gitee.com/cg33/morningo-installer/raw/master/morningo-installer-linus # linus
wget https://gitee.com/cg33/morningo-installer/raw/master/morningo-installer.exe   # windows

chmod +x morningo-installer
./morningo-installer --project-name web

加載依賴

cd web
make deps

測試

make test

平滑重啓

make restart

運行

make

瀏覽器訪問 http://localhost:4000/api/indexgit

項目部署

生成可執行文件github

make build # linus用戶
make cross # mac/windows用戶

build下文件上傳到生產環境服務器,並設置好日誌文件路徑以及靜態文件路徑,而後直接運行便可。如端口不爲80端口或有多個域名,能夠配置nginx代理,或者採用反向代理中間件gin-reverseproxy, 關於代理的使用,routers.go中有示例。運行的同時會在文件夾下生成pid文件,每次更新完文件後執行以下命令便可平滑熱更。web

kill -INT $(cat pid) && ./morningo # 即中止舊的進程,重啓新的執行文件

項目結構

.
├── Makefile
├── README.md
├── command                     
│   └── sword.go
├── config                      全局配置
│   └── env.go
├── connections                 存儲鏈接
│   ├── database
│   │   ├── mongodb
│   │   └── mysql
│   └── redis
│       └── redis.go
├── controllers                 控制器
│   └── MainController.go
├── filters                     中間件
│   └── auth                    認證中間件
│       ├── drivers             認證引擎
│       └── auth.go             
├── frontend                    前端資源
│   ├── assets
│   │   ├── css
│   │   ├── images
│   │   └── js
│   ├── dist
│   └── templates
│       └── index.tpl
├── handle.go                   全局錯誤處理
├── main.go                     
├── models                      模型
│   └── User.go
├── module                      項目模塊
│   └── schedule
│       └── schedule.go         定時任務模塊
├── routers.go                  路由
├── routers_test.go             api測試
├── storage                     
│   ├── cache                   緩存文件
│   └── logs                    項目日誌
│       ├── access.log          
│       └── error.log
└── vendor                      govendor 第三方包

箱子裏有什麼 what`s in the box

HTTP 層(基於Gin)

  • 路由
  • 中間件
  • 控制器
  • 請求
  • 響應
  • 視圖
  • Session

前端

  • tpl模板

安全

  • 用戶認證
  • 用戶受權
  • 加密解密
  • 哈希

綜合話題

  • dancer 命令行
  • 緩存系統
  • 錯誤與日誌
  • 任務調度

數據庫

  • mysql
  • mongodb
  • redis

ORM(基於gorm)

測試

  • api 測試

項目依賴

  • web框架:github.com/gin-gonic/gin
  • ORM包:github.com/jinzhu/gorm
  • Redis:github.com/go-redis/redis
  • Mysql:github.com/go-sql-driver/mysql
  • Wechat:github.com/silenceper/wechat
  • 任務調度:github.com/robfig/cron
相關文章
相關標籤/搜索