晓
晓
> 九行代码 ``` var arr = new Array(5),index=0; function create () { var rand = Math.floor(Math.random()*31 + 2); if (arr.indexOf(rand) === -1 && index
``` var num1 = '1,2,3,5,7,8,10'; function simplifyStr (str) { var result = []; var numArr = str.split(',').map(item => parseInt(item,10)); var tmp = numArr[0]; numArr.forEach((item,index) => { if (numArr[index+1]!=item+1) { if...
@jamiebuilds
Thanks for your feedback, this problem is great, because we are thinking about how to solve it, but currently we can't directly support the syntax, the current sharing mechanism of...
目前可以通过手动控制应用的加载来进行应用的缓存,本身 Garfish 对于子应用就是具备缓存能力的整体的消耗会比 iframe 消耗更低可以参考 https://www.garfishjs.org/guide/cache,另外可以通过 [loadApp API](https://www.garfishjs.org/api/loadApp) 来进行应用的加载,返回的 app 实例,可以通过手动调用 show 和 hide 来最大程度复用缓存
请参考一下这个常见问题:https://www.garfishjs.org/issues/#provider-is-null
感谢你对 Garfish 的关注,目前的实现确实有些 hack,这块我们后面会进行能力调整,直接支持 esm 的用法
> 我这里简单说明一下为什么需要通过 garfish 自带的环境变量导出。子应用的 export ,在一些第三方打包工具(我们没法控制)打出的生产环境中,并不会真正的 export,这导致不同的环境中,行为是不一样的,也就是说有可能拿到 provider,有可能拿不到 provider。其次注入环境变量也可以完全保证和 cjs 的功能一致。 我最近思考了一下这个问题貌似可以解决掉,而且不用通过环境变量的模式,我们可以把这个信息放置 currentScript 状态中,例如执行对应子应用的脚本时,把应用信息放置该应用后,就可以把应用的 name 传递过去,统一挂在在全局上就不需要使用 blob 的形式转变一下值,从而导致和原生加载不一致的问题
> 那么ESM本身就自带**_导出_**语义 「那么ESM本身就自带**导出**语义」针对这一点主要是一下两个原因导致我们调整成这样的: 1. 这里例如 Vite 在构建成非库模式的时候会自动的把 export 等关键词去除,无法直接获取 esm 导出的内容 2. 直接识别子应用 export 的内容,会受到非入口文件的影响,如果不是入口文件也可能会直接获取导出内容,如果还有其他的 esmodule 的 script 将会对入口导出产生影响