使用 WebPack 公开 ReactClass
Expose ReactClass using WebPack
我正在尝试使用WebPack公开一个ReactClass,以便在不同的html页面上重用它。可能吗?正确的方法是什么?为简单起见,我将在一个 html 上使用两次示例(但它应该在实际应用程序中的许多不同的 html 中使用)
所有来源都可以在这里找到:https://github.com/mqueirozcorreia/React-Fundamentals/tree/video2
webpack.config.js
成功创建捆绑文件,代码如下:
var HtmlWebpackPlugin = require('html-webpack-plugin')
var HTMLWebpackPluginConfig = new HtmlWebpackPlugin({
template: __dirname + '/app/index.html',
filename: 'index.html',
inject: 'body'
});
module.exports = {
entry: [
'./app/index.js'
],
output: {
path: __dirname + '/dist',
filename: "index_bundle.js"
},
module: {
loaders: [
{test: /'.js$/, exclude: /node_modules/, loader: "babel-loader"}
]
},
plugins: [HTMLWebpackPluginConfig]
};
ReactClass 位于app'MyReactClass.js
,其代码如下:
var React = require('react');
var MyReactClass = React.createClass({
render: function () {
return (
<div>MyReactClass = Hello {this.props.name}</div>
)
}
});
MyReactClass 公开app'index.js
如下:
...
require("expose?MyReactClass!./MyReactClass.js");
全局变量"MyReactClass"有一个对象的实例(如警报所示),但是当我尝试在dist'index.html
使用它时ReactDOM.render()
,它会抛出该错误:
警告:React.createElement:类型不应为空,未定义, 布尔值或数字。它应该是一个字符串(对于 DOM 元素)或 反应类(用于复合组件)。 https://cdnjs.cloudflare.com/ajax/libs/react/0.14.7/react.js 线 18794
年
dist'index.html
部分代码:
...
<body>
<div id="app"></div>
<div id="component1"></div>
<div id="component2"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.7/react.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.7/react-dom.js" type="text/javascript"></script>
</body>
<script type="text/javascript">
alert(MyReactClass);
ReactDOM.render(React.createElement(MyReactClass, { name: 'Component1' }), document.getElementById('component1'));
ReactDOM.render(React.createElement(MyReactClass, { name: 'Component2' }), document.getElementById('component2'));
</script>
</html>
我做错了什么?
我只是弄清楚我错过了什么。
只需要 module.export MyReactClass
变量即可工作:
module.exports = MyReactClass;
所以MyReactClass.js现在看起来像这样
。var React = require('react');
var MyReactClass = React.createClass({
render: function () {
return (
<div>MyReactClass = Hello {this.props.name}</div>
)
}
});
module.exports = MyReactClass;
https://github.com/mqueirozcorreia/React-Fundamentals/blob/ba19aa5cff21f0c4881901e0a96aed6ddaea8e18/app/MyReactClass.js
- 如何将我的javascript库公开给其他客户端使用
- gcloud节点-我如何确保通过签名URL上传到谷歌云存储的文件是公开可读的
- 如何在AngularJS中公开公共函数
- MeteorJS:用户集合如何公开新字段
- 如何使用javascript express node将变量从控制器中的一个方法公开.js到另一个控制器.js
- Firefox Bookmarklet:向全局命名空间公开函数
- 如何公开JS节点模块
- 如何不在全球范围内公开第三方库
- 如何全局公开和触发onready函数
- 什么's是在Node.js中公开和组合错误的最佳方式
- 来自麻省理工学院公开课程的JavaScript示例
- 确定公开JS实用程序函数的最佳模式
- Typescript+Angular公开服务方法
- Do __proto__ 和 Object.getPrototype 的公开完全相同的功能
- 为命名空间上公开的方法创建类型定义
- 使用 WebPack 公开 ReactClass
- 为什么在传递/公开事件发射器时需要包装我的事件发射器的 on 函数
- NodeJS 测试 - 公开应用程序
- JavaScript 使变量的值公开
- 公开上传谷歌云端硬盘中的进度条