前言

本篇文章有些与众不同,由于我自己手头有些关于这个主题的个人经验,受其启发写出此文。虽然SpringBoot和Node.js服务于很不一样的场景,但是这两个框架共性惊人。其实每种语言都有不计其数的框架,但仅仅一部分是真正卓越的。如果咱们想,你和我也能创造我们自己的框架,并面向公众发布。然而,它们中极少数可以依赖社区脱颖而出,需要很强的可用性才行。

本文将聚焦于使用SpringBoot和Node.js的优势,当然也覆盖了它们的基础概念。

Spring Boot

简单讲,Spring Boot是一个可以创建Web应用和服务的Java框架。它基于Spring框架,在配置和部署方面与Spring应用程序集成便捷。Spring Boot有很多开发和部署企业级应用的便捷特性,诸如:

  • Web服务器(比如Tomcat和Jetty)是嵌入在应用里面的,而不是把应用部署到一个外部Web服务器。
  • 日志和安全等通用的开发任务,拥有内置支持。
  • 在Spring Boot项目快速开发中,有批处理脚本的支持。

简单来说,Spring Boot是一个为了创建基于Spring应用程序的框架,这些程序在生产环境中无需额外的配置即可使用,并且独立运行。

实现

为了解释使用Spring Boot来实现一个RESTful web服务,请看下面的例子

@RestController
@RequestMapps("/hello")
public class HelloController {
@GetMapping
public String sayHello() {
return "Hello, Spring Boot!";
}
}

用@RestController和@RequestMapping("/hello")注解的类表名这是一个controller。Web服务的终端可以用@RestController注解来定义,HTTP请求会被映射到controller类里的单独方法,使用@RequestMapping注解即可。

用@GetMapping来注解sayHello,可以让它对应到"/hello"终端的GET请求。在这个例子中,客户端得到的响应是方法返回值,即"Hello,SpringBoot"字符串。

这个应用程序需要在主类中添加@SpringBootApplication注解,并且classpath里面需要有Spring Boot starter web的依赖。

@SpringBootApplication
public class SpringBootExampleApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootExampleApplication.class, args);
}
}

在我们的应用程序中运行,并在在内嵌的web服务器(比如Tomcat)运行。到http://localhost:8080/hello的GET请求会抵达web服务并返回Hello, Spring Boot!

Node.js

Node.js允许在web浏览器外执行JavaScript代码,并且是一个在很多计算平台可以使用的开源软件。他为开发者在服务器通过使用JavaScript创建可伸缩和高性能网络应用铺平了道路。由于Node.js的轻量、高效的事件驱动、非阻塞I/O模型,Node.js是在大量不同类型的分布式设备运行数据密集型实时应用的理想选择。

为了高效率运行JavaScript代码,Node.js是基于Google的V8 JavaScript引擎的。Node.js运行时库是平台不可分割的一部分,为大量不同类型的服务端和网络应用提供了构建模块。

如果你用Node.js构建Web应用,你可以用JavaScript来开发用户界面和底层代码。另外,Node.js身后拥有庞大和充满活力的社区,它已经创造了一个一个开源软件和模块的丰富生态系统,这些都可以和应用很方便地集成。

Web服务器、实时聊天程序和其他各种类型的网络应用,只是Node.js的一部分常见应用。RESTful API、实时网络应用和命令行工具只是常见应用的一些例子。

总而言之,Node.js是一个高效的、快速的、社区支持的JavaScript运行时,使得开发者可以在服务器环境中部署JavaScript。

实现

一个基础的Node.js web 服务器如下所示

const http = require('http');

const server = http.createServer((req,res) => {
res.statusCode=200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, Node.js!\n');
}); server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});

这个代码使用内置的Node.js http模块来创建一个HTTP服务器。这个服务器使用createServer方法初始化创建,接着无论何时服务器收到请求,都调用一个传递给它的回调函数。

在回调方法中,我们告诉客户端响应是"text/plain"类型,文本为"Hello, Node.js!",状态码是200。

当这一切都准备好了,我们使用监听方法发布到服务器,并且告诉它开始在端口3000上监听。为了让管理员知道服务器已经启动并且运行,无论什么时候服务器只要起来了,终端就会打印出一个信息。

启动web浏览器,访问http://localhost:3000来测试服务器。浏览器窗口将会显示"Hello, Node.js!"。

尽管这是一个非常基础的例子,但它展示了Node.js服务器程序是如何构成的。有很多Node.js的模块构成开发特定应用的基础设施。他们是的你能够构建复杂程序。

最后的思考

无论你为搭建应用选择Spring Boot还是Node.js,这两个都是各自语言中非常强大的框架。他们很流行、构建应用也简单。两个都支持微服务架构,两个都可以用自己的方式构建微服务,并且把他们集成到应用里面。不管你如何使用它们,它们始终能给你一种更好的编程方式。在当前世界中,我坚信没有比Spring Boot更加敏捷和流行的框架,也没有比Node.js在服务端实现更加高效的软件。

扩展链接:

Redis从入门到实践

一节课带你搞懂数据库事务!

Chrome开发者工具使用教程

从表单驱动到模型驱动,解读低代码开发平台的发展趋势

低代码开发平台是什么?

基于分支的版本管理,帮助低代码从项目交付走向定制化产品开发

