最近Packt出了一本书,《Isomorphic Go》。我就好奇,已经有了Isomorphic JavaScript(后端用Node.js),为何还要再来一个Isomorphic Go? 也就不说 Isomorphic Go了,为什么要用Go来写前端?已
最近Packt出了一本书,《Isomorphic Go》。我就好奇,已经有了Isomorphic JavaScript(后端用Node.js),为何还要再来一个Isomorphic Go?
也就不说Isomorphic Go了,为什么要用Go来写前端?已经有TypeScript、clojurescript这些的情况下?
现在我忽然领悟了,关键在于protobuf!protobuf是一种二进制数据交换格式,要一个proto文件定义message数据结构,每个字段关联一个tag number,protobuf的核心优点当然是数据交换协议的接口定义方便,通过protoc自动生成各个语言的bindings文件,对于后端服务来说,通常是C++。
protobuf+RPC,就是gRPC,gRPC更牛,因为它直接支持长连接、同步异步调用,在protobuf的时间里你还需要自己写http层的服务器代码,在gRPC的世界里你就不需要了,相当于gRPC直接提供了runtime/container。
对于gRPC客户端来说,GopherJS项目提供了protoc的js绑定,使得可以直接从浏览器里面发起PB请求!这意味着,可以直接向一个后端C++算路服务发送经纬度坐标请求,然后将结果PB二进制字符串解析到JS对象,借助Leaflet这样的JS库就可以绘制出route路线了。