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

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

  •  
  •   kachu673 · 319 天前 · 4721 次点击
    这是一个创建于 319 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    pCmMX4K.jpg

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

    pCmMON6.png

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

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

    jsp 就是垃圾玩意(接手了一个 jsp 项目的 javaer 的怨念
    sentinelK
        2
    sentinelK  
       319 天前   ❤️ 1
    他们只是对 HTML 富文本的处理方式相似而已,剩下的完全都不同。

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

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

    Taglib,JSTL,El ,JavaBean 这几个东西用好很舒服,Taglib 就是 JSP 里的组件库,JavaBean 算是 Model ?
    tool2d
        4
    tool2d  
       319 天前
    作为传统码农,更喜欢 JSP ,一行就是一句代码,便于修改。

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

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

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

    最难维护的,是一大堆复制粘贴代码。仅仅是代码量上去了,还是有办法降低耦合程度的。
    zhangk23
        16
    zhangk23  
       319 天前
    jsp 这种中古技术早就死了
    lisongeee
        17
    lisongeee  
       319 天前
    @duan602728596

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

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

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

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

    最后,就光一个 security 问题,已经可以说 jsp 装配技术不好了,这还有啥好想的。
    HaroldFinchNYC
        22
    HaroldFinchNYC  
       318 天前
    为什么前端在 react 和 vue 发明之前不是一个正经的职位?

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

    你的第一張圖只能算 Servlet 。

    JSP 就算不寫 JSTL ,EL 表達式,也要來幾個 Scriptlet Element 吧。
    kachu673
        33
    kachu673  
    OP
       318 天前
    @acerphoenix JSP 被编译成 java 源文件时,里面的源码就是这种 out 输出。
    shyangs
        34
    shyangs  
       318 天前
    @kachu673

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

    你第二張圖怎麼不貼編譯過後的,而是大家理解中的、編譯前的 JSX 呢?
    coolzjy
        35
    coolzjy  
       318 天前
    确实是愚昧的见解。建议 jsp 河 jsx 都重学吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1470 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 17:06 · PVG 01:06 · LAX 10:06 · JFK 13:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.