不下载npm包到本地项目,如何动态加载npm包?
问题描述
目前想做一个根据配置json来生成页面的项目,倾向于使用react来构建这个项目。
大体是想完成这样的一件事情,从后端获取一个json对象,前端根据这个json对象渲染对应的组件
{
page:{
width: 1920,
height: 1080
},
components: [
'Button': {
attr: {
width: 100,
height: 20,
},
config: {
content: '测试按钮',
}
},
'Table':{
attr: {
width: 200,
height:100,
},
data: 'xxx',
}
]
}
前端拿到这样一个json,在页面渲染一个宽100,高20,内容为"测试按钮"的Button组件,渲染一个宽200,高100的表格。
目前的实现思路是通过import()来动态引入组件,
import('Button').then()
但问题是如果有100个npm的react组件,那100个组件都需要下载到项目里面,并且会存在版本问题,比如说有些页面在用Button组件的0.1版本,有些页面需要用Button组件的0.3版本,就没办法去区分。
所以说知道能不能 在 代码中 去动态引入npm react组件包,并且使用。或者把单独的react组件以src的方式引入到项目中?
看到过别人的方案,是采用的js编写的组件,该组件会生成相应的dom结构以及css以及js的逻辑,动态加载一个js就可以了,但我想用react的方式去编写组件,所以提出上面的问题。
或者有其他更好的技术方案吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
用systemjs简单得实现了下,
response
为了写起来方便改一下,url
对应组件地址,name
对应组件名,systemjs我也是现学现卖是不是可以用js document.createElement创建script标签,src到cdn链接来解决呢?例如:
<script crossorigin src="https://unpkg.com/react@17/umd/react.development.js"></script>
你可以把多项目共同使用的组件封装成一个包放进一个单独的仓库,然后在其它项目中使用
npm i -S git+ssh://git@git.com:your-component/component.git 来安装或更新
使用方法和你用其他组件是一样的:
import { ComponentOne } from your-component