- node 在中途岛模式中的作用和其同构应用中作用有什么区别。
- 没有 node.js 作为中间层只是半分离状态吗(非多页面而是纯粹的 spa 应用但不用 node)。
- 加入 node 中间层的前后端项目如何分开部署(后端用的 java),部署具体需要那些服务器(Apache,Tomcat,Nginx),各自扮演什么功能(有一个问题 node 是不是在部署中类似 Tomcat 的功能)。
- 完全不用 java 后台全部用 node.js 开发是否可以(这种 node.js 的项目需要如何部署运行)
- node.js 在中途岛模式中如何与 Java 后端进行信息交互。
Node.js 到底扮演了什么角色?
-
Node.js
139 引用 • 269 回帖 • 29 关注
Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。
-
架构
142 引用 • 442 回帖 • 1 关注
我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。
-
Q&A
8448 引用 • 38484 回帖 • 155 关注
提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。
相关帖子
-
Blackman99 • • 1
1. node 在中途岛模式中的作用和其同构应用中作用有什么区别。
- 不知道什么是中途岛模式(我的理解是 Node 作为中台)
- 同构指的是服务端跟客户端复用一套代码
- 对于 Node 作为中台,我之前接触过一个项目端到端通信使用的是 OAuth2.0 规范,而且 token 的获取以及存储肯定是不能放在客户端的,所以这个时候我使用 Node 作为管理 token 的工具
- 对于同构,我个人体会较多的就是前后分离下的为了解决 SEO 以及搜索引擎抓取的问题出现的基于 Node 的服务端渲染解决方案
- 回归问题,“区别”,都是使用 Node,本质上没有区别,只是为了解决不同的问题提出的不同方案,给每个方案一个名称
2. 没有 node.js 作为中间层只是半分离状态吗(非多页面而是纯粹的 spa 应用但不用 node)。
- 不使用 Node,只是构建 SPA 应用也是可以的,这种方式也是前后端分离,这种情况下不利于 SEO 以及浏览器抓取
- SPA 应用需等待所有 JavaScript 代码加载完毕再进行页面渲染
- 而使用 Node 作为支持,则可以直接获取页面内容,这里的内容已经包含了 SEO 所需要的内容,然后再使用 AJAX 获取一些页面上的其它数据
- 我不清楚你说的半分离状态指的是什么
3. 加入 node 中间层的前后端项目如何分开部署(后端用的 java),部署具体需要那些服务器(Apache,Tomcat,Nginx),各自扮演什么功能(有一个问题 node 是不是在部署中类似 Tomcat 的功能)。
后端如果是 Java,前端是 SPA 应用
其实这里我觉得你想怎么部署就怎么部署
Java 端只是 Restful 接口
- 一个是 Java 进程
- 一个是前端项目构建后的 SPA 静态页,SPA 应用直接请求 Java 接口获取数据(存在跨域问题)
- 这种情况可以选择
Nginx
或者Apache
作为总的路由控制(也可以不用)
Java 作为页面渲染以及 Restful 接口
- 如果你使用了前端路由体系(VueRouter、ReactRouter 等)作为页面路由控制
这个时候前端项目构建之后的内容作为 Java 项目的模板的一部分,假设你的 SPA 位置是/page/index.html
,需要代理所有/page/**/*
都为/page/index.html
,Java 的 Restful 接口需要另外一个分支路由,比如/api/**/*
,这个时候没有跨域问题,其实这里可以理解为 Java 版本的服务端渲染 - 如果你没有使用前端路由体系,而是用 Java 端控制页面路由
这个时候我觉得已经没有必要使用 SPA 了,因为配合前端路由体系才称得上 SPA - 部署可以使用 Apache 或者 Nginx 作为总的路由控制(也可以不使用)
一端是 Java,另一端是 Node
注意这里我换了说法,这里已经不是前后端了,因为 Node 完全可以作为 HTTP 服务器,连接数据库什么的,Java 能干的事,Node 都能干
这里的通信已经成为了端到端的通信,部署至少需要跑两个进程,一个 Java 进程,一个 Node 进程Node 是否类似 Tomcat 功能
Tomcat
- 官方原话:
The Apache Tomcat® software is an open source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket technologies
- 我的翻译(可能不准确):
Apache Tomcat(已注册商标)软件是一个 Java Servlet、JavaServer Pages、Java Expression Language 以及 Java WebSocket 等技术的开源实现
Node
下面这段话摘自:Node.js 菜鸟教程
简单的说 Node.js 就是运行在服务端的 JavaScript。
Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台。
Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境,基于 Google 的 V8 引擎,V8 引擎执行 Javascript 的速度非常快,性能非常好。从定义上看两者相去甚远
4. 完全不用 java 后台全部用 node.js 开发是否可以(这种 node.js 的项目需要如何部署运行)
我曾经比较过 Java 跟 Node 的性能,同等计算强度下,Java 比 Node 快,特别是大量重复计算时,Java 的速度优势非常明显
但是从语言角度,两者是一样的,任何你想要的功能用 Java 能实现,用 Node 也一定能实现- 如何部署
我还是觉得想怎么部署就怎么部署,我以我曾经部署过的一种方式举个例子:
Nginx + Node
Nginx 监听 80 端口,将/foo/**/*所有请求代到 Node 进程下
5. node.js 在中途岛模式中如何与 Java 后端进行信息交互
这里我上文中有提到,这里的通信已经是端到端的通信了,这里直接发送 Http 请求就能完成通信,当然如果项目非常大,架构什么的需要纳入考虑,加入中间件也是可以的,比如消息队列什么的
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于