赞
踩
我们将开始使用Gin框架开发一个api项目,我们起名为:云餐厅。如同饿了么,美团外卖等生活服务类应用一样,云餐厅是一个线上的外卖应用,应用的用户可以在线浏览商家,商品并下单。
该项目分为客户端和服务端两端程序。
云餐厅客户端使用Vue、ES6、Webpack等技术进行开发,项目开发需要具备前端开发技能,我们聚焦于后端Api功能的开发。
运行vue等技术开发的客户端项目,需要安装Node.js环境
可以到nodejs的下载页面: http:// nodejs.cn/download/ 下载对应的安装包
1.Windows电脑安装Nodejs环境
macOS系统安装Nodejs
在终端中使用brew命令安装nodejs。详细命令:
brew install nodejs
Linux系统安装Nodejs
在nodejs的下载页面选择linux类别下的64位文件,下载文件为tar.xz格式的压缩文件。然后依次执行解压缩和建立软连接的命令:
- tar -xvf node-v10.15.3-linux-x64.tar.xz
- vi /etc/profile
- export NODEJS=/opt/node/node-v10.15.3-linux-x64
- export PATH=$NODEJS/bin:$PATH
-
- // 保存/etc/profile文件后
- node -v
- // 看版本
我们着重后端项目开发
在gopath的src目录下,创建OnlineRestaurant目录,作为服务端项目。
mkdir CloudRestaurant
mkdir config
config目录中,配置app.json配置文件
- {
- "app_name": "youmen",
- "app_mode": "debug",
- "app_host": "localhost",
- "app_port": "8090"
- }
创建一个tool目录
里面创建config.go文件,用于解析项目配置信息,config.go如下
- type Config struct {
- AppName string `json:"app_name"`
- AppMode string `json:"app_mode"`
- AppHost string `json:"app_host"`
- AppPort string `json:"app_port"`
- }
- var _cfg *Config = nil
- func GetConfig() *Config {
- return _cfg
- }
-
- func ParseConfig(path string) (*Config, error) {
- file, err := os.Open(path)
- if err != nil {
- panic(err)
- }
- defer file.Close()
-
- reader := bufio.NewReader(file)
- decoder := json.NewDecoder(reader)
- if err := decoder.Decode(&_cfg); err != nil {
- return nil, err
- }
- return _cfg, nil
- }
- func main() {
- //读取配置文件
- cfg, err := toolbox.ParseConfig("./config/app.json")
- if err != nil {
- toolbox.Error(err.Error())
- return
- }
- app := gin.Default()
- app.Run(cfg.AppHost + ":" + cfg.AppPort)
- }
编写hello world
编写Controller: 创建controller,并创建HelloController。
- package controller
-
- import "github.com/gin-gonic/gin"
-
- type HelloController struct {
- }
-
- func (hello *HelloController) Router(engine *gin.Engine) {
- engine.GET("/hello", hello.Hello)
- }
-
- func (hello *HelloController) Hello(context *gin.Context) {
- context.JSON(200, map[string]interface{}{
- "message": "hello world",
- })
- }
在main.go程序中添加路由设置
- func registerRouter(router *gin.Engine) {
- new(controller.HelloController).Router(router)
- }
本项目的前端项目是使用nodejs的vue框架进行开发而成的。名称为shop-client。该项目的源码如下图所示:
如上图所示的是shop-client前端项目.对该前端项目框架作如下解释说明:
安装好了nodejs环境后,可以使用命令对前端项目进行操作
进入项目中
cd shop-client
常用命令
- ...
- "scripts": {
- "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
- "start": "npm run dev",
- "lint": "eslint --ext .js,.vue src",
- "build": "node build/build.js"
- }
- ...
按照上述的脚本命令配置,可以实现很多指令功能.
比如说,可以使用如下命令运行编译项目:
npm run build
因为在scripts脚本中配置了start命令,只有start命令可以忽略run,当然,npm start会具体执行的命令是npm run dev, 因此可以通过npm run dev命令来运行项目.
在shop-client前端项目的src目录下的api目录中,有两个js文件,分别为ajax.js文件和index.js文件。
在shop-client前端项目的src目录下的pages目录中,存放的是项目的页面源文件,页面源文件是.vue为扩展名的文件。
在该项目中,根据项目功能和模块划分为更详细的目录:Login、Msite、Order、Profile、Search、Shop等几个目录。
在src目录下存在有router目录,其中包含一个index.js文件,该文件是前端页面的路由页面,通过该页面的路由配置,进行展示对应的前端页面的vue源文件。
路由模块使用到了第三方的路由库:vue-router。对于第三方vue-router的配置依赖,可以在package.json文件中的dependencies配置模块中找到:
- ...
- "dependencies": {
- "axios": "^0.18.0",
- "better-scroll": "^1.12.6",
- "date-fns": "^1.29.0",
- "fastclick": "^1.0.6",
- "mint-ui": "^2.2.13",
- "mockjs": "^1.0.1-beta3",
- "swiper": "^4.3.3",
- "vue": "^2.5.2",
- "vue-router": "^3.0.1",
- "vuex": "^3.0.1"
- }
- ...
在shop-client项目根目录下的src目录中,有两个代表项目入口的文件,分别是js文件和vue文件。main.js是项目运行的总入口,在main.js文件内部,引入并使用了App.vue文件,同时引入了router路由文件。
App.vue是项目的主页面的布局,并引入了页面样式文件。
需要运行前端项目进行调试时,执行以下步骤
- /*
- cd shop-client
- npm run dev
- */
然后在浏览器中访问8080端口: http://localhost:8080 可以访问到前端页面,如下图所示:
作者you-men
链接:01 . Go之Gin+Vue开发一个线上外卖应用
来源:博客园
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。