我使用了像 Codepush 这样的库来无线更新应用程序。但是,使用 Codepush 会构建新的 bundle ,然后将现有的 bundle 替换为新的 bundle 。 我想更改组件的一些 javascript 代码(可能使用 API 或其他任何可以从服务器注入(inject)一些 javascript 文件的东西),而不更新现有的包。
例如=>如果我有一个简单的用户界面,其中上半部分是空的。 注入(inject)的Javascript文件(UI上半部分的子组件)可能包含一些组件及其处理程序(可以是按钮、图像或文本输入字段等)。
这个注入(inject)的文件作为组件从服务器加载,因此我可以从服务器文件本身动态更改组件。 有什么特殊的方法可以做到这一点吗?
最佳答案
您不太可能将文件推送到已经转译和最小化的包中。
更好的选择是从前端向后端进行 API 调用以检索动态数据。然后可以操纵这些数据并将其显示在您的前端上。
然后,要更改前端显示的内容,您所需要做的就是更改 API 从后端返回的内容。
编辑:
如果最初加载的组件是一个简单的按钮并发布 api 响应,它会变成一个模态,其中整个模态 UI 以及事件处理程序代码作为组件从 API 响应中传入。这样的事情可能吗?
没有。
您不能将未编译的组件发送到前端。请记住,提供给客户端的包是经过编译的缩小版 JavaScript。您不能有条件地为单个用户重新编译应用程序,或者如果可以的话 - 似乎是一个非常糟糕的主意。
您可以做的是允许您的前端从 API 调用接收和呈现 HTML 内容。不必重新编译,但是您将无法使用 React 类等。它必须是纯 HTML/CSS/Javascript。
关于javascript - 是否可以在 React Native 中注入(inject)一些 javascript 而无需更新整个包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61406722/