关于 JSX 和 JSP,说点我愚昧的见解

2023-06-13 15:54:28 +08:00
 kachu673

JSP 作为装配工,其作用就是拼接并输出前端代码

昨天看了 React 的 JSX 语法,感觉和 JSP 的装配工角色很像

JSP 及相关技术被淘汰,是前后端分离所带来的结果,不能说 JSP 相关的装配技术不好,而是协作模式变了。 纯抖机灵,只是觉得 JSP 和 JSX 输出前端代码的方式太像了。

5171 次点击
所在节点    React
35 条回复
twofox
2023-06-13 16:46:25 +08:00
react 在输出前端代码的同时,引入了一套很好用的管理方式,组件库丰富,操作 DOM 方便
jsp 要是实现一大堆花里胡哨的点击效果,还不是得引入其它的 js 的包。

jsp 就是垃圾玩意(接手了一个 jsp 项目的 javaer 的怨念
sentinelK
2023-06-13 16:53:20 +08:00
他们只是对 HTML 富文本的处理方式相似而已,剩下的完全都不同。

1 、对于 HTML 的处理位置不同。
2 、对于变量与逻辑的依赖流程不同。
3 、支持硬件的范围也不同。

btw:横向比较要同位比较,不能只比较形似。jsp 主要解决的是什么问题? React 又在解决什么问题?
你家里的电水壶与核能发电厂,其实本质上都是烧热水。所以用电烧水来发电也可行,只是燃料变了。
iminto
2023-06-13 17:04:03 +08:00
@twofox 其实 JSP 也可以爽歪歪。

Taglib,JSTL,El ,JavaBean 这几个东西用好很舒服,Taglib 就是 JSP 里的组件库,JavaBean 算是 Model ?
tool2d
2023-06-13 17:08:07 +08:00
作为传统码农,更喜欢 JSP ,一行就是一句代码,便于修改。

JSX 没有配上合适的编译器,都不太好上手。现代前端开发效率是靠,但是隐藏细节,也比以前多很多。

代码好不好。只看人,不看技术。
wangxiaoaer
2023-06-13 17:12:12 +08:00
在渲染这个层面 jsx 和 jsp 没有本质区别。只是 jsx 在渲染的同时附带了状态变化重绘和前端交互等能力。
xhinliang
2023-06-13 17:21:00 +08:00
说得很好,下次别说了
leegradyllljjjj
2023-06-13 17:29:09 +08:00
啥时代了
Jirajine
2023-06-13 17:32:16 +08:00
你忽视了最关键的,React 为什么叫 React ,reactivity 才是它最重要的核心和特色。
DOLLOR
2023-06-13 17:45:37 +08:00
HTML:明明是它们像我呀😭
chendy
2023-06-13 17:48:23 +08:00
一来 jsp 没淘汰(存量的 jsp 项目其实很多很多),二来 jsp 淘汰也不是前后端分离带来的,就算不前后端分离 jsp 也没有模板引擎好用(想在 jsp 里写 java 代码另说)
不能因为像就把俩东西这么比较吧,那岂不是可以写一段 c 的 if-else ,再写一段 java 的 if-else ,两边几乎一样,是不是也可以比较了?
cp19890714
2023-06-13 21:41:01 +08:00
使用数据对模板进行渲染, 所有的模板框架都是这个样子。
你的认识太表层了。
learningman
2023-06-13 21:44:13 +08:00
感觉都是跑在 CPU 上的机器码,实在是没有什么区别啊
totoro52
2023-06-13 21:46:03 +08:00
@tool2d 那要是多了,才叫痛苦,维护系数直线上涨。
duan602728596
2023-06-13 23:13:47 +08:00
1. React 不是 template ! React 不是 template ! React 不是 template !
<div>Hello</div>编译后是 React.createElement('div', null, 'Hello')。是 js !是 js !是 js !所以才能添加各种 event 事件,才能各种无缝使用 js 语法。写 jsx 其实就是写 js 代码,只不过是 React 自动创建帮你 dom ,不用你手动 document.createElement 和 element.appendChild 。template 输出的是字符串,所以各个语言的 template 都不好写交互。
2. JSX 不只是输出 html ,输出什么取决于最后怎么渲染,比如 react-dom 或者 react-dom-server 或者 react-native 或者小程序。一套代码用不同的东西最后渲染出来的是不一样的。
3. JSX 不是只给 react or vue 用的。
4. 所有的编译器对 jsx 的编译是差不多的。
tool2d
2023-06-13 23:20:00 +08:00
@totoro52 "那要是多了,才叫痛苦,维护系数直线上涨。"

也还好了,out.write 只是最初级的。可以加各种模板引擎,加上后就没那么难维护的。

最难维护的,是一大堆复制粘贴代码。仅仅是代码量上去了,还是有办法降低耦合程度的。
zhangk23
2023-06-13 23:22:23 +08:00
jsp 这种中古技术早就死了
lisongeee
2023-06-13 23:34:45 +08:00
@duan602728596

> 所有的编译器对 jsx 的编译是差不多的。

不一样的,主要分为两大类 一种是 react 这种编译为 vnode 形式,然后和对应的平台库使用

另一类是 solidjs 这种直接在编译期静态分析 jsx 编译为原生 dom 操作,不同的平台的编译选项不一样
ixixi
2023-06-13 23:58:04 +08:00
这能比吗 ? 完全不是一码事
dcsuibian
2023-06-14 00:09:37 +08:00
完全不是一回事
jsp 只是在拼接字符串,并没有解析,只不过是你拼成了一个 html ,最终被浏览器解析。而 jsx 是 xml ,在开发过程中就是有解析的
kachu673
2023-06-14 01:26:57 +08:00
讨论的真精彩😁

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/948372

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX