vue中通过js加载图片显现

   在vue开发中会遇到这样的问题:有时需要在img中加载多个静态资源的图片,如果我们将src的路径整个定义成一个变量,会发现img加载不出来正个图片的路径,其实此时需要require()来加载静态资源的路劲

在vue中通过js加载图片路径需要用 require() 加载图片路径

<img :src="titleIcon"  class="title-icon">{{ title }}</img>

 computed: {
    titleIcon() {
      return require(`@/assets/img/crm/${this.crmType}.png`)
    }
  },
### Vue3 中优先加载指定 JS 文件的方法 在 Vue3 项目中,可以通过 Webpack 的配置来优化资源加载顺序。具体来说,`chunkFilename` 和 `splitChunks` 是两个重要的配置项,它们可以帮助开发者控制哪些文件应该被优先加载。 #### 使用 Webpack 配置优先加载特定的 JS 文件 Webpack 提供了灵活的模块分割策略,允许开发人员定义不同类型的 chunk 并设置其加载优先级。以下是具体的实现方法: 1. **修改 Webpack 输出配置** 在 Webpack 配置文件中,通过调整 `output.chunkFilename` 属性,可以自定义异步加载的 chunk 名称及其路径[^2]。 ```javascript module.exports = { output: { filename: 'main.[contenthash].js', chunkFilename: 'chunks/[name].[contenthash].js' // 设置异步加载的 chunk 路径 } }; ``` 2. **利用 splitChunks 控制打包逻辑** 为了确保某些关键的 JavaScript 文件能够被优先加载,可以在 `optimization.splitChunks` 中进行特殊处理。例如,将核心库(如 lodash 或 axios)单独提取出来作为 vendor chunk[^3]。 ```javascript optimization: { splitChunks: { cacheGroups: { vendors: { test: /[\\/]node_modules[\\/]/, name: 'vendors', // 将 node_modules 下的内容打包成独立的 vendors.js chunks: 'all' }, priorityJs: { test: /your-specific-js-file\.js$/, // 替换为实际的目标文件名正则表达式 name: 'priority-script', // 自定义名称以便识别 enforce: true, // 强制执行此规则 chunks: 'initial' } } } } ``` 3. **动态导入与懒加载结合** 如果希望部分功能按需加载,则可采用 ES6 的 `import()` 函数语法配合路由懒加载机制。对于需要立即生效的核心脚本,仍然可以直接引入而不做任何改动。 ```javascript const MyComponent = () => import(/* webpackChunkName: "my-component" */ './MyComponent.vue'); ``` 4. **借助插件进一步增强性能表现** 对于更复杂的场景,还可以考虑集成第三方工具辅助完成任务。比如使用 [webpack-bundle-analyzer](https://github.com/webpack-contrib/webpack-bundle-analyzer),分析最终产物结构并据此微调参数设定;或者启用 tree shaking 技术移除未使用的代码片段从而减小体积。 --- ### 实现图片加载以提高首屏渲染效率 除了关注静态资源管理外,在日常开发过程中也应重视多媒体素材的表现形式。针对大尺寸图像对象而言,“懒加载”技术不失为一种有效手段——即仅当目标元素即将显现至可视区域内才发起网络请求获取对应数据流[^1]。 ```html <img data-src="example.jpg" class="lazyload" alt="" /> ``` 相应 CSS 类样式声明如下所示: ```css .lazyload { opacity: 0; transition: all .5s ease-in-out; } .lazyloaded { opacity: 1; } ``` 最后编写一段简单的 VanillaJS 来监听滚动事件触发条件判断过程即可达成目的: ```javascript document.addEventListener('scroll', function() { document.querySelectorAll('.lazyload').forEach(function(img) { if (isInViewport(img)) { img.src = img.dataset.src; img.classList.add('lazyloaded'); } }); }); function isInViewport(el){ let rect = el.getBoundingClientRect(); return ( rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth) ); } ``` 以上便是关于如何让 Vue3 应用程序支持预载入选定 js 文档以及实施延迟显示图形资产的一些见解分享啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值