如何动态执行网上下载的js文件



  • 我想开发一个app,这个app需要在执行的过程中,从网上下载一个js文件(一个js module),并且假设该app已经安装该 js module所需的native module(例如,该js module只需要<Text>标签,无需添加其他native module即可运行),请问如何在index.android.js文件中引用该js module,使其可以被执行。根据我目前了解的知识,我无法使用require语句来动态引用该module,import语句也无法使用,因为在程序执行之前是没有该module的。我猜测无法使用require动态引用的原因是该文件没有被打包进jsbundle中,请问如何才能动态执行?



  • 举个最简单的例子吧,从网上使用fetch()下载了这样的一段js代码:
    import React, { Component } from 'react';
    import {
    AppRegistry,
    StyleSheet,
    Text,
    View,
    } from 'react-native';

    module.exports = class Hello extends Component {
    render() {
    return (
    <Text>Hello World.</Text>
    );
    }
    }
    请问如何我如何才能在index.android.js文件中引用Hello Component,如果是静态的,即这个文件是我自己写的,很简单,我有两种方法可以使用:(1)在程序开头import.
    (2)在需要的地方require().现在的问题是该文件是动态从网上加载的,请问RN提供这种动态加载js的功能吗?谢谢!



  • @YjyJeff webview多简单



  • @system 谢谢!因为我对webview不是很熟悉,请问可以通过webview调用底层的native module的API吗?这个举的例子可能过于简单,用webview可以实现。例如,我想下载一段可以拍照的代码,拍照所需的react-native-camera native module已经集成在我的app中,我可以通过调用下载的代码,动态执行拍照功能吗?非常感谢!



  • @YjyJeff 原生不支持,js都是打包好的,但是可以改写,动态加载到jsc


Log in to reply