encodeURIComponent则会相应的编码成%3A、%2F、%3F、%26、%3D。
观察escape则发现,:?&都被转码了,而/没有,w3school解释是,escape函数会对ascii码中字母、数字及符号( * @ - _ + . / )之外的所有字符进行编码。
另外,我们可以看出escape对汉字“中国”编码后结果与前两者不同。
W3SCHOOL也建议不使用该方法,用前两者代替。
取消元素监听。更新代码时,页面也会自动刷新,刷新之后也会报错,在代码逻辑删除元素时,使用observer.disconnect()取消元素的监听。
不过我建议官方改一下chunk-vendors.js的代码,执行时判断bottom !== null
年前开始负责新项目开发,是一个h5内嵌到企业微信。技术栈是 vite2.x + vue3.x 。随着业务的开展,版本迭代,页面越来越多,第三方依赖也越来越多,打出来的包也越来越大。针对这个问题,很容易就会想到分包这个解决方案。根据 vite 官方文档 提示,做了 vendor 分包之外,还对路由引用的组件做了异步加载处理,也会产生独立分包。这种配置在某个阶段是没问题的。 经过阅读源码,以及官方文档,分析了vite和rollup的分包策略,最后得出这个解决方案: 下面来看看当时是如何分析,以及一步一步来揭开默认分包策略的神秘面纱。 经过测试,在 vite 配置文件,通过 build.rollupOptions.output.manualChunks 配合手动分包策略之后,不会自动生成vendor包。想要知道更清晰 vite 在什么情况会分 vendor 包,什么时候不会分 vendor 包,需要打开源码看清楚。 小结:用户配置了手动分包,就会忽略 vite 提供的 vendor 分包逻辑。 那如果希望在手动分包的基础上还需要 vendor 分包,那么就需要把 vendor 分包的逻辑抄过去就可以了。 备注: 为什么会产生 chunk碎片 ?参考对 webpack 分包的理解,除了入口点(静态入口点、动态入口点)单独生成一个chunk之外,当一个模块被两个或以上的 chunk 引用,这个模块需要单独生成一个 chunk 。 下面从源码的角度看看 rollup 是如何生成这些 chunk碎片 的。 下面来看看 getChunkAssignments 做了什么。 小结: 下面看看通过 createChunks 是如何进行默认分包的 对于生成 chunk签名 ,举个具体点的例子, allEntryPoints 包括一个静态入口点 index.html ,两个动态入口点: Hello.vue 和 World.vue 。有一个模块 sdkUtils.js 的入口点为 Hello.vue (即被 Hello.vue 导入);有一个模块 api.js 的入口点为 Hello.vue 以及 World.vue ;有一个模块 log.js 依赖了 Hello.vue 、 World.vue 和 index.html 。 所以,这个例子中,会产生6个chunk,且 api.js 对应的 chunk 和 log.js 对应的 chunk 就是额外多出来的chunk。 小结: