插件的使用


框架的插件内容包括:控制器,路由以及视图。具体的插件开发在项目开发中会讲,这里演示如何进行使用。

example插件是我们的演示例子。

使用插件分为:使用第三方包源代码插件和使用动态链接库插件(.so文件,目前仅支持linux和mac平台)

第三方包插件

第三方包插件的使用,只需要调用引擎的AddPlugins方法即可。

如:

  1. package main
  2. import (
  3. "github.com/gin-gonic/gin"
  4. _ "github.com/GoAdminGroup/go-admin/adapter/gin" // 必须引入,如若不引入,则需要自己定义
  5. _ "github.com/GoAdminGroup/themes/adminlte" // 必须引入,不然报错
  6. _ "github.com/GoAdminGroup/go-admin/modules/db/drivers/mysql"
  7. "github.com/GoAdminGroup/go-admin/engine"
  8. "github.com/GoAdminGroup/go-admin/plugins/admin"
  9. "github.com/GoAdminGroup/go-admin/plugins/example"
  10. "github.com/GoAdminGroup/go-admin/modules/config"
  11. "github.com/GoAdminGroup/go-admin/examples/datamodel"
  12. )
  13. func main() {
  14. r := gin.Default()
  15. eng := engine.Default()
  16. cfg := config.Config{}
  17. adminPlugin := admin.NewAdmin(datamodel.Generators)
  18. examplePlugin := example.NewExample()
  19. eng.AddConfig(cfg).
  20. AddPlugins(adminPlugin, examplePlugin). // 加载插件
  21. Use(r)
  22. r.Run(":9033")
  23. }

二进制插件

加载.so文件,需要调用plugins.LoadFromPlugin方法进行加载。

如:

  1. package main
  2. import (
  3. "github.com/gin-gonic/gin"
  4. _ "github.com/GoAdminGroup/go-admin/adapter/gin" // 必须引入,如若不引入,则需要自己定义
  5. _ "github.com/GoAdminGroup/themes/adminlte" // 必须引入,不然报错
  6. _ "github.com/GoAdminGroup/go-admin/modules/db/drivers/mysql"
  7. "github.com/GoAdminGroup/go-admin/engine"
  8. "github.com/GoAdminGroup/go-admin/plugins/admin"
  9. "github.com/GoAdminGroup/go-admin/plugins"
  10. "github.com/GoAdminGroup/go-admin/modules/config"
  11. "github.com/GoAdminGroup/go-admin/examples/datamodel"
  12. )
  13. func main() {
  14. r := gin.Default()
  15. eng := engine.Default()
  16. cfg := config.Config{}
  17. adminPlugin := admin.NewAdmin(datamodel.Generators)
  18. // 从.so文件中加载插件
  19. examplePlugin := plugins.LoadFromPlugin("../datamodel/example.so")
  20. eng.AddConfig(cfg).
  21. AddPlugins(adminPlugin, examplePlugin). // 加载插件
  22. Use(r)
  23. r.Run(":9033")
  24. }