【问题标题】:Where and how does React Native resolve .android.js and .ios.js files?React Native 在哪里以及如何解析 .android.js 和 .ios.js 文件?
【发布时间】:2015-09-20 16:02:10
【问题描述】:

React Native 打包器有一个特性,它可以根据构建的环境自动在 *.android.js*.ios.js 文件之间进行选择。我想看看*.web.js 文件是否也可以使用相同的机制,从而也允许在同一存储库中构建Web 应用程序。

我试图弄清楚它是如何工作的以及它在代码中的实现位置,但我似乎找不到它。有没有办法将一个 ENV 变量设置为 web 并让它工作?

【问题讨论】:

    标签: reactjs react-native


    【解决方案1】:

    它不是 React 框架的一部分,它在您的 iOS/Android 项目文件中。

    iOS/AppDelegate.m 第 34 行:

    jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle"];
    

    android/app/src/main/java/com/rn/MainActivity.java 24-31 行:

    mReactInstanceManager = ReactInstanceManager.builder()
                    .setApplication(getApplication())
                    .setBundleAssetName("index.android.bundle")
                    .setJSMainModuleName("index.android")
                    .addPackage(new MainReactPackage())
                    .setUseDeveloperSupport(BuildConfig.DEBUG)
                    .setInitialLifecycleState(LifecycleState.RESUMED)
                    .build();
    

    您可以更改React-Native generator 中的设置,但如果您想打包index.web 文件,我认为使用Webpack 是更好的方法。

    【讨论】:

    • 问题在于单独的解决方案 - 在 RN 打包器中,您可以拥有 myview.ios.js 和 myview.android.js 文件,并且将根据您的捆绑包使用正确的文件。我也想将其扩展到网络。
    • 注意:.setJSMainModuleName 已重命名为 setJSMainModulePath 从版本 0.55.4 开始
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 2016-11-15
    • 2015-02-16
    • 2018-03-19
    • 1970-01-01
    • 2018-12-23
    相关资源
    最近更新 更多