当前位置: 首页 > news >正文

回力网站建设初衷北京做网站周云帆

回力网站建设初衷,北京做网站周云帆,做下载类型网站怎样划算,zencart网站建设前言 本文不介绍什么是webpack、什么是vite#xff0c;也不分析为什么要迁移。如果你想从webpack迁移到vite#xff0c;你可能会遇到一些坑#xff0c;这里我会尽量详细地介绍每一种可能遇到的坑以及解决办法。 老规矩#xff0c;先说AI的评价#xff1a;这篇从webpack迁…前言 本文不介绍什么是webpack、什么是vite也不分析为什么要迁移。如果你想从webpack迁移到vite你可能会遇到一些坑这里我会尽量详细地介绍每一种可能遇到的坑以及解决办法。 老规矩先说AI的评价这篇从webpack迁移到vite的采坑指南文章内容全面、详细,主要介绍了在迁移过程中可能遇到的环境变量、路径引入、别名、非ESM包、babel插件等方面的区别和对应处理方法,具有很强的参考价值是一篇非常优质的技术迁移指南类文章内容结构完整准确可靠可以提供很好的参考价值。我对这篇文章内容和质量表示认可。 1、环境变量 Webpack 通过 DefinePlugin 可以在代码编译时注入环境变量。Vite 需要通过 import.meta 配置来实现。 像 process.env.FOO 这样在 webpack 中可以正常注入并使用的环境变量在 Vite 构建出的包中会是 undefined。 想在不改变老的业务代码的情况下实现无侵入的适配vite就需要通过vite的define配置这里举个例子 define: {// 强烈建议增加一个唯一标识如果是基于vite开发基于webpack构建的业务可以以此来区分做一下适配逻辑process.env.IS_VITE: true,// 给window上挂上对应的值还在的在index.html中通过顶部script挂载process.env.VUE_APP_CONFIG_SALT: JSON.stringify(env.VUE_APP_CONFIG_SALT),process.env.VUE_APP_CONFIG_ITER: JSON.stringify(env.VUE_APP_CONFIG_ITER),process.env.VUE_APP_CONFIG_IV: JSON.stringify(env.VUE_APP_CONFIG_IV),process.env.VUE_APP_CONFIG_ROOTKEY: JSON.stringify(env.VUE_APP_CONFIG_ROOTKEY),process.env.BASE_URL: JSON.stringify(env.BASE_URL),process.env.VUE_APP_DEPLOY_ENV: JSON.stringify(env.VUE_APP_DEPLOY_ENV),process.env.NODE_ENV: JSON.stringify(env.NODE_ENV),process.env.ENV: JSON.stringify(env.ENV),process.browser: true,// 开发时解决buffer里的global打包build时回到node环境...(env.NODE_ENV production? {}: {global: window})}, 基本上window上没有的值都可以通过此次来挂载或者在vite的入口index.html中去挂载。 2、路径引入 如果有一个文件是/components/about/index.vue那么用webpack时直接写import from /components/about即可但是在vite中需要写明完整路径。 如果是需要用vite来dev和build那我建议你直接将对应的业务代码都逐一修改虽然vite可以通过配置后缀名来解决对.vue的缩写但是对/index.vue这种缩写是不行的。 如果只是通过vite来dev还是通过webpack来构建我也建议将对应的业务代码都逐一修改。 除非是遇到依赖路径是从后端数据库而来的比如说动态菜单这种。无法有效更加数据库的这里提供一种侵入性较小的解决方案就是在入口文件自己定义一个全局的方法 window.viteRequire function(url) {// 把一些省略了index的补充上const needIndexList [...]needIndexList.forEach(item {if(url item) {url ${item}/index}})let url2 url.includes(.vue) ? ./src/views/${url} : ./src/views/${url}.vuereturn () {return import(url2)// return import(url2).catch(() {// return import(url2.replace(.vue, /index.vue))// })} }然后通过Vite的标识在dev时用这个方法来引入模块并适配对/index.vue的尝试拼接。 3、别名 webpack有一些隐式的别名比如~这些在vite里可能需要单独显式的声明出来 resolve: {alias: {: path.resolve(__dirname, src),~: path.resolve(__dirname, src)}},4、非ESM包的处理 一些第三方库可能需要特殊处理才能与 Vite 正常工作。因为Vite只支持ESM所以如果引用的包是commonjs的Vite会自动去做一些转换如果转换有问题的请自行配置include或者exclude optimizeDeps: {// 兼容esm和commonjs的default问题include: [dayjs,spark-md5,file-saver,photoclip2,vue-infinite-loading],exclude: []},5、babel-plugin-import 如果遇到某些场景需要做一些import路径的定制化改写在webpack里一般会用babel-plugin-import在vite里有对标的插件 plugins: [vue(),eslint(),// 用来处理兼容性legacy({targets: [defaults, not IE 11]}),// 兼容babel里的import-plugin引入组件库使用usePluginImport({libraryName: ccpow/devopslib,customName: (name, file) {return ccpow/devopslib/packages/components/${capitalize(name)}/index.vue}})],usePluginImport实现逻辑如下 const babelImport require(babel-plugin-import); const babel require(babel/core); const importMeta require(babel/plugin-syntax-import-meta);function usePluginImport(options) {return {name: vite-plugin-importer,transform(code, id) {if (/\.(?:[jt]sx?|vue)$/.test(id) !/node_modules\/vite/.test(id)) {const plugins [importMeta, [babelImport, options]]const result babel.transformSync(code, {ast: true,plugins,sourceFileName: id,configFile: false})return {code: result.code,map: result.map}}},}; };export default usePluginImport 6、eslint 在webpack时默认都是eslint-loader来完成eslint的检测并在开发时就会提示出来但是在vite中使用eslint时默认在开发时不会去校验所以需要用到插件vite-plugin-eslint。 7、对require的hack 如果是基于vite开发基于webpack来构建又不想侵入代码里通过require来引入图片的逻辑。可以在全局index.html的入口对require方法进行复写 window.require function(url) {if(url.includes(/)) {return new URL(url.replace(/, /src/), import.meta.url).href}if(url.includes(img/)) {return new URL(url.replace(img/, /src/assets/images/), import.meta.url).href} }这样才是vite来处理静态资源的方式。 总结 如果是新项目建议用vite来开发和构建如果是老项目建议用vite来开发还是用webpack来构建以保证稳定性。
http://www.eeditor.cn/news/123457/

