关于 JSX 和 JSP,说点我愚昧的见解 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kachu673
V2EX    React

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

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

    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 才是它最重要的核心和特色。
    AV1
        9
    AV1  
       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 上的机器码,实在是没有什么区别啊
    MIUIOS
        13
    MIUIOS  
       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
    你也说了,“很像”,人和黑猩猩也很像,但很像就只能是很像……
    wakarimasen
        25
    wakarimasen  
       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     Solana     2316 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 01:02 PVG 09:02 LAX 18:02 JFK 21:02
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86