哪一个更好?Spring boot还是Node.js的更多相关文章

  1. Node.js 在 PayPal实战

    之前有过一个谈了很多关于PayPal移动到node.js的一个应用平台.作为设置我的免费用户界面的第1部分的延续,我很高兴地说,这些传言是真的,我们的Web应用程序正在从Java迁移到JavaScri ...

  2. Springboot 系列(五)Spring Boot web 开发之静态资源和模版引擎

    前言 Spring Boot 天生的适合 web 应用开发,它可以快速的嵌入 Tomcat, Jetty 或 Netty 用于包含一个 HTTP 服务器.且开发十分简单,只需要引入 web 开发所需的 ...

  3. [浅学] 1、Node.js尝试_安装&运行第一个helloworld

    官网:https://nodejs.org/ 介绍:Node.js® is a platform built on Chrome's JavaScript runtime for easily bui ...

  4. node js学习(一)

    1.简介 JavaScript是一种运行在浏览器的脚本,它简单,轻巧,易于编辑,这种脚本通常用于浏览器的前端编程,但是一位开发者Ryan有一天发现这种前端式的脚本语言可以运行在服务器上的时候,一场席卷 ...

  5. [转]ReactPHP── PHP版的Node.js

    FROM : http://www.csdn.net/article/2015-10-12/2825887 摘要:ReactPHP作为Node.js的PHP版本.在实现思路,使用方法,应用场景上的确有 ...

  6. 为什么要使用 Node.js

    这是一个移动端工程师涉足前端和后端开发的学习笔记,如有错误或理解不到位的地方,万望指正. Node.js 是什么 传统意义上的 JavaScript 运行在浏览器上,这是因为浏览器内核实际上分为两个部 ...

  7. Node.js的颠覆者:PHP的Swoole扩展

          最近2年Node.js很火,异步与协程是网络开发方面热门的话题.在追求新技术的同时,也应该反思下这里面存在的陷阱.Node.js确实是一门有趣好玩有个性的语言和技术,动态性,全异步回调的方 ...

  8. node.js 使用 UglifyJS2 高效率压缩 javascript 文件

    UglifyJS2 这个工具使用很长时间了,但之前都是在 gulp 自动构建 时用到了 UglifyJS 算法进行压缩. 最近玩了一下 UglifyJS2 ,做了一个 在线压缩javascript工具 ...

  9. node.js 在 Express4.0 框架使用 Connect-Busboy 实现文件上传

    node.js下四种post提交数据的方式 今天说分享的是其中一种,就是上传文件. Express 4.0 以后,将功能原子化,高内聚,低耦合,独立出了很多中间件 今天主要分享文件上传 对于conne ...

  10. node.js学习系列(一)

     node.js 百度百科简介 Node.js 是一个 Javascript 运行环境(runtime).实际上它是对 Google V8 引擎进行了封装.V8 引 擎执行 Javascript 的速 ...

随机推荐

  1. 列式分布式数据库ClickHouse部署

    简介 Clickhouse是俄罗斯yandex公司2016年开源的用于OLAP的列式数据库. 使用C++语言编写,支持SQL实时查询. OLTP,更强调数据的完整性,行式存储: OLAP,更强调数据处 ...

  2. 层叠样式表(CSS)2(环境:MyEclipse 10)

    二.选择器 注:在head里面写选择器的内容.环境一直不变,所有HTML和css都是这个MyEclipse 10 1.基本选择器(每个选择器新建一个HTML网页测试学习) 元素选择器:按节点名称匹配元 ...

  3. 记一次 HTTPS 抓包分析和 SNI 的思考

    日常听说 HTTPS 是加密协议,那现实中的 HTTPS 流量,是真的完全加密吗? --答案是,不一定.原因嘛,抓个包就知道了. 我们用 curl 命令触发一下: curl -v 'https://s ...

  4. debian11编译安装freeswitch

    前言 环境: 系统版本:debian 11 x86_64 FreeSWITCH版本:1.10.6 安装步骤 安装依赖(安装之前最好换apt软件源为国内的) apt install -y gnupg2 ...

  5. TRL 正式推出,来训练你的首个 RLHF 模型吧!

    我们正式向大家介绍 TRL--Transformer Reinforcement Learning.这是一个超全面的全栈库,包含了一整套工具用于使用强化学习 (Reinforcement Learni ...

  6. Android 项目移植后运行黑屏

    在做Android项目的移植过程中,即把名为a的代码和样式全部复制到b项目后,只是对a项目内多余代码删除和修改包名,最后替换完后,点击=>运行,运行成功,但是演示机显示黑屏,看log也没有报错. ...

  7. 状压DP-学习笔记

    状压DP 状压 \(DP\) 是一种基于二进制数的 \(DP\). T1 题目大意 将一个整数 \(N\) 分解成若干个小整数的乘积,满足: 分解出的整数必须来自集合 \(S\). 分解出的整数必须互 ...

  8. Linux 过滤进程和端口号

    IDEA覆盖率测速显示百分比 ctrl + alt + F6 取消勾选 ps - ef | grep java过滤Java进程 netstat -anop | grep 74933 过滤端口号 重命名 ...

  9. k8s发布应用

    前言 首先以SpringBoot应用为例介绍一下k8s的发布步骤. 1.从代码仓库下载代码,比如GitLab: 2.接着是进行打包,比如使用Maven: 3.编写Dockerfile文件,把步骤2产生 ...

  10. 零代码基础,一分钟教你快速搭建微信ChatGPT机器人!

    本教程收集于:ChatGPT聊天机器人搭建全攻略汇总:精心整理 Github登录账号后,先Forck下仓库:https://github.com/zhayujie/chatgpt-on-wechat ...