加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用React和Webpack编写可嵌入的Javascript插件

发布时间:2020-12-15 20:53:44 所属栏目:百科 来源:网络整理
导读:我希望能够将我的React应用程序与Webpack捆绑在一起,以便放入CDN的分布式副本可以通过与客户端相关的一堆配置来源,调用和初始化. 阅读this和this之后,我正在设置我的webpack条目文件,如下所示: // ... React requires etc.(() = { this.MyApp = (config) =
我希望能够将我的React应用程序与Webpack捆绑在一起,以便放入CDN的分布式副本可以通过与客户端相关的一堆配置来源,调用和初始化.

阅读this和this之后,我正在设置我的webpack条目文件,如下所示:

// ... React requires etc.

(() => {
  this.MyApp = (config) => {
    // some constructor code here
  }

  MyApp.prototype.init = () => {
    ReactDOM.render(<MyReactApp config={MyApp.config} />,someSelector);
  }
})();

这个想法是在我的客户端,我可以做如下的事情:

<script src="./bundle.js" type="text/javascript"></script>
<script type="text/javascript">
  MyApp.init({
    some: "config"
  });
</script>

我的MyApp #init函数会将我的React应用程序渲染到客户端的某个容器中.

我是否以正确的方式思考这个问题?是否有更简单或更有效的方法来解决这个问题?

我的错误是Uncaught TypeError:无法设置未定义的属性’MyApp’,因为IIFE中的这个是未定义的.我真的很想了解为什么会发生这种情况以及如何解决它的建议.

提前致谢!

所以我找到了一个解决方案,如 here所述

如果我更改我的webpack.config.js文件以将以下属性添加到输出对象,即

var config = {
  // ...
  output: {
    // ...
    library: 'MyApp',libraryTarget: 'umd',umdNamedDefine: true,}
}

这指定我将webpack捆绑为UMD模块的文件,所以如果我在该文件中有一个函数并将其导出…

export const init = (config) => {
  ReactDOM.render(<MyReactApp config={config} />,someSelector);
}

然后,我可以在我的客户端执行以下操作.

<script src="./bundle.js" type="text/javascript"></script>
<script type="text/javascript">
  MyApp.init({
    some: "config"
  }); 
</script>

而我的React应用程序呈现.

如果有人认为这是一种愚蠢的做法,我很乐意听到它!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读