V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Jiajin
V2EX  ›  问与答

React 或者 Vue 里的 UI 框架里的组件,怎么剥离成 jQuery 版?或者说脱离 react 使用。

  •  
  •   Jiajin · 2021-05-04 17:51:14 +08:00 · 1474 次点击
    这是一个创建于 1318 天前的主题,其中的信息可能已经有所发展或是发生改变。

    v 友们好,是这样,有几个 ant design 组件,要用到老项目里,懒得重新造轮子了,想直接复用 react 里的组件,怎么剥离出来形成一个 jQuery 组件?有类似经历的大佬提供下思路减少咱们底层码农搬砖时间吗?先谢过了。

    9 条回复    2021-05-04 21:19:03 +08:00
    learningman
        1
    learningman  
       2021-05-04 17:54:52 +08:00 via Android
    你都开始想这种思路了,我告诉你应该怎么办。
    弄个 div,这个 div 上挂一个 instance,这个 instance 的全部内容就是你要的那个组件
    Jiajin
        2
    Jiajin  
    OP
       2021-05-04 18:01:33 +08:00
    @learningman 开发的时候一定要引入 react js 吗?我意思其实是有没有类似的工具或者库,可以把 react component 转换成 jQuery 的插件,就包含一个 js 文件和一个 css 文件。老项目它都是一个一个页面,来引入的一个一个资源文件的,汗
    learningman
        3
    learningman  
       2021-05-04 18:48:34 +08:00
    @Jiajin jquery 操作的是真实 dom,react vue 操作的是虚拟 dom,你觉得这玩意儿要做出来多麻烦,用户有多少。。。
    noe132
        4
    noe132  
       2021-05-04 18:57:58 +08:00
    你这个问题相当于,我有一个发动机是烧油的,能不能用什么工具转换一下,变成用电的?

    react 和 jquey 的区别相当于你是烧油还是烧电。重新设计一个发动机用电当然可以,但是你想把原来的发东西转换一下那当然不可能,2 个东西原理都不同。
    iseki
        5
    iseki  
       2021-05-04 19:05:08 +08:00
    你要就是想糊,不在乎性能和安全性,那也没事,你看 react 和 Vue,都有给 hello world 用的单文件 js 依赖,就是性能会有问题,而且默认应该都是开发模式,代码没有混淆和压缩
    Mutoo
        6
    Mutoo  
       2021-05-04 19:14:36 +08:00
    没法剥离,但是要复用、混用是可以的。基本上就是把 React 的组件编译成 umd 模块导出到 window 。然后在 jQuery 的生命周期调用 ReactDOM 直接 render() 到 container 上。需要更新 props 的时候用 ReactDOM.hydrate() 覆盖原 DOM 即可。React 17 把事件代理从 body 移到 container 上了,问题不大。
    Jiajin
        7
    Jiajin  
    OP
       2021-05-04 21:05:53 +08:00
    @iseki 哈哈,虽然我想糊弄一下,但是太显眼也不行
    Jiajin
        8
    Jiajin  
    OP
       2021-05-04 21:07:19 +08:00
    @Mutoo 看来只能用 jQuery 重新实现下了,老项目,难顶
    Jiajin
        9
    Jiajin  
    OP
       2021-05-04 21:19:03 +08:00
    @learningman 开一开前端的倒车,哈哈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2212 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 16:00 · PVG 00:00 · LAX 08:00 · JFK 11:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.