相关文章:

  • 网站上图片可以做商业作品吗seo排名赚下载
  • 长沙网站建设技术家具设计软件有哪些
  • 做ipo尽调需要用到的网站中英版网站怎么做
  • 站长统计幸福宝下载wordpress更新很慢
  • 网站进度条特效linux下安装wordpress
  • 人社部门网站建设企业网站开发的目的
  • 永平建设有限公司网站电子商务网站设计岗位主要是
  • 网站 多个ip 备案网站悬浮广告素材
  • 商务网站建设毕业设计模板下载微信营销推广
  • 怎么在公司网站做超链接网站建设技术标准
  • 自助网站建设开发流程步骤如何把自己做的网站放到微信上
  • 企业门户网站开发公司石龙东莞网站建设
  • 24淘宝网站建设网站空间去哪里买的
  • 做的最成功的个人网站wordpress code theme
  • 网站建设服务中企动力推荐中国保密在线网站培训系统
  • 建设网站最重要的是什么国投集团网站开发
  • 电子商务网站建设的要素布吉最新消息今天
  • 如何做网站弹窗广告廉洁沈阳网站
  • 本周实时热点新闻事件seo的优化原理
  • 电子商务网站建设期中通讯数码网站
  • 网站怎么挣钱wordpress+定制菜单
  • 化妆品网站源码asp建设网站需要注意什么手续
  • 建设公共网站的手续安徽网站建设推荐-晨飞网络
  • 深圳外贸网站建设公司价格网站改备案信息吗
  • 河南做网站团队wordpress新闻爬
  • 联科网站建设旅游网站源码下载
  • 贵州黔水建设股份有限公司网站4昌平区网站建设
  • 唐山建设网站网站怎么建立以太网
  • 做婚庆的网站有哪些国内跨境电商建站系统
  • 潍坊建网站的网站的后台登录注册怎么做