GoAdmin添加一个模块,以及静态资源报404的问题

前提

GoAdmin 还不会用自带模板去创建页面,

而我知道路由设置自定义页面的做法,所以做页面的时候,用html去写了。

步骤

1. 创建一个模块

模仿Django的app管理方式,把一个功能模块独立起来。但不像Django那样由框架创建,GoAdmin是自己组织目录结构,把所有相关的东西放在一个子目录中,里面自己组织。比如:

project/
    main.go # 整个项目入口
    go.mod # 管理依赖包
    config.yml # 项目配置文件
    global/ # 全局的东西
    util/ # 工具包
    myapp/ # 这个就是一个独立的模块,其他模块基本都有类似的目录结构,但不是必须一样
        api/  # 接口放在这里
        html/ # html文件
        pages/ # go来读取html文件,可以是模板文件
        route/ # 模块内的各种路由设置
        static/ # `html/`里的*.html用到的资源文件,js/css等等

2. 设置路由

main.go中原本写路由的地方,以一个InitRouter方法代替。多一个模块,就多一个对应的方法,看起来main.go就不会太乱。

// main.go
    r := gin.Default()
    ...
    route.InitRouter(r)  // 自己定义的方法

然后在模块里myapp/route/route.go里:

package route

func InitRouter(r *gin.Engine) {
    // 自定义页面
    r.GET("/myapp/reply", ginAdapter.Content(pages.reply))
    // 自定义api
    r.POST("/myapp/api/reply", api.reply)
    // 静态路由
    r.Static("/statics", "./myapp/static")
}

就是在这里面设置各种路由。

3. 访问资源

上面r.Static的代码,意思是当地址栏有http://host:port/statics/xxx这种路径时,要对应到实际目录的myapp/static/xxx路径。 其中xxx就是具体的资源路径。

设置好了这行代码,就可以访问静态资源了。

可以是在地址栏直接输入资源路径,在浏览器打开文件
也可以是在html文件中的<link> <script> 等引用进来

到此可以愉快地运行了

4. 一个误导

Goland写代码,在html页面编辑时,会有个误导,它会根据本地项目里的路径关系来做提示。比如:

    <link rel="stylesheet" href="//www.greatytc.com/statics/bootstrap-3.4.1-dist/css/bootstrap.min.css">

它会提示href里的/statics/xxxx是不存在的,的确,本地目录是叫static(注意没有s)。

但不应该理会这个提示。因为实际发布出去,这个html页面打开的话,访问是按前面r.Static设置的路由对应关系来访问静态资源:

    r.Static("/statics", "./myapp/static")

就会在./myapp/static/bootstrap...这个本地路径找bootstrap-3.4.1-dist/css/bootstrap.min.css文件

5. 一个错误

GoAdmin其实还带上了jquery的东西,因为我自己如果在html引用jquery的话,

    <script src="/statics/plugins/jquery-3.6.4.min.js"></script>

控制台会报错,提示http://127.0.0.1/assets/dist/js/all_2.min.38a2a946b0.js代码有错误(具体什么错误不重要),当我删掉这行代码,就不报错了,并且ajax请求正常。

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

推荐阅读更多精彩内容