美文网首页
处理静态资产

处理静态资产

作者: 晨曦诗雨 | 来源:发表于2018-12-04 15:39 被阅读0次

处理静态资产

您会注意到在项目结构中我们有两个静态资产目录:src/assets和static/。它们之间有什么区别?

Webpacked资产

要回答这个问题,我们首先需要了解Webpack如何处理静态资产。在*.vue组件,您的所有模板和CSS被解析vue-html-loader并css-loader寻求资产的URL。例如,在<img src="./logo.png">和中background: url(./logo.png),"./logo.png"是一个相对资产路径,将由Webpack解析为模块依赖项。

因为logo.png不是JavaScript,当被视为模块依赖时,我们需要使用url-loader和file-loader处理它。此模板已经为您配置了这些加载器,因此您可以免费获得文件名指纹识别和条件base64内联等功能,同时可以使用相对/模块路径而无需担心部署。

由于这些资产可能在构建期间内联/复制/重命名,因此它们本质上是源代码的一部分。这就是为什么建议将Webpack处理的静态资源放在/src其他源文件中。实际上,您甚至不必将它们全部放入/src/assets:您可以使用它们基于模块/组件来组织它们。例如,您可以将每个组件放在其自己的目录中,其静态资产就在它旁边。

资产解决规则

  • 相对URL,例如./assets/logo.png将被解释为模块依赖性。它们将替换为基于Webpack输出配置的自动生成的URL。

  • 非带前缀的URL,例如,assets/logo.png将被视为与相对URL相同并被翻译成./assets/logo.png。

  • 带有前缀的URL~被视为模块请求,类似于require('some-module/image.png')。如果要利用Webpack的模块解析配置,则需要使用此前缀。例如,如果您有解析别名assets,则需要使用<img src="~assets/logo.png">以确保遵守别名。

  • 根相对URL,例如/assets/logo.png根本不处理。

在JavaScript中获取资产路径

为了让Webpack返回正确的资产路径,您需要使用require('./relative/path/to/file.jpg'),它将被处理file-loader并返回已解析的URL。例如:

computed: {
  background () {
    return require('./bgs/' + this.id + '.jpg')
  }
}

请注意,上面的示例将包括./bgs/最终构建中的每个图像。这是因为Webpack无法猜测它们将在运行时使用哪些,因此它包含了所有这些内容。

“真正的”静态资产
相比之下,static/Webpack根本不处理文件:它们按原样直接复制到最终目标,文件名相同。您必须使用绝对路径引用这些文件,绝对路径由join build.assetsPublicPath和build.assetsSubDirectoryin 确定config.js。

例如,使用以下默认值:

// config/index.js
module.exports = {
  // ...
  build: {
    assetsPublicPath: '/',
    assetsSubDirectory: 'static'
  }
}

放入的任何文件static/都应使用绝对URL引用/static/[filename]。如果更改assetSubDirectory为assets,则需要将这些URL更改为/assets/[filename]。

相关文章

  • 处理静态资产

    处理静态资产 您会注意到在项目结构中我们有两个静态资产目录:src/assets和static/。它们之间有什么区...

  • Ansible-2 ansible资产

    1.1 静态资产 如何使用自定义资产 如何验证自定义资产 1.2 动态资产 动态资产实例 1.3 资产选择器 格式...

  • Python web开发----->Django(视图网页模板

    Python web开发----->Django(视图网页模板和静态文件处理) 一,根视图网页模板和静态文件处理 ...

  • Unity非UI方面优化

    1.DrawCall优化 1-1:Drall Call Batching (批处理) 静态批处理:场景中所有的静态...

  • 从零搭建webpack4+react+typescript+es

    处理静态资源 js的打包基本处理完了,还有图片、音频等静态资源需要处理。 依然先装依赖: 增加webpack配置:...

  • TOMCAT-性能调优

    DefaultServlet:Tomcat处理静态资源的ServeltDispatcherServlet:处理re...

  • 处理静态文件

    go语言实现http服务器时如果处理静态文件,需要用到http.ServeFile: func ServeFile...

  • 处理静态资源

    1.什么是静态资源?静态资源有哪些? 图片、脚本、样式、icon、第三方库或包等都是静态资源。 当浏览器收到HTM...

  • 静态批处理

    这是我在《Unity游戏优化 (第2版)》看的,记录一下~ Unity也提供了第二种批处理机制:静态批处理 其最大...

  • 内部固定资产交易的合并处理

    掌握了内部无形资产的交易处理,内部固定资产的交易处理也就不难掌握了。 相比于内部无形资产交易,内部固定资产交易注意...

网友评论

      本文标题:处理静态资产

      本文链接:https://www.haomeiwen.com/subject/tezmcqtx.html