NervJS / nerv

A blazing fast React alternative, compatible with IE8 and React 16.
https://nerv.aotu.io
MIT License
5.43k stars 267 forks source link

兼容 React 生态系统? #134

Closed guxingke201 closed 5 years ago

guxingke201 commented 5 years ago

Nerv 提供了比 React 更好的浏览器兼容性和更高的性能,与此同时也不会放弃 React 庞大的生态系统。兼容 React 生态系统是我们开发 Nerv 的重要目标之一。 试过几个脚手架,只是改了别名,都不能用。构建正常,运行报异常。做这个实验的目的是想用taro-ui,可惜的是,连nervjs这关都过不来

image

yuche commented 5 years ago

你出现这个错误说明配置有误,创建 taro-ui 组件的 nerv 引用和你主应用的 nerv 不是同一个 nerv。如果 nerv 连 taro ui 都跑不了,那你在 taro ui 的官网就不能预览组件,taro-ui 的测试用例也跑不了。

guxingke201 commented 5 years ago

还没有用taro-ui,只是用了别名替换,把react和react-dom替换成nervjs

yuche commented 5 years ago

请问你用的哪个脚手架,是怎么设置的 alias?

guxingke201 commented 5 years ago

公司内部的脚手架,有三个,分别报不同的异常。我试试用react-create-app整理一个可以重现demo给你

guxingke201 commented 5 years ago

先来一个简单的,切换到react-route-5分支,nervjs和react-route5一起用有点问题

https://github.com/guxingke201/react-to-nervjs/tree/react-route-5

yuche commented 5 years ago

Route 要用 Switch 包起来。 如果你用 react-router@4 的话就没这个限制,react-router@5 Route 的机制有一些变化,需要框架可以处理数组类型的组件,但是 Nerv 还不支持 fragment,所以跑不了。

guxingke201 commented 5 years ago

切换到gmc分支,react没问题,nervjs报异常 https://github.com/guxingke201/react-to-nervjs/tree/gmc

guxingke201 commented 5 years ago

公司内部三代脚手架,一代和二代先不整理了,有需要可以再整理出来

yuche commented 5 years ago

Routes 的组件很难判断里面干了什么,如果能有源码的话比较方便 debug。

guxingke201 commented 5 years ago

https://github.com/gem-mine/durex-router

guxingke201 commented 5 years ago

@yuche 对比了react和nervjs,发现nervjs是从state.value里拿数据,react不是,这个能改吗? image

yuche commented 5 years ago

state

这样在什么样的情况下会造成无法工作?

guxingke201 commented 5 years ago

感觉和这里的代码有关系,我问问开发这个组件的同事

image

guxingke201 commented 5 years ago

问过了,同事那边的定位说和数据流没有关系,初步定位和react-router有关系

guxingke201 commented 5 years ago

同事那边没找到原因,但是把react-router升级到5就解决了

guxingke201 commented 5 years ago

没有解决,出现其他异常:

image

guxingke201 commented 5 years ago

@yuche 请看这个分支,nerv使用connected-react-router@6x和react-loadable报异常,单独使用connected-react-router@6x不会报异常 https://github.com/guxingke201/react-to-nervjs/tree/connected-react-router-6x

guxingke201 commented 5 years ago

换了一个思路,用react替换掉taro-ui里nerv,并处理了taro-ui里style样式不兼容react语法的问题,再从@tarojs/webpack-runner挖些配置出来,最终实现taro-ui可以成功运行在react脚手架里

chwan97 commented 4 years ago

把react-router升级到5,ie8下能正常工作吗