大家好,helloworld.net 上线已经有近半年的时间了,转眼过的好快,在这半年的时间里,迭代了近10多个版本,优化了很多的体验,交互上的不足之处,同时也上线了我们的安卓 app, 苹果的因为还在申请开发者账号,所以暂时未上线

在这半年的时间内,网友很给力,也给出了很多的建议和优化,也有不少网友说愿意为 helloworld开发者社区出一份力,在这里我感谢这些支持我们的用户,helloworld开发者社区会一如既往的坚持免费,分享,干货的精神做一个 程序员自己的技术社区

今天我们来聊聊 go, iris, nuxt 这些技术在 helloworld开发者社区中的应用

因为我们的用户都是做研发的,所以大家看到网站的第一反应就是这个网站用什么技术做出来的?

下图是 helloworld.net 的框架图

有几个问题,用户比较关心,先来回答几个问题先

一 为什么选择了 Go 而不是 java ?

实在不想回答这个问题啊,因为很容易引起程序员之间的战争,语言之争,是非多,扯不清道不明的,不过在这里还是要说明一下

  1. Java是现阶段最成熟,最稳定,相关的库第三方的库,解决方案都是最全的,这一点是毫无疑问的

  2. Go我个人认为是未来的语言,现在虽然各方面的库,框架没有Java的多,那是因为Java很多年了,Go 现在已经有的框架,库,至少对于我写这个网站来说,足够用了

  3. Go真的很简洁,Java那一套SpringBoot虽然强大,但是和Go 的 iris 框架相比,太重了,太重了,太重了

  4. Go的简洁让我喜欢它,Go的性能,让我选择用它,用 go iris 和 java的springboot我作过一个简单的测试,写过一个接口,用go和 java返回博客的前50篇内容,go的性能是java的将近3倍

所以最终选择了go,而不是java,虽然我更熟悉java

关于go和java之争,就像当年 java和php之争一样,既然有争议了,出结果肯定是要一个过程的,在这个过程中,可能有很多的人战队 ,但是最终都是好的代替老的。就像后来java慢慢的把php给挤下去了一样

以上只是个人看法,不要喷我

go的web框架也有很多,比如 beego, gin , iris ,Echo等,最知名的要数beego了,现在用的比较多的是 gin

iris 因为是demo比较全,而且mvc的功能很完善,当时就选了 iris , 其实当时也纠结过gin和 iris 的选择,不过最终还是选择了demo更丰富的iris

二 服务端渲染怎么做?

做技术社区嘛,就不能用vue, react 单纯的写单页面的方式了来写网站了

要不百度不认识啊,不收录啊

vue 和 react 各种一个非常好的 ssr 的解决方案

vue 就是nuxt 了,官方也推荐的。

react 就是 next ,这俩哥们,ssr方案起的名字都很像,就差一个字母

helloworld.net初期的时候,就创建人,也就网名待兔的,一个人在搞,而且还不会写前端,现学的前端,因为vue学起来比react简单,当时就学了vue,那nuxt自然也是要用的了。

三 服务器配置

服务器是在腾讯云买的,买了4台,花了5万多,4核8G的,带宽也还行。目前来说够用了

在此之前还有一台100M的,16核32G的从机房租的,这台现在是当测试机了

数据库就没有什么好说的了 mysql

好了,下面我们再来看看下面的那框架图

用户在浏览器地址栏中输入 www.helloworld.net 并回车的时候

请求首先发到了nginx,在nginx做了转发处理,把所有的请求都打到了 node服务器上

也就是nuxt那台服务器

nuxt 会请求接口服务,这个就是我们通常开发业务的时候,返回json数据,并解析数据

nuxt 收到接口返回的json后,动态生成网页,并返回给nginx,nginx再返回给用户

这样用户浏览器收到的就是已经渲染好的html了,就不是客户渲染了

现在要明白 ,nginx是http服务,node上跑nuxt也是http服务,api接口也是http服务

等于说, 一个请求,经过了好几个http服务

  • nginx http是负责转发请求的
  • node 上的nuxt http是负责ssr的,也就是请求接口服务,把返回的数据,动态渲染成 html
  • api服务器上跑的http是负责从缓存 ,数据库中取出数据的

有人可能会担心 ,中间的node上跑的nuxt,毕竟是node,有的公司对服务器上跑node很排斥,会不会有问题

我们也有过这样的担心,不过后来实际测试用的时候,并没有什么大的问题

所以,放心的用吧

api 接口后面是 redis和es搜索,mysql主从服务器

以上就是整个helloworld开发者社区的技术栈以及选型的过程

在技术选型的时候,一定要结合自己的实际情况来作选择

而且要谨慎,也有考虑未来的技术趋势等

最后 再次谢谢大家的支持,我们会一如既往的做一个体验好的,程序员自己的技术社区

