vite图片处理

这篇具有很好参考价值的文章主要介绍了vite图片处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

踩坑点:之前在webpack中引用方式是require,后面我就一直想用require插件,然后就在网上查到了下面的方法,就是这个导致打包速度很久,后来我想了想,webpack和vite的编译方式都不一样啊,嗯,这不强扭的瓜不甜。后来我就用了vite内部的import.meta.globEager,写了一个getImgSrc方法,通过inject引入。

主要问题点:解决打包速度,尽量用框架自带的方法,不要想着以前的。就像人总会变。

写一个插件

export default function requirePlugin() {

    return {

      // 插件名称

      name: "vite-plugin-vue-requireToUrlPlugin",

      // 默认值post:在 Vite 核心插件之后调用该插件,pre:在 Vite 核心插件之前调用该插件

      // enforce: "post",

      // 代码转译,这个函数的功能类似于 "webpack" 的 "loader"

      transform(code, id, opt) {

        const vueRE = /\.vue$/;

        const require = /require/g;

       

        // 过滤掉非目标文件

        if (!vueRE.test(id) || !require.test(code)) return code;

        // 匹配 require() 内的内容

        const requireRegex = /require\((.*?)\)/g;

        // 将 require() 内的内容替换为 new URL 的写法

        const finalCode = code.replace(requireRegex, "new URL($1,import.meta.url).href");

         

        // 将转换后的代码返回

        return finalCode;

      },

    };

  }

引用

import requireToUrlPlugin from './plugins/requireToUrlPlugin'; 
export default defineConfig({
  base: process.env.NODE_ENV === 'production' ? './' : '/',
  plugins: [
    vue(),
  ],
  css: {
    preprocessorOptions: {
      // 全局样式引入
      scss: {
        additionalData: '@import "./src/theme/element.scss";@import "./src/theme/main.scss";',
        javascriptEnabled: true,
      }
    }
  },
  resolve: {
    alias: {
      "@": path.join(__dirname, "./src"),
    },
  },
  build:{
    minify: 'terser',
    productionSouceMap: false,
    rollupOptions: {
      output: {
        chunkFileNames: 'static/js/[name]-[hash].js',
        entryFileNames: 'static/js/[name]-[hash].js',
        assetFileNames: 'static/[ext]/[name]-[hash].[ext]',
        manualChunks(id) {
          if (id.includes('node_modules')) {
            return id.toString().split('node_modules/')[1].split('/')[0].toString();
          }
        }
      }
    },
    terserOptions: {
      compress: {
        drop_console: true,
        drop_debugger: true,
      },
    }
  }
  
})
 

1.在plugins/elementPlus.js中

app.provide('$getImgSrc',(name)=>{

      if (typeof name === 'undefined') return 'error.png'

      const modules = import.meta.globEager('/src/**/*.{png,svg,jpg,jpeg}')

      if (modules[name]) return modules[name].default

    })

2.在项目中引用

<template>

</template>
<script>
import { reactive, toRefs, defineComponent, onMounted, inject } from 'vue';
export default defineComponent({
    components: {},
    setup() {
        const getImgSrc = inject('$getImgSrc')
        const state = reactive({
            app:[
                {
                    icon: getImgSrc('/src/assets/homeIcon/01.png'),
                    txt: '目标职责'    
                },
                {
                    icon: getImgSrc('/src/assets/homeIcon/02.png'),
                    txt: '制度化管理'
                },
                {
                    icon: getImgSrc('/src/assets/homeIcon/03.png'),
                    txt: '教育培训'
                },
                {
                    icon: getImgSrc('/src/assets/homeIcon/04.png'),
                    txt: '事故管理'
                },
                {
                    icon: getImgSrc('/src/assets/homeIcon/05.png'),
                    txt: '应急管理'
                },
                {
                    icon: getImgSrc('/src/assets/homeIcon/06.png'),
                    txt: '数据中心'
                },
                {
                    icon: getImgSrc('/src/assets/homeIcon/07.png'),
                    txt: '试题库'
                },
            ],
        });
        onMounted(()=>{});
        return {
            ...toRefs(state),
            getImgSrc,
        };
    },
    methods:{
        clickExamine(v){
            this.examineRef.open(v);
        }
    }
});
</script>
<style scoped lang="scss">
</style>
  文章来源地址https://www.toymoban.com/news/detail-532365.html

到了这里,关于vite图片处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vite图片处理

    主要问题点:解决打包速度,尽量用框架自带的方法,不要想着以前的。就像人总会变。 写一个插件 export default function requirePlugin() {     return {       // 插件名称       name: \\\"vite-plugin-vue-requireToUrlPlugin\\\",       // 默认值post:在 Vite 核心插件之后调用该插件,pre:在 Vite 核心

    2024年02月12日
    浏览(23)
  • Vite静态资源处理——动态引入图片

    服务时引入一个静态资源会返回解析后的公共路径: 导入既可以使用绝对公共路径(基于开发期间的项目根路径),也可以使用相对路径。 vite 生产构建后文件名会哈希,如图: import.meta.url 是一个 ESM 的原生功能,会暴露当前模块的 URL。将它与原生的 URL 构造器 组合使用,

    2024年02月10日
    浏览(44)
  • 【前端工程化】深入浅出vite(一)--vite的优点及原理、性能优化

    Vite 需要 Node.js 版本 14.18+,16+。然而,有些模板需要依赖更高的 Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本。 webpack 支持多种模块化,将不同模块的依赖关系构建成依赖图来进行统一处理,当构建的项目越来越大时,需要处理的 JS 代码也越

    2024年02月11日
    浏览(50)
  • vue-codemirror实现一个前端代码在线编辑器,可处理 HTML,VUE,JS,CSS代码在线编辑

    先找个目录创建一个vue项目 例如 我们想要项目叫 editor 在终端执行 2和3其实都可以 但个人建议 最近还是2会更稳定一些 在终端执行 引入依赖包 然后在项目src目录下创建 utils 文件夹 里面创建一个setting.js 参考代码如下 然后 这边 调用组件的代码 因为项目也刚创 我直接写 s

    2024年02月15日
    浏览(55)
  • Vue3的vite中图片的动态加载

    vite官网的静态资源引入参考地址 new URL() + import.meta.url 注意:这里只能通过 …/…/ 这种方式去获取路径,无法通过@/assets

    2024年02月16日
    浏览(38)
  • 使用JavaScript给图片添加图片水印的前端实现方法

    当涉及图片处理时,JavaScript是一种强大的工具。在本篇博客中,我们将学习如何使用JavaScript来给图片添加水印,并将其封装成一个函数,以便在需要的时候重复使用。 在开始之前,确保你已经准备好了以下内容:         1.一张待添加水印的图片。         2.水印图片。

    2024年03月15日
    浏览(63)
  • Vue+vite创建项目关于vite.config.js文件的配置

    Vue项目创建时,我们见过vue-cli 创建项目和webpack 创建项目等方式。 现在Vue 3版本使用npm/pnpm create vue@latest 创建项目,是搭配使用vite工具构建的。 创建完成的项目,最明显的去别就是,项目配置文件命名不同,当然,配置语法也有不同。 vue-cli 创建的项目,项目配置文件文件

    2024年02月12日
    浏览(56)
  • docker打包vue vite前端项目

    (如若提供一些帮助,请帮忙点个赞) 1.打包时将测试删除 2.修改配置 3.打包项目 npm run build 显示成功(黄的也不知道是啥) 打包好的前端文件放入 4.配置 default.conf 5.配置dockerfile 6.进入你的文件夹下面 我的是 /root/206/web docker build -t web:v1 . 注意后面的 . 点 7.运行 docker run -it -

    2024年02月07日
    浏览(35)
  • vue3 + vite 性能优化,详细代码说明

    对于Vue 3和Vite应用的性能优化,以下是一些常见的技巧和建议: 使用Tree-shaking:Vue 3和Vite支持ES模块的静态分析,因此可以利用Tree-shaking特性,只引入项目中实际使用的模块,减少打包体积。 懒加载路由:使用Vue Router的动态导入功能,将路由按需加载,可以减少初始加载的

    2024年02月02日
    浏览(40)
  • Vue 3 + TypeScript + Vite 项目中,实现选中图片移动

    在组件的  script  标签中,定义相关的数据和方法。首先,使用 Vue 的  ref  函数创建一个对图片元素的引用: 接下来,实现选中时出现边框的效果。你可以通过设置 CSS 样式来实现这一点。以下是一个简单的示例: 在组件的  template  中,为选中的容器元素动态绑定  sele

    2024年02月13日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包