Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以使用Java中基于Node.JS的模块?_Javascript_Java_Android_Node.js_React Native - Fatal编程技术网

Javascript 是否可以使用Java中基于Node.JS的模块?

Javascript 是否可以使用Java中基于Node.JS的模块?,javascript,java,android,node.js,react-native,Javascript,Java,Android,Node.js,React Native,我正在为Android开发React本机模块。它是用Java编写的(正如我从官方文档和互联网上研究的)。问题是,我需要使用基于Node.JS的模块来实现我想要的功能。是否有可能在Java中使用Node.JS模块 Node.JS模块目前使用一些节点本机库,如fs和path。代码100%使用Node.JS编写 或者有没有其他方法可以不使用Java创建React本机模块 最终目标是使用这个基于Node.JS的模块来React Native应用程序(而不在Node和React Native之间创建桥梁)

我正在为Android开发React本机模块。它是用Java编写的(正如我从官方文档和互联网上研究的)。问题是,我需要使用基于Node.JS的模块来实现我想要的功能。是否有可能在Java中使用Node.JS模块

Node.JS模块目前使用一些节点本机库,如
fs
path
。代码100%使用Node.JS编写

或者有没有其他方法可以不使用Java创建React本机模块


最终目标是使用这个基于Node.JS的模块来React Native应用程序(而不在Node和React Native之间创建桥梁)

我理解您的问题,您的模块不必与本机端通信。如果这就是你所需要的,那么它将很容易实现。我将举一个简单的例子:

yourModule.js

export function a() {
    // do sth
}

export function b() {
    // do sth
}

export function c() {
    // do sth
}
yourComponent.js

有两种方法可以使用您的模块:

一,

二,


p/s:如果不正确使用导出/导入,可能会出现一些错误。因此,请调查更多关于React Native export/import的信息。

嘿,很抱歉回复太晚,让我澄清一下。现在我有一个Node.JS库和一个React原生应用程序,我想在RN应用程序中使用这个Node.JS库,我们考虑在这个Node.JS库的基础上创建一个RN模块,这样RN应用程序就可以使用RN模块,而不需要与Node集成。因此,现在的问题是RN模块使用的是Java,我需要导入Node.JS库并使用其中的函数,但我找不到方法。那么,您的意思是:您使用的是NodeJS库,但它使用Java代码在本机端执行,而不是React native?如果这是您的问题,那么您只能做一件事:为RN创建一个本机模块,它与您的NodeJS模块做的事情相同。基本上,RN应用程序有两个线程:JS线程和本机线程。JS线程将执行JS代码,然后将数据和命令发送到本机线程。您的本机线程将接收这些,并像手机上的普通应用程序一样工作。简单地说,JS线程是大脑,本机线程是肌肉。首先,Kotlin与Java完全兼容,可以转换为Java。实际上,我从未使用Kotlin编写RN本机模块,但您可以尝试一下。其次,由于Kotlin可能是Java的扩展版本,因此您导入的代码无法运行。在中,你会发现它和通常的Android应用程序有点不同。您编写的每个本机模块都必须遵循RN的规则,例如:扩展
ReactContextBaseJavaModule
,而不是
Activity
。即使在NodeJS模块中,本机代码也必须遵循自己的规则。总而言之,如果你找不到一个替代的RN库来做同样的事情,你必须自己去做。
import { a, b } from '/path/yourModule'; // if you want to import some of the functions

class yourComponent {
    function test() {
        a(); // call function a from module
    }
}
// Remember to check function's name if it's duplicated with other modules
import * as module1 from '/path/yourModule';

class yourComponent {
    function test() {
        module1.a(); // call function a from module
    }
}
// In this case, you won't have to worry about duplicated function's name, but you still
// have to check duplicated of the name of modules you have imported. For this example,
// the name module1 has been used.