在 React Native 项目中使用 npm 模块

Posted

技术标签:

【中文标题】在 React Native 项目中使用 npm 模块【英文标题】:Using npm modules in React Native projects 【发布时间】:2015-11-24 09:56:03 【问题描述】:

是否可以直接,就像 npm install <module-name> 在 React 项目中使用它们一样?

当然,我指的是可以与 React 应用程序一起使用的模块,即前端模块,它们将在浏览器 JS 运行时中运行,但不会在 nodejs 或 iojs 运行时中运行,因为 React Native 应用程序不会在nodejs 或 iojs 运行时。

【问题讨论】:

现在是 2017 年,有什么更新吗? 【参考方案1】:

嗯,恰恰相反。 React Native 实际上是在 io.js 运行时中运行的,因此大多数用于 node 的纯 javascript 模块都可以工作。另一方面,大多数为 React.js 编写的前端模块不适用于 React-Native。

React Native 不使用我们从网络上知道的 html DOM 或 CSS。它用原生视图表示替换了 CSS/HTML DOM。因此,任何应该使用 HTML 并在浏览器中显示的前端包都将不起作用。

另一方面,任何纯 JavaScript 并在 node.js/io.js 中运行的模块都可以在 react-native 中运行。

例如,我很确定 Facebook 在其 react-native 应用程序中使用了他们的“中继”数据访问库(它是一个通过 Facebook 的 Open Graph API 有效通信并允许访问 Facebook 用户数据的 javascript 库)。

实现方式与其他 node.js/io.js 应用程序相同。只需运行

npm install 模块 --save

你就完成了(package.json 将自动更新模块的依赖项)。然后你就可以像往常一样使用这个包了。

【讨论】:

前端库是指 js,没有 HTML,css 像 superagent、socket.io 等。不包括 http 服务器和像 Koa、express 这样的包装器,因为它们在 iojs 运行时运行。但是,如果移动设备上的 react 本机应用程序在 iojs 运行时、js 部件中运行,我认为不是,后端的也可以。但这听起来很奇怪:) 好的。我明白了,对我来说前端总是 HTML :)。我知道 node 主要用于运行网络服务器,但实际上 node(和 io.js)远不止于此。它是任何类型的事件驱动应用程序的运行时 - 在此处查看更多信息:javaworld.com/article/2079190/scripting-jvm-languages/…。它不一定是 web 服务器,据我所知,react native 是它使用 io.js 作为运行时环境——当然它使用 iojs 的 require、modules、npm 打包器和来自 iojs 的许多其他组件(这就是我所理解的)按运行时)。 React native 使用 JavaScriptCore 运行时而不是 iojs。所以使用流、fs 等内置 node_modules 的 node_modules 将无法工作 @saby 也许在 Jarek 发表评论期间它已经从 iojs 更改为 JavaScriptCore,对吧? React Native 可以使用 js Tesseract OCR 包吗?

以上是关于在 React Native 项目中使用 npm 模块的主要内容,如果未能解决你的问题,请参考以下文章