Golang+Nodejs前后端开发分离示例

一直想看看前后端分离是什么样的感觉,所以就试试看了,因为java感觉有点麻烦,就用了go语言来代替后端。
原理:
当浏览器请求访问数据时将数据提交到nodejs写的服务器中,nodejs将数据解析处理后发送给Golang写的后台服务器(请求协议可自定义),Golang写的后台服务器主要是数据库方面操作,操作完成后将数据发送给nodejs服务器,然后nodejs服务器将数据或页面渲染出来。

0.准备工作

1.Go语言开发环境(我go语言的编辑器是IntelliJ IDEA)
2.nodejs开发环境(我nodejs的编辑器是vs code)
3.分别安装 golang和nodejs版hprose插件

资料参考:
hprose官网
Hprose for Golang 用户手册
Hprose for Node.js 用户手册
koajs官网
koa中文文档
koa官网示例

1.后台服务器编写

代码:

package main

import (
    "github.com/hprose/hprose-golang/rpc"//<===hprose
    "fmt"
    "database/sql"
    _ "github.com/go-sql-driver/mysql"//<===mysql驱动
    "log"
)


func checkErr(err error) {
    if err != nil {
        panic(err)
    }
}
func mysqlTestConnect(str string) string{//数据库查询
    fmt.Print(str)
    db, err := sql.Open("mysql", "root:换成你数据库的密码@tcp(localhost:3306)/test")
    if err != nil {
        log.Fatalf("Open database error: %s\n", err)
    }
    defer db.Close()
    err = db.Ping()
    checkErr(err)
    rows, err := db.Query("SELECT * FROM t_test")
    checkErr(err)
    var tmp string=""
    for rows.Next() {
        var id int
        var name string
        rows.Columns()
        err = rows.Scan(&id, &name)
        checkErr(err)
        tmp=tmp+"id:"+string(id)+"  name:"+name+"<br/>"
    }
    return  tmp
}
func main(){
    server := rpc.NewTCPServer("tcp4://0.0.0.0:10010/")//创建服务具体
    server.AddFunction("客户端调用函数名", mysqlTestConnect)//添加访问函数
    server.Start()//启动
}

2.前台服务器编写

代码:

const koa = require('koa');//这里以koa 框架为例
const app = new koa();
var hprose = require("hprose");//hprose
var client = hprose.Client.create("tcp4://127.0.0.1:10010/", ['客户端调用函数名']);//创建客户端连接
app.use(function* () {
    var dt= yield new Promise(function (resolve) {
        client.客户端调用函数名("请求参数", function (result) {
            resolve(result);
        })
    });
    this.type = 'text/html;charset=utf-8';
    this.body = dt;
});

app.listen(3000);

3.效果

浏览器访问127.0.0.1:3000地址


img_c731d34e4c2369f599b73b56ea537bda.jpe
效果
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值