go, iris , nuxt, 服务端渲染等技术在helloworld开发者社区中的应用与实践的更多相关文章

  1. Nuxt 服务端渲染

    前言 Nuxt.js 是一个基于 Vue.js 的通用应用框架. ssr 渲染服务端 可以看官方文档 https://zh.nuxtjs.org/guide/ nuxt 与平常 jsonp 不一样 , ...

  2. nuxt服务端渲染

    <template> <div class="page"> page is search <ul> <li v-for="(it ...

  3. Vue、Nuxt服务端渲染,NodeJS全栈项目,面试小白的博客系统~~

    Holle,大家好,我是李白!! 一时兴起的开源项目,到这儿就告一段落了. 这是一个入门全栈之路的小项目,从设计.前端.后端.服务端,一路狂飙的学习,发量正在欣喜若狂~~ 接触过WordPress,H ...

  4. ASP.NET Core 与 Vue.js 服务端渲染

    http://mgyongyosi.com/2016/Vuejs-server-side-rendering-with-aspnet-core/ 原作者:Mihály Gyöngyösi 译者:oop ...

  5. 服务端渲染技术NUXT

    什么是服务端渲染 ​ 服务端渲染又称SSR (Server Side Render),是在服务端完成页面的内容,而不是在客户端通过AJAX获取数据. 服务器端渲染(SSR)的优势主要在于:更好的 SE ...

  6. vuejs服务端渲染更好的SEO,SSR完全指南Nuxt.js静态站生成器

    vuejs服务端渲染更好的SEO,SSR完全指南Nuxt.js静态站生成器SSR 完全指南https://cn.vuejs.org/v2/guide/ssr.html在 2.3 发布后我们发布了一份完 ...

  7. 基于vue的nuxt框架cnode社区服务端渲染

    nuxt-cnode 基于vue的nuxt框架仿的cnode社区服务端渲染,主要是为了seo优化以及首屏加载速度 线上地址 http://nuxt-cnode.foreversnsd.cngithub ...

  8. next.js、nuxt.js等服务端渲染框架构建的项目部署到服务器,并用PM2守护程序

    前端渲染:vue.react等单页面项目应该这样子部署到服务器 貌似从前几年,前后端分离逐渐就开始流行起来,把一些渲染计算的工作抛向前端以便减轻服务端的压力,但为啥现在又开始流行在服务端渲染了呢?如v ...

  9. [vue] vue服务端渲染nuxt.js

    初始化 使用脚手架工具 create-nuxt-app 快速创建 npx create-nuxt-app <项目名> npx create-nuxt-app 执行一些选择 在集成的服务器端 ...

随机推荐

  1. 使用VS Code从零开始开发调试.NET 5

    使用VS Code 从零开始开发调试.NET 5.无需安装VS 2019即可开发调试.NET 5应用. VS Code 全称是 Visual Studio Code,Visual Studio Cod ...

  2. Spring Boot 快速迁移至 Quarkus

    Quarkus 是一个目前非常火的 Java 应用开发框架,定位是轻量级的微服务框架.,Quarkus 提供了优秀的容器化整合能力,相较于传统开发框架(Spring Boot)有着更快的启动速度.更小 ...

  3. Salesforce学习之路(六)利用Visualforce Page实现页面的动态刷新功能

    Visualforce是一个Web开发框架,允许开发人员构建可以在Lightning平台上本地托管的自定义用户界面.其框架包含:前端的界面设计,使用的类似于HTML的标记语言:以及后端的控制器,使用类 ...

  4. 你好,FFMPEG 可视化

    你好,FFMPEG 可视化 给大家看看我现在的玩具: 它有哪些功能呢?如你所见,不止于此 1. 视频录制 暂时只能录制视频,音频无法录制 FFMPEG.exe 暂时只支持视频,音频录制需要下载额外的工 ...

  5. 生活随笔:Furious 7:人生的路口,你先向西,但终点只有一个

       FOR PAUL It's never goodbye see you again         "他永远都是我们的家人."Dom起身准备离开 Letty问他,你打算不告而 ...

  6. Laravel 队列功能 简单应用

    生成任务类 默认情况下,应用程序的所有可排队任务都存储在 app/Jobs 目录下.如果 app/Jobs 目录不存在,则会在运行 make:job Artisan 命令时将创建它.你可以使用 Art ...

  7. 【Idea】实用插件列表

    1.Translation : 翻译 2.CodeGlance:代码预览 3.Lombok:优雅编程插件 4.GenerateSerialVersionUID :自动生成序列化ID 5.CamelCa ...

  8. C实现十进制与十六进制转换

    include <stdio.h> include <stdlib.h> include <string.h> include <locale.h> i ...

  9. hdu4370 比较抽象的最短路

    题意:       给你一个n*n的矩阵,然后让咱们构造另一个n*n的矩阵,构造的矩阵有如下要求, 1.X12+X13+...X1n=1. 2.X1n+X2n+...Xn-1n=1. 3.for ea ...

  10. Linux中的DHCP服务

    目录 DHCP DHCP的报文类型 DHCP的部署 DHCP中继(DHCP代理) DHCP DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局 ...