我希望能够将React应用程序与Webpack捆绑在一起,以便可以使用与客户端相关的一堆配置来获取,调用和初始化放在CDN上的分布式副本。
看完这个,我设置了我的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: Cannot set property 'MyApp' of undefined
,因为this
IIFE内部是undefined
。我真的很想了解为什么会这样以及如何解决它的建议。
提前致谢!
让我有种找到了一个解决方案,如所描述这里
如果我更改webpack.config.js
文件以将以下属性添加到output
对象,即
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应用程序渲染。
如果有人认为这是愚蠢的做法,我很想听听!
有关WEBPACK CONFIG的更多信息
请记住,我已经有一段时间没有接触过此代码了。鉴于它是Java语言,世界可能已经发展了,某些实践可能已经过时了。
这是我的React入口点文件(src/index.js
)
import 'babel-polyfill';
import React from 'react';
import { render } from 'react-dom';
import Root from './components/Root';
import configureStore from './lib/configureStore';
const store = configureStore();
export const init = (config) => {
render(
<Root store={store} config={config} />,
document.querySelector(config.selector || "")
);
}
这是我的Webpack配置(webpack.config.js
)
var webpack = require('webpack');
var path = require('path');
var loaders = require('./webpack.loaders');
module.exports = {
entry: [
'webpack-dev-server/client?http://0.0.0.0:8080', // WebpackDevServer host and port
'webpack/hot/only-dev-server',
'./src/index.js' // Your appʼs entry point
],
devtool: process.env.WEBPACK_DEVTOOL || 'source-map',
output: {
path: path.join(__dirname, 'public'),
filename: 'bundle.js',
library: 'Foo',
libraryTarget: 'umd',
umdNamedDefine: true,
},
resolve: {
extensions: ['', '.js', '.jsx']
},
module: {
loaders: loaders
},
devServer: {
contentBase: "./public",
noInfo: true, // --no-info option
hot: true,
inline: true
},
plugins: [
new webpack.NoErrorsPlugin()
]
};
如您所见,我的Webpack配置输出my bundle.js
,这是我的前端将摄取的内容。
问题内容: 是否可以使用ReactJavaScript库创建可嵌入的JavaScript小部件,其中: React库被“嵌入”在小部件中 嵌入式React库的版本可能与加载小部件的页面上的React库的版本不同,就像使用jQuery一样。 我正在寻找功能,如所述: http://blog.swirrl.com/articles/creating-asynchronous-embeddable-ja
本文向大家介绍如何编写javascript的gulp插件,包括了如何编写javascript的gulp插件的使用技巧和注意事项,需要的朋友参考一下 很久以前,我们在"细说gulp"随笔中,以压缩JavaScript为例,详细地讲解了如何利用gulp来完成前端自动化。 再来短暂回顾下,当时除了借助gulp之外,我们还利用了第三方gulp插件”gulp-uglify”,来达到压缩JavaScript文
这是出版于2013年的书。编写可维护的JavaScript的重要性不言而喻,特别对于团队工作来讲。统一规范的编码规范、严谨的编码风格,能在代码的维护时节约大量的人力成本。 基本的格式化 缩进层级:缩进层级到底采用制表符(tab)/2个空格/4个空格,都不重要,重要的是在一个团队中约定一种缩进风格。无关优劣,在这里风格统一最重要。另一个重要的点就是,切忌制表符和空格混用。 语句结尾:是否要分号结尾。
本文向大家介绍webpack写jquery插件的环境配置,包括了webpack写jquery插件的环境配置的使用技巧和注意事项,需要的朋友参考一下 客户需求要一个具备树结构、带复选框的下拉选择控件;在网上找到了select2、autocomplete都不满足要求。于是自己用ztree加bootstrap dropdown组合开发了一个下拉树选择控件。决定用webpack打包,开发一个完整的jque
Ruby我已经开始在我的Ruby代码中插入不可编辑的文本,我觉得这很烦人。例如,这个简单的rSpec表达式: ...变成了这样: 另一个例子是: ...变成了这样: 如何关闭此功能?
我正在编写Webpack插件,我需要执行相同的技巧,以便在应用程序之前注入。 它将包的入口点更改为某个自定义函数,该函数需要,然后加载原始入口应用程序。 包中的片段 我找不到做这件事的代码,有什么指示吗?