首页 > 编程知识 正文

react native官网,react怎么编译成HTML的

时间:2023-05-06 20:58:47 阅读:55536 作者:1023

如果您打算用RN编写某个站点的第三方APP,但该站点不提供可以返回JSON的接口,则必须自己捕获和解析页面。

首先,需要明确的是,RN既不是浏览器,也不是节点。 也就是说,有些js库不能直接拿来使用。

HTTP请求

RN提供了frisbee和axios等Fetch API和XMLHttpRequest API,也可以使用基于这两个库的辅助软件包库,因此在RN下提出HTTP请求并不是问题。

HTML分析

目前最容易使用的js html parser应该属于cheerio,是否可以在RN上使用? 试试吧。

首先,安装cherrio。 请注意,需要v0.22.0。 稍后说明)。

使用方法:

很遗憾,发生了错误:

这是因为cheerio的htmlparser2依赖于节点中内置的库。 但是,这个可以解决。 理论上,只要这些依赖关系库不依赖于更基础的接口,就可以通过npm安装这些依赖关系。

再刷新一次,我发现cheerio已经可以正常使用了!

其实这个问题在cheerio的issues上讨论过。 https://github.com/cheerio js/cheerio/issues/1058。 有些人为了解决这个问题得到了另一个库cheerio-without-node-native,这个分裂的版本质量很难保证,所以不仅没有必要,而且非常差。 作者的见解如下

youcaninstallthemissingpackagesfromnpm (事件,流和实用工具Afa ICT ) andtheywillbeautomaticallypickedup。

iwouldnotrecommendtheusageofaforkasitwillmakeitdifficulttotrackdownissuesandwilldelay,if not prevent,patches for bugs。

至于为什么只能使用cheerio@0.22.0,在随后的版本中,cheerio引入了parse5,但parse5依赖于stream.Writable,它是用npm安装的streario

测试

测试尤为重要,因为网页随时可能发生变化。 在此,为了进行简单的黑盒测试,以获取简单用户数据的代码为例。

必须安装node-fetch才能在node环境中使用fetch。 RN默认情况下安装了jest,使用它进行测试吧:

运行测试:

获取网页数据的另一种黑色技术

除了分析传统的HTML请求外,在某些情况下还可以使用类似PhantomJS的计划。 优点是可以很好地避免一些限制,降低分析的难度。 RN当然不能使用PhantomJS,但是有WebView。 可以用injectedJavaScript注入js,然后在postMessage中返回数据。 例如,用于获取页面内视频链接的代码:

PS .谨慎使用该方法,首先是WebView的消耗资源太大,其次是测试困难,缺乏稳定性。

本文转载自异步社区

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。