在 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 模块的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 npm 的情况下手动从 github 下载和导入 node 模块,并将其安装在 React Native 项目中?

如何使用为 react-native 创建的 npm 库而不发布到 npm

react native :发布npm库

Npm audit 在创建新的 react native 项目时显示 9 个漏洞

react-native:从纱线切换到 npm

`npm install --save --save-exact react-native` failed