V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kachu673
V2EX  ›  React

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

  •  
  •   kachu673 · 2023-06-13 15:54:28 +08:00 · 5171 次点击
    这是一个创建于 558 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    pCmMX4K.jpg

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

    pCmMON6.png

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

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

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

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

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

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

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

    代码好不好。只看人,不看技术。
    wangxiaoaer
        5
    wangxiaoaer  
       2023-06-13 17:12:12 +08:00 via iPhone
    在渲染这个层面 jsx 和 jsp 没有本质区别。只是 jsx 在渲染的同时附带了状态变化重绘和前端交互等能力。
    xhinliang
        6
    xhinliang  
       2023-06-13 17:21:00 +08:00   ❤️ 8
    说得很好,下次别说了
    leegradyllljjjj
        7
    leegradyllljjjj  
       2023-06-13 17:29:09 +08:00 via Android
    啥时代了
    Jirajine
        8
    Jirajine  
       2023-06-13 17:32:16 +08:00
    你忽视了最关键的,React 为什么叫 React ,reactivity 才是它最重要的核心和特色。
    DOLLOR
        9
    DOLLOR  
       2023-06-13 17:45:37 +08:00
    HTML:明明是它们像我呀😭
    chendy
        10
    chendy  
       2023-06-13 17:48:23 +08:00   ❤️ 1
    一来 jsp 没淘汰(存量的 jsp 项目其实很多很多),二来 jsp 淘汰也不是前后端分离带来的,就算不前后端分离 jsp 也没有模板引擎好用(想在 jsp 里写 java 代码另说)
    不能因为像就把俩东西这么比较吧,那岂不是可以写一段 c 的 if-else ,再写一段 java 的 if-else ,两边几乎一样,是不是也可以比较了?
    cp19890714
        11
    cp19890714  
       2023-06-13 21:41:01 +08:00
    使用数据对模板进行渲染, 所有的模板框架都是这个样子。
    你的认识太表层了。
    learningman
        12
    learningman  
       2023-06-13 21:44:13 +08:00
    感觉都是跑在 CPU 上的机器码,实在是没有什么区别啊
    totoro52
        13
    totoro52  
       2023-06-13 21:46:03 +08:00
    @tool2d 那要是多了,才叫痛苦,维护系数直线上涨。
    duan602728596
        14
    duan602728596  
       2023-06-13 23:13:47 +08:00   ❤️ 1
    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
        15
    tool2d  
       2023-06-13 23:20:00 +08:00
    @totoro52 "那要是多了,才叫痛苦,维护系数直线上涨。"

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

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

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

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

    另一类是 solidjs 这种直接在编译期静态分析 jsx 编译为原生 dom 操作,不同的平台的编译选项不一样
    ixixi
        18
    ixixi  
       2023-06-13 23:58:04 +08:00   ❤️ 1
    这能比吗 ? 完全不是一码事
    dcsuibian
        19
    dcsuibian  
       2023-06-14 00:09:37 +08:00
    完全不是一回事
    jsp 只是在拼接字符串,并没有解析,只不过是你拼成了一个 html ,最终被浏览器解析。而 jsx 是 xml ,在开发过程中就是有解析的
    kachu673
        20
    kachu673  
    OP
       2023-06-14 01:26:57 +08:00 via Android
    讨论的真精彩😁
    YuJianrong
        21
    YuJianrong  
       2023-06-14 03:45:59 +08:00 via iPhone
    jsp 对比 jsx ,就和 java 对比 javascript 一样。
    粗一看有点像,基本语法都差不多。
    深挖进去一点都不同。

    说渲染层面一样的,那所有程序说到底都是一个图灵自动机呢,有意义吗?

    最后,就光一个 security 问题,已经可以说 jsp 装配技术不好了,这还有啥好想的。
    HaroldFinchNYC
        22
    HaroldFinchNYC  
       2023-06-14 07:53:10 +08:00
    为什么前端在 react 和 vue 发明之前不是一个正经的职位?

    你想想
    shaozelin030405
        23
    shaozelin030405  
       2023-06-14 09:09:33 +08:00
    更像 php 哈哈啊哈
    onceyoung
        24
    onceyoung  
       2023-06-14 09:16:24 +08:00
    你也说了,“很像”,人和黑猩猩也很像,但很像就只能是很像……
    angrylid
        25
    angrylid  
       2023-06-14 09:16:28 +08:00 via Android   ❤️ 3
    如果你看着像就是同一回事的话。那么鸭脖和鼠头看上去也挺像的。
    huijiewei
        26
    huijiewei  
       2023-06-14 09:17:31 +08:00
    都是高低电位,有什么区别呢
    cheng6563
        27
    cheng6563  
       2023-06-14 09:17:43 +08:00
    jsp 也没人这样写
    acerphoenix
        28
    acerphoenix  
       2023-06-14 09:46:38 +08:00
    现在还有人知道 jsp ,得多大了。
    另外,你这不是 jsp ,是没有 jsp 时候的 servlet 。jsp 出来是伴随 JSTL,El 表达式的,还有现在的一些模板引擎,比如 velocity ,Thymeleaf 也算。
    githmb
        29
    githmb  
       2023-06-14 09:47:27 +08:00
    JSP ?依托答辩
    Nicified
        30
    Nicified  
       2023-06-14 12:02:43 +08:00
    @Jirajine 你写过 React 么? React "最重要的核心和特色" 是 Immutability
    arewei
        31
    arewei  
       2023-06-14 14:11:26 +08:00
    这个是啥 jsp...
    shyangs
        32
    shyangs  
       2023-06-14 14:20:09 +08:00
    知道你不會 JSP 也不會 JSX 了。

    你的第一張圖只能算 Servlet 。

    JSP 就算不寫 JSTL ,EL 表達式,也要來幾個 Scriptlet Element 吧。
    kachu673
        33
    kachu673  
    OP
       2023-06-14 14:21:10 +08:00
    @acerphoenix JSP 被编译成 java 源文件时,里面的源码就是这种 out 输出。
    shyangs
        34
    shyangs  
       2023-06-14 14:26:16 +08:00
    @kachu673

    拿編譯過的來說事,那你 JSX 是 ` React.createElement('div', null, 'Hello')` 這樣寫的嗎?

    你第二張圖怎麼不貼編譯過後的,而是大家理解中的、編譯前的 JSX 呢?
    coolzjy
        35
    coolzjy  
       2023-06-14 14:48:22 +08:00
    确实是愚昧的见解。建议 jsp 河 jsx 都重学吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   976 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 76ms · UTC 23:02 · PVG 07:02 · LAX 15:02 · JFK 18:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.