使用 Iris 打造一款个人博客(配置篇)

Golang:使用 Iris 打造一款个人博客(一)

Iris 号称世界第一快的框架

实际上测试对比几款高性能的 go web 框架,Iris 框架的响应速度确实优于其他框架(当然 gin 和其他框架也不赖)
在知乎和一些技术论坛里也有主张不使用 Iris 框架的文章,大概的内容是 Iris 存在不可预测的安全性问题
今天不讨论这些玩意,反正我个人使用过程中并没有碰到什么安全隐患,反而中意 Iris 的高性能和并发量

官方源码文档 GitHub:https://github.com/kataras/iris

具体的实例 demo 可以自行参考官方文档,遵循 MVC 架构

这就不废话了,下面开始 Iris 编写个人博客第一弹,配置篇

image

项目结构

开始编码之前总是需要定义一下总体的项目结构

项目结构

可以看到除了 配置文件,数据库连接 和 主执行文件 之外
剩下的就是 控制器(controller),视图(server) 和 模型(models)
这就是所谓的 MVC 模型了

今天就先来看看配置文件如何去写(个人习惯) 以及 配置数据库连接
其实这也是大多数 web 开发者一开始做的事情


配置文件

Iris 提供几种配置文件的格式,我个人使用 .json 或 .yaml
在根目录下新建 config.json 文件
简单配置一下端口 和 静态目录

# config.json
{
  "app_name": "Blog",
  "port": "5000",
  "static_path": "/static",
  "mode": "dev"
}

config

加载到 config.go 文件
在 config 目录下新建 config.go 文件

package config

import (
"encoding/json"
"os"
)

//服务端配置
type AppConfig struct {
    AppName    string `json:"app_name"`
    Port       string `json:"port"`
    StaticPath string `json:"static_path"`
    Mode       string `json:"mode"`
}


//初始化服务器配置
func InitConfig() *AppConfig {
    file, err := os.Open("F:/Go_work/src/Iris框架/config.json")
    if err != nil {
        panic(err.Error())
    }
    decoder := json.NewDecoder(file)
    conf := AppConfig{}
    err = decoder.Decode(&conf)
    if err != nil {
        panic(err.Error())
    }
    return &conf
}

连接 Mysql 数据库

在 datasource 目录下新建 db.go 编写数据库连接

package datasource

import (
    "Iris_web/models"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
    "github.com/jinzhu/gorm"
    _ "github.com/lib/pq"
)


var Db *gorm.DB

func init(){
    var err error

    mysql_conn := fmt.Sprintf("%s:%s@(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", "root","wocao", "127.0.0.1", 3306, "iris_blog")

    //赋值给全局变量 Db 没有 := 就是赋值
    Db, err = gorm.Open("mysql", mysql_conn)
    if err != nil{
        panic(err)
    }
    fmt.Println("初始化数据库成功......")
    Db.LogMode(false)  //是否开启log
    Db.AutoMigrate( &models.Article{},&models.G_count{}) //自动迁移  跟py一样
}

配置部分结束,是不是很简单

欢迎转载,但要声明出处,不然我顺着网线过去就是一拳。
个人技术博客:http://www.gzky.live

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇文章是从我的个人博客站点中搬过来的,后面不打算继续维护站点了,所以将之前的文章搬过来。 原文写于2017年3月...
    忠视迹阅读 4,062评论 0 5
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 10,790评论 0 9
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 11,092评论 0 4
  • 个人网站:https://sunfove.xyz,欢迎交流 Hexo Hexo 是一个快速、简洁且高效的博客框架。...
    sunfove阅读 7,336评论 5 12
  • 康查舒阅读 1,462评论 0 1