NervJS / nerv

A blazing fast React alternative, compatible with IE8 and React 16.

Home Page:https://nerv.aotu.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

兼容 React 生态系统?

guxingke201 opened this issue · comments

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

image

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

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

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

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

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

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

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

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

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

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

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

state

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

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

image

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

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

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

image

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

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

commented

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