开发者社区> 关爱单身狗> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
uiu
我的Go+语言初体验——一次在GO+教程仓库上提交PR的经历
我的Go+语言初体验——一次在GO+教程仓库上提交PR的经历
22 0
我的Go+语言初体验——【一、go+环境WIN10_100%成功安装(附-视频)】
我的Go+语言初体验——【一、go+环境WIN10_100%成功安装(附-视频)】
55 0
我的Go+语言初体验——【二、编码基础(语法结构)(附-视频)】
我的Go+语言初体验——【二、编码基础(语法结构)(附-视频)】
54 0
我的Go+语言初体验——【四、版本更新环境变量配置】
我的Go+语言初体验——【四、版本更新环境变量配置】
44 0
我的Go+语言初体验——go【Format】goplus
我的Go+语言初体验——go【Format】goplus
114 0
我的Go+语言初体验——祝福留言小系统,让她也可以感受到你的祝福(上)
环境搭建 GO+版的祝福语管理系统 前期想法 界面展示 整体界面 增加祝福信息 修改操作 删除操作 退出
40 0
我的Go+语言初体验—— 一个Golang开发者的Go+初体验
文章目录 写在前面 1. 安装 1.1 linux 1.2 windows安装 1.2.1 vscode 安装 1.2.2 goland 安装 2. Go与Go+的对比 2.1 输出 Go Go+ 2.2 字符串 Go Go+ 2.3 循环 Go Go+ 总结
79 0
+关注
关爱单身狗
简书:https://www.jianshu.com/u/f19e29243ff6
文章
问答
文章排行榜
最热
最新
相关电子书
更多
阿里开发者手册-Golang专题
立即下载
Golang 微服务在腾讯游戏用户运营领域的探索及实践
立即下载
复杂PHP系统性能瓶颈排查及优化
立即下载