时间回到 2018 年,我写了一篇获得 15k 阅读的文章:Django + Angular 4 = A powerful web application。出于好奇心,我尝试了Angular4 和 Django 的组合。接着上个系列,这是一篇使用 Vuejs 和 Golang 来帮助你构建极佳应用的文章。
我知道这两者一起用不是很常见,但是,让我们试一试。
背景
首先,让我们来聊聊两者提供的技术特征。
Golang
- 二进制 —— 所有需要构建的内置依赖项都是二进制文件。因此,您不需要安装运行时来运行应用程序。
- 静态类型 —— 编译器不仅在编译过程检查类型,而且在代码编写的过程。处理类型转换和兼容性等问题都有兼顾。
- 并发性 —— Golang 最好的特性是它对高并发性的优先支持。
- 标准库 —— 标准库功能足够强大,你基本上不需要第三方库。
Vue.js
- 体积 —— 经过 gzip 压缩后,它的大小仅为 18kb ,对比压缩后的 jQuery,gzip 压缩后的大小为 29kb。
- 可读性 —— Vue.js 的源码和语法非常清晰简单。
- 文档 —— Vue.js 完善的文档使它能很快上手和学习。
- 灵活 —— 数据在 HTML 和 JavaScript 间的绑定是非常流畅的。
- Vue CLI 3 —— cli 提供了一系列的功能让你很快的上手,尝试着使用它你会喜欢上它。
Golang 和 Vuejs 在运行时都很快,所以让他们一起合作构建一个很快的单页面应用。
我们开始构建:
初始化文件目录
首先,像下面这样初始化你的文件目录,为 Git 添加 “LICENSE” 、“README.md” 等文件.
在 backend 文件夹创建一个 'server.go' 文件:
前端部分,在命令行输入以下命令来创建一个新的 app 应用:
preset
现在文件目录结构如下:
代码的结构准备好了!
现在让我们看下我们将要做开发的应用,它不是一个很复杂但是可以帮助你开始开发复杂应用。我们将要开发一个计算器,我们在前端输入两个数字,通过 POST 请求发送到 Golang 服务端。服务端将会进行加、减、乘、除,然后通过一个 POST 请求返回结果,前端将会渲染结果。
构建后端
Golang 很快是因为它的编译器,它不允许你定义多余的变量。如果你定义变量或者引入任何 package 包,那么这些变量、包应该是你需要使用的,Golang 在这方面很严格。另外无论你想要做什么,你需要事先告诉给编译器,例如:如果你想使用 POST 获取数据,你必须事先定义返回数据的 JSON 格式。这有点麻烦,但是为了速度这是值得的。
回到代码上。
encoding/jsonnet/http
现在,我们将会写一个简单的方法来做数字的运算。这里,我们需要明确指定返回数据的类型。
我们需要写一个方法,当我们使用 POST 方法发送 JSON 格式的请求时,这个方法能够被执行。
JSON
numsDatanumsResData
numsData
ResponseWriter
8090
完整的代码如下:
现在我们来构建前端
cd
axiosvee-validatebootstrap-vue
src/Calculator.vue
v-model
postreq
scriptJavaScript
axiosvee-validatedata
methodspostreq()http://localhost:8090/calcserver.gocalcaddmulsubdiv
很简单是吧? 是的。
以上就是所有我们需要做的,只需要记住这些要点:
- 使用 Golang 写服务端逻辑并且运行在单独的端口上.
- 构建代码结构来处理 JSON 数据,你不能将它们存储在变量中。
- 前端的 Vuejs 会使用 GET 或 POST 请求来调用服务端的 API 接口。
运行应用
8090
运行前端可以使用:
祝贺!你的 App 完成了。
整个代码托管在这个 上。
并且,如果你想看另一个我使用 Vue.js 和 Golang 构建的应用 Rocket Engine Designer,请点击
如果你喜欢这篇文章,请点击 ???? 按钮给与你对这篇文章的喜爱。
本文由 原创编译, 荣誉推出