javascript - 将组件直接渲染到模板中
问题描述
我有一个 React 组件,我正在使用 Webpack 构建它。组件是从 导出的index.js
,它是entry
模块中的文件:
// packages/tnetennba/index.js
class Tnetennba extends React.Component {
render() {
return (
<div>good morning, that's a nice tnetennba</div>
)
}
}
export default Tnetennba
我的 webpack 配置与模块位于不同的目录中(我使用的是单存储库),因此模块本身没有任何构建配置文件或模板可供使用webpack-dev-server
。
// packages/tnetennba/package.json
{
"name": "tnetennba",
"version": "0.0.1",
"main": "dist/index.js",
"scripts": {
"start": "webpack-dev-server --config ../config/webpack.dev.js --open",
"build": "webpack --config ../config/webpack.build.js"
}
}
但是,我不能在开发模式下使用组件,我可以使用 HtmlWebpackPlugin 来实现:
// packages/config/webpack.dev.js
module.exports = merge(common, {
mode: 'development',
...
plugins: [
new HtmlWebpackPlugin({
inject: true,
template: '../config/index.html' // <-- this path is relative, becuase webpack will be called from packages/tnetennba directory.
})
]
})
但是,我必须将ReactDOM.render
函数调用放在我的模块中index.js
,以将组件渲染到模板中:
//...
export default Tnetennba
ReactDOM.render(<Tnetennba />, document.getElementById('root')) // <-- This shouldn't be here.
问题:有没有办法在开发模式下工作时避免render
在模块内部调用?是否可以在 webpack 中调用 React 渲染器?
我也想避免使用节点的process
变量进行条件渲染。
解决方案
查看HtmlWebpackIncludeAssetsPlugin,它允许您将资产添加到 html 文件中,我的想法是添加一个将ReactDom.render
在其中调用方法的 js 文件。
new HtmlWebpackPlugin(),
new HtmlWebpackIncludeAssetsPlugin({
assets: [
{ path: 'path/to/bootstrap.js', type: 'js' }
]
})
推荐阅读
- python - 如何检查路径是否存在并使用python复制文件夹和文件
- java - 如何简化 testng XML 文件中的参数传递?
- django - 如何正确解包元组并显示它?
- c++ - QSerialPort 在应用程序启动之前正在使用中
- android - 如何将现有的 SQLite 数据库连接到 ROOM Android?
- typescript - 从 Typescript 中的文件中获取导出的函数名称
- r - 制作具有正值和负值的条形图
- c# - IdentityBuilder 不包含“AddEntityFrameworkStores”的定义
- reactjs - 在 ReactJs 中使用 NavLink 或 Link 代替 href
- ios - 通话后恢复 AVPlayer