• vue+elementui+beego笔记


    vue建立新项目:https://www.cnblogs.com/wx1993/p/6136892.html

    beego建立新项目:beego搭建api服务

     vue添加elementui:https://blog.csdn.net/chen_vae/article/details/83543552

    beego项目解决跨域 (beego做后台,vue做前端)

    VUE打包好的文件部署让beego实现静态文件访问,如何用根目录来访问静态文件?

     

    前后端数据交互:

    Beego中前后端数据是如何实现交互的,Get|Struct|JSON / Request Body

    beego post请求获取request body参数

    Go的json解析:Marshal与Unmarshal

     

    1. 下段代码放到main.go文件中(解决跨领域问题)

     1 func init() {
     2   // 这段代码放在router.go文件的init()的开头
     3   beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{
     4     AllowOrigins: []string{"http://" + beego.AppConfig.String("front_end_domain") + ":" + beego.AppConfig.String("front_end_port")},
     5     AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
     6     AllowHeaders: []string{"Origin", "Authorization", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
     7     ExposeHeaders: []string{"Content-Length", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
     8     AllowCredentials: true,
     9   }))
    10 }

    2.连接mysql

     1 // init 初始化
     2 func init() {
     3     //启用Session
     4     beego.BConfig.WebConfig.Session.SessionOn = true
     5     InitDatabase()
     6 }
     7 
     8 // InitDatabase 初始化数据连接
     9 func InitDatabase() {
    10     //读取配置文件,设置数据库参数
    11     //数据库类别
    12     dbType := beego.AppConfig.String("db_type")
    13     //连接名称
    14     dbAlias := beego.AppConfig.String("db_alias")
    15     //数据库名称
    16     dbName := beego.AppConfig.String("db_name")
    17     //数据库连接用户名
    18     dbUser := beego.AppConfig.String("db_user")
    19     //数据库连接用户名
    20     dbPwd := beego.AppConfig.String("db_pwd")
    21     //数据库IP(域名)
    22     dbHost := beego.AppConfig.String("db_host")
    23     //数据库端口
    24     dbPort := beego.AppConfig.String("db_port")
    25 
    26     dbCharset := beego.AppConfig.String("db_charset")
    27     
    28     orm.RegisterDataBase(dbAlias, dbType, dbUser+":"+dbPwd+"@tcp("+dbHost+":"+dbPort+")/"+dbName+"?charset="+dbCharset, 30)
    29 
    30     //如果是开发模式,则显示命令信息
    31     isDev := (beego.AppConfig.String("runmode") == "dev")
    32     //自动建表
    33     orm.RunSyncdb("default", false, isDev)
    34     if isDev {
    35         orm.Debug = isDev
    36     }
    37 }

    使用时需要注意:

    1 orm.Debug = true
    2 o := orm.NewOrm()
    3 o.Using("default") // 默认使用 default
    4 query := o.QueryTable(tablename)

    3.beego与vue传数据

    vue向beego发起请求,并得到beego中的结果(res)

     1           let loginParams = {
     2             username: _this.loginForm.phoneNumber,
     3             password: _this.loginForm.password
     4           }
     5           console.log(loginParams)
     6           login(loginParams)
     7             .then(res => {
     8               _this.loading = false
     9               console.log(res)
    10               // eslint-disable-next-line
    11               if (parseInt(res.code) == 0) {
    12                 console.log(res.code)
    13                 let user = { ..._this.loginForm, ...res.data }
    14                 sessionStorage.setItem('user', JSON.stringify(user))
    15 
    16                 _this.$router.push({ name: 'index', component: Home })//登陆成功,转向下一个网页
    17               } else {
    18                 _this.$message({
    19                   showClose: true,
    20                   message: res.msg,
    21                   type: 'error'
    22                 })
    23               }
    24             })
    25             .catch(error => {
    26               _this.loading = false
    27               _this.$message({
    28                 showClose: true,
    29                 message: '用户名,密码错误',
    30                 type: 'error'
    31               })

    其中login

    export const login = params => post(domain + ':' + port + '/login', params)

    其中post

     1 export function post (url, params) {
     2   axios.defaults.headers.post['Content-Type'] = 'application/json'
     3   return new Promise((resolve, reject) => {
     4     axios
     5       .post(url, JSON.stringify(params))
     6       .then(res => {
     7         resolve(res.data)
     8       })
     9       .catch(err => {
    10         reject(err.data)
    11       })
    12   })
    13 }

    beego接收vue请求,并将结果发送给vue

     1 func (this *UserController) Login() {
     2     var ob models.User
     3     json.Unmarshal(this.Ctx.Input.RequestBody, &ob)
     4     var isLogin bool = queryLoginValid(ob.Username, ob.Password)
     5     result := make(map[string]interface{})
     6     if isLogin {
     7         this.SetSession("isLogin", true)
     8         result["code"] = 0
     9         result["msg"] = "success"
    10         result["data"] = "登录成功"
    11 
    12     } else {
    13         result["code"] = 1
    14         result["msg"] = "fail"
    15         result["data"] = "登录失败,请重新登录"
    16     }
    17     this.Data["json"] = result
    18     this.ServeJSON()
    19 }

     

  • 相关阅读:
    Spark源码学习1.1——DAGScheduler.scala
    Spark随笔(三):straggler的产生原因
    Spark随笔(二):深入学习
    Spark随笔(一):Spark的综合认识
    Hadoop随笔(二):Hadoop V1到Hadoop V2的主要变化
    Hadoop随笔(一):工作流程的源码
    zookeeper 安装笔记 3.6.7
    OpenStack 与 大数据的融合
    三 概要模式 3) MR计数器计数 。无 reduce 计数
    五 数据组织模式 2) 分区模式 代码
  • 原文地址:https://www.cnblogs.com/cekong/p/10831940.html
Copyright © 2020-2023  润新知