阳江[切换]
免费发布信息
您当前的位置: 阳江百修网> 阳江工控产品维修>阳江数控系统维修> >新代数控系统使用期限密码破解

新代数控系统使用期限密码破解

新代数控系统使用期限密码破解
服务区域
阳江市-阳东县
服务范围
数控机床
发布日期
2023-04-22 14:33:06
标签

温馨提示:此页面服务由第三方为您提供,交易前请仔细核对商家真实资质,勿信夸张宣传和承诺,勿轻易相信预付定金、汇款等交易方式; 此页面所发布文字及图片均由网民自行发布,如有侵权请联系发布者删除。

产品介绍

新代数控系统使用期限密码破解年前开始负责新项目开发,是一个h5内嵌到企业*。技术栈是 vite2.x + vue3.x。随着业务的开展,版本迭代,页面越来越多,第三方依赖也越来越多,打出来的包也越来越大。针对这个问题,很容易就会想到分包这个解决方案。根据 vite 文档 提示,做了 vendor 分包之外,还对路由引用的组件做了异步加载处理,也会产生独立分包。这种配置在某个阶段是没问题的。

遇到问题


  • 在 vite 配置文件,通过 build.rollupOptions.output.manualChunks 配合手动分包策略之后,vite 不会自动生成 vendor包

  • 当页面越来越多,配置了动态引入页面之后,打包出来会产生 chunk碎片,如几个页面公用的文件 api.js sdkUtils.js http.js 等,这些独立的分包大小都很小,加起来 gzip 之后都不到 1kb,增加了网络请求。


*终解决方案

经过阅读源码,以及文档,分析了vite和rollup的分包策略,*得出这个解决方案:

rollupOptions: {  output: {    manualChunks(id: any, { getModuleInfo }) {      const cssLangs = `\\.(css|less|sass|scss|styl|stylus|pcss|postcss)($|\\?)`;      const cssLangRE = new RegExp(cssLangs);      const isCSSRequest = (request: string): boolean =>
       cssLangRE.test(request);        // 分vendor包
     if (
       id.includes('node_modules') &&
       !isCSSRequest(id) &&        staticImportedByEntry(id, getModuleInfo, cache.cache)
     ) {        return 'vendor';
     } else if (        // 分manifest包,解决chunk碎片问题
       ((getModuleInfo(id).importers.length + getModuleInfo(id).dynamicImporters.length) > 1) &&
       id.includes('src')
     ) {        return 'manifest';
     }
   }
 }
}
export class SplitVendorChunkCache {  constructor() {    this.cache = new Map();
 }  reset() {    this.cache = new Map();
 }
}export function staticImportedByEntry(
 id,
 getModuleInfo,
 cache,
 importStack = []) {  if (cache.has(id)) {    return !!cache.get(id);
 }  if (importStack.includes(id)) {
   cache.set(id, false);    return false;
 }  const mod = getModuleInfo(id);  if (!mod) {
   cache.set(id, false);    return false;
 }  if (mod.isEntry) {
   cache.set(id, true);    return true;
 }  const someImporterIs = mod.importers.some((importer) =>
   staticImportedByEntry(
     importer,
     getModuleInfo,
     cache,
     importStack.concat(id)
   )
 );
 cache.set(id, someImporterIs);  return someImporterIs;
}

下面来看看当时是如何分析,以及一步一步来揭开默认分包策略的神秘面纱。

分析

vite2.x 什么情况下可以触发 vendor 包的生成?

经过测试,在 vite 配置文件,通过 build.rollupOptions.output.manualChunks 配合手动分包策略之后,不会自动生成vendor包。想要知道更清晰 vite 在什么情况会分 vendor 包,什么时候不会分 vendor 包,需要打开源码看清楚。

// vite// packages\vite\src\node\plugins\splitVendorChunk.tsreturn {    name: 'vite:split-vendor-chunk',    config(config) {      let outputs = config?.build?.rollupOptions?.output
     if (outputs) {
       outputs = Array.isArray(outputs) ? outputs : [outputs]        for (const output of outputs) {          const viteManualChunks = createSplitVendorChunk(output, config)          if (viteManualChunks) {            if (output.manualChunks) {              if (typeof output.manualChunks === 'function') {                const userManualChunks = output.manualChunks
               output.manualChunks = (id: string, api: GetManualChunkApi) => {                  return userManualChunks(id, api) ?? viteManualChunks(id, api)
               }
             }              // else, leave the object form of manualChunks untouched, as
             // we can't safely replicate rollup handling.
           } else {
             output.manualChunks = viteManualChunks
           }
         }
       }
     } else {


企业信息
入驻时间:
2022年
主营产品:
数控机床
公司地址:
广东省阳江市阳东县艺鹏装饰
客服热线

意见反馈邮箱:354481597@qq.com

关注我们
百修网公众号

百修网公众号

百修公众号

百修公众号

师傅接单小程序

师傅接单小程序

苏ICP备09042555号-2 | 增值电信业务经营许可证:苏B2-20150120 | 公安部备案号:32020202000170 | Copyright © 无锡市新视点网络科技有限公司 版权所有