不安装依赖,直接调用 npm | 远端 React 组件
做无代码平台当中,物料资源的管理是很重要的,而我们不可能为用户做好所有的组件,所以还要提供额外的入口,我们需要一个组件能够通过一个url调用远程的组件,而且这样也可以联动到我们做好的组件平台。
所以我期望使用方式是这样的:
<Component
// 组件源码js地址
url={"http://xxx"}
// component props ...
width={500}
height={350}
/>
这样,我们就能调用 url 地址所封装的组件,而这个地址是用户自己提供的,其实这种用法和微前端差不多,不过粒度是以组件js。
分析
所以步骤应该是如下
- 写一个组件
- 打包成umd或者cjs规范
- 上传到类似cdn的平台
- 通过接口访问到js后,通过 new Function 解析,获取到组件
- 展示
那 Component 组件实际上要做的是 请求/解析,代替 import/require 的功能
我们可以先写一个组件
var sayHello = ()=> { console.log("Hello") }
exports.default = sayHello
再通过 ajax 获取到组件代码
//伪代码
const jsContent = getJs(jsurl
const requires = {}
const exports = {};
const module = { exports };
const fn = new Function("require", "module", "exports", jsContent);