02 . Beego框架结构组织,路由及项目初始化
Beego项目组织结构
conf
conf:项目配置文件所在的目录,项目中有一些全局的配置都可以放在此目录下。默认的app.conf文件中默认指定了三个配置:
// 1)appname = BeegoDemo2: 指定项目名称。
// 2)httpport = 8080: 指定项目服务监听端口。
// 3)runmode = dev: 指定执行模式。
Controllers
该目录是存放控制器文件的目录,所谓控制器就是控制应用调用哪些业务逻辑,由controllers处理完http请求以后,并负责返回给前端调用者。
models
models层可以解释为实体层或者数据层,在models层中实现和用户和业务数据的处理,主要和数据库表相关的一些操作会在这一目录中实现,然后将执行后的结果数据返回给controller层。比如向数据库中插入新数据,删除数据库表数据,修改某一条数据,从数据库中查询业务数据等都是在models层实现。
routers
该层是路由层。所谓路由就是分发的意思,当前端浏览器进行一个http请求达到后台web项目时,必须要让程序能够根据浏览器的请求url进行不同的业务处理,从接收到前端请求到判断执行具体的业务逻辑的过程的工作,就由routers来实现。
static
在static目录下,存放的是web项目的静态资源文件,主要有:css文件,img,js,html这几类文件。html中会存放应用的静态页面文件。
views
views中存放的就是应用中存放html模版页面的目录。所谓模版,就是页面框架和布局是已经使用html写好了的,只需要在进行访问和展示时,将获取到的数据动态填充到页面中,能够提高渲染效率。因此,模版文件是非常常见的一种方式。
综上,这个整个的项目架构就是MVC的运行模式。常见的架构模式大家应该熟悉比如:MVC,MVP,MVVM等架构。这里我们采用MVC
路由设置
基础路由
Get请求就会对应到Get方法,Post就会对应到Post方法,Delete就会对应到Delete方法,Header方法就会对应Header方法。
package routers
import (
"github.com/astaxie/beego"
"github.com/astaxie/beego/context"
)
/**
* 基础路由
* beego框架提供了常见的http的请求类型方法的路由方案,比如: get,post,head,options,delete等方法
*/
func init() {
beego.Get("/get", func(context *context.Context) {
beego.Info("基础路由中的get请求")
context.Output.Body([]byte("基础路由中的get请求"))
})
beego.Get("/getUserInfo", func(context *context.Context) {
beego.Info("获取用户信息")
context.Output.Body([]byte("获取用户信息"))
})
beego.Post("/post", func(this *context.Context) {
beego.Info("基础路由中的post请求")
this.Output.Body([]byte("基础路由的post请求"))
})
}
固定路由
诸如以下此种代码形式:
// beego.Router("/",controller);
// Get请求就会对应到Get方法,Post就会对应到Post方法,Delete就会对应到Delete方法,Header方法就会对应Header方法。
正则路由
正则路由是指可以在进行固定路由的基础上,支持匹配一定格式的正则表达式。比如:id,:username,自定义正则,file的路径和后缀切换以及全匹配等操作。
自定义路由
上面两种路由都是默认的根据请求的类型,Get就执行Get方法,Post执行Post方法,比较局限。因为在开发的时候大部分都是使用固定匹配想要直接执行对应的逻辑控制方法,因此beego提供给我们了可以自定义的自定义路由配置。方式如下:
// beego.Router("/",&IndexController{},"")
Model层
在Web开发过程中,开发者操作数据,存储数据最常用的就是数据库操作,数据库操作是独立的一个模块,这个在后面具体的项目中实现。
View编写
在实际的开发过程中,要求大家需要掌握html,js语法以及简单的css语法要能看懂,能够时间简单的使用。更加复杂的前端页面或者静态页面,需要和前端开发人员进行对接。开发重心是在后台服务端,因此,只需要学会使用和调用调试即可。
静态文件的设置
在goweb项目中,上面说过是有一些静态资源文件的,如果用户要访问静态资源文件,我们应该也是能够访问的,这需要在我们的项目中进行静态资源设置。
设置方式为:
// beego.SetStaticPath("/down1","download1")
// 这里的download目录是指的非goweb项目的static目录下目录,而是开发者重新新建的另外的目录。
配置数据库
mysql数据库安装
请看我写的专门部署mysql博客
https://www.cnblogs.com/you-men/p/12838133.html
配置数据库驱动
数据库编程属于beego中的Models层,也称为ORM模块
在beego中,目前支持三种数据库驱动,分别是:
// MySQL: github.com/go-sql-driver/mysql
// PostgreSQL:github.com/lib/pq
// Sqlite3:github.com/mattn/go-sqlite3
go get github.com/go-sql-driver/mysql
beego中的ORM所具备的几个特性
// 1. 支持G语言的所有类型存储
// 2. CRUD操作简单
// 3. 自动Join关联表
// 4. 允许直接使用SQL查询
beego项目中使用mysql
导入对应的数据库驱动
import _ "github.com/go-sql-driver/mysql"
注册驱动,连接数据库
orm.RegisterDriver("mysql",orm.DRMySQL)
orm.RegisterDataBase(aliasName,driverName,dbConn)
连接数据库代码
package models
import (
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
"BlogProject/MysqlDemo/util"
//切记:导入驱动包
_ "github.com/go-sql-driver/mysql"
)
func init() {
driverName := beego.AppConfig.String("driverName")
//注册数据库驱动
orm.RegisterDriver(driverName, orm.DRMySQL)
//数据库连接
user := beego.AppConfig.String("mysqluser")
pwd := beego.AppConfig.String("mysqlpwd")
host := beego.AppConfig.String("host")
port := beego.AppConfig.String("port")
dbname := beego.AppConfig.String("dbname")
//dbConn := "root:yu271400@tcp(127.0.0.1:3306)/cmsproject?charset=utf8"
dbConn := user + ":" + pwd + "@tcp(" + host + ":" + port + ")/" + dbname + "?charset=utf8"
err := orm.RegisterDataBase("default", driverName, dbConn)
if err != nil {
util.LogError("连接数据库出错")
return
}
util.LogInfo("连接数据库成功")
}
02 . Beego框架结构组织,路由及项目初始化的更多相关文章
- Vben Admin 源码学习:项目初始化
0x00 前言 Vue-Vben-Admin 是一个免费开源的中后台模版.使用了最新的vue3,vite2,TypeScript等主流技术开发,开箱即用的中后台前端解决方案考. 本系列本着学习参考的目 ...
- Vue+koa2开发一款全栈小程序(5.服务端环境搭建和项目初始化)
1.微信公众平台小程序关联腾讯云 腾讯云的开发环境是给免费的一个后台,但是只能够用于开发,如果用于生产是需要花钱的,我们先用开发环境吧 1.用小程序开发邮箱账号登录微信公众平台 2.[设置]→[开发者 ...
- 使用wepy开发微信小程序商城第一篇:项目初始化
使用wepy开发微信小程序商城 第一篇:项目初始化 前言: wepy小程序项目初始化的操作,官方文档看了好几遍,感觉写得不是很清楚. 这篇写得挺好的:小程序开发之wepy 1.初始化项目 (1)全局安 ...
- 前端Vue项目——初始化及导航栏
一.项目初始化 创建webpack模板项目如下所示: MacBook-Pro:PycharmProjects hqs$ vue init webpack luffy_project ? Project ...
- vue前端项目初始化的步骤
前端项目初始化的步骤 1. 安装vue脚手架 2.通过vue脚手架创建项目 可以直接 vue create 项目名 也可以 vue ui 3.配置vue路由 4.配置Element-ui 组件 ...
- 2016.02.01日,UdoOS系统项目正式开通了
2016.02.01日,UdoOS系统项目正式开通了,源代码即将开放 Copyright (c) 2016
- zookeeper实现项目初始化缓存以及同步监听
Spring-利用InitializingBean接口和zookeeper实现项目初始化缓存以及同步监听 1.先贴出几个需要用到的工具类 ZkClientUtils import com.ithzk. ...
- 02.02.03第3章 餐饮项目案例(Power BI商业智能分析)
02.02.03第3章 餐饮项目案例 02.02.03.01餐饮数据理解与读入 00:06:12 02.02.03.02餐饮数据处理 00:29:57 处理生成的表为: 02.02.03.03餐饮数据 ...
- react-native 项目初始化
react-native 项目初始化 搭建java,android,node环境 http://www.cnblogs.com/morang/p/react-native-java-build.htm ...
随机推荐
- js事件入门(1)
1.事件相关概念 1.1 什么是事件? 事件是用户在访问页面时执行的操作,也就是用户访问页面时的行为.当浏览器探测到一个事件时,比如鼠标点击或者按键.它可以触发与这个事件相关的JavaScript对象 ...
- html+css快速入门教程(6)
9 综合实例 仿百度云盘下载页面实战 10 表格 10.1 table table 为表格标签 可以让我们的表格在浏览器中显示 table 下面还有两个常用标签 tr 和 td tr表示一行 td表示 ...
- Chrome插件Postman的数据目录存储位置,记一次重装系统后找回postman数据的过程...
有次重装系统到一块新的SSD磁盘,很多数据都做了备份就是忘记将Chrome插件Postman的数据做备份,导致重装后找不到以前定义的那些Collections.悔恨之余想到既然我原来的C盘还在,为何不 ...
- 2020年Web前端开发工程师市场怎么样?学会什么技术才能拿到高薪
几乎整个互联网行业都缺前端工程师,不仅在刚起步的创业公司,对上市公司乃至巨头这个问题也一样存在.据统计,国外的前端开发人员和后端开发人员比例约1:1,但是在国内比例却在1:3以下, Web前端开发职位 ...
- h5移动端实现图片文件上传
PC端上传文件多半用插件,引入flash都没关系,但是移动端要是还用各种冗余的插件估计得被喷死,项目里面需要做图片上传的功能,既然H5已经有相关的接口且兼容性良好,当然优先考虑用H5来实现. JS代码 ...
- CSS 3中-webkit-, -moz-, -o-, -ms-这些私有前缀的含义和兼容
css3作为页面样式的表现语言,增加了很多新的属性,但是部分css3属性在一些浏览器上还处于试验阶段,所以为了有效的显示css3的样式,对应不同的浏览器内核需要不同的前缀声明,例如: -moz- :F ...
- C++中string转换为char*类型返回后乱码问题
问题来源: 在写二叉树序列化与反序列化时发现序列化函数为char* Serialize1(TreeNode *root) 其函数返回类型为char*,但是我在实现的过程中为了更方便的操作添加字符串使 ...
- POJ 3463 Sightseeing 题解
题目 Tour operator Your Personal Holiday organises guided bus trips across the Benelux. Every day the ...
- [JAVA]SpringBoot中让接口支持跨域
官方原文:https://spring.io/blog/2015/06/08/cors-support-in-spring-framework ===抽空翻译 最简单办法:在方法上增加注解: @Cro ...
- Mysql基础(十一):Self Join
Summary: 如何使用 MySQL self join 进行表的 自己对自己的join操作.. 前面的教程,已经教过join语法,都是两个表的之间的操作,特殊的,当一个表自己和自己进行join,那 ...