vueJS + webpack:导入字体、CSS 和 node_modules

2024-03-01

我从 Vue.js 和 Webpack 开始,对如何正确导入和引用我的字体、CSS 和node_modules正确。

我开始使用我的应用程序vue-cli,这是最终的结构:

build
config
node_modules
src
--assets
--components
--router
static

这是我的webpack.base.conf file:

var path = require('path')
var utils = require('./utils')
var config = require('../config')
var vueLoaderConfig = require('./vue-loader.conf')

function resolve (dir) {
  return path.join(__dirname, '..', dir)
}

module.exports = {
  entry: {
    app: './src/main.js'
  },
  output: {
    path: config.build.assetsRoot,
    filename: '[name].js',
    publicPath: process.env.NODE_ENV === 'production'
      ? config.build.assetsPublicPath
      : config.dev.assetsPublicPath
  },
  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src')
    }
  },
  module: {
    rules: [
      {
        test: /\.(js|vue)$/,
        loader: 'eslint-loader',
        enforce: 'pre',
        include: [resolve('src'), resolve('test')],
        options: {
          formatter: require('eslint-friendly-formatter')
        }
      },
      {
        test: /\.vue$/,
        loader: 'vue-loader',
        options: vueLoaderConfig
      },
      {
        test: /\.js$/,
        loader: 'babel-loader',
        include: [resolve('src'), resolve('test')]
      },
      {
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('img/[name].[hash:7].[ext]')
        }
      },
      {
        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
        }
      }
    ]
  }
}

首先,放置自定义 CSS 和图像的正确位置在哪里?我目前正在把它们放进去assets/css and assets/img,分别(我创建了这些文件夹)。这是对的吗?

我还通过 NPM 安装了来自外部库(例如 Bootstrap 和 Font Awesome)的一些 CSS 和字体。他们位于node_modules.

如果我没记错的话,Webpack 会进行转换,并将这些文件复制到另一个位置。如何在我的 Vue 文件和 CSS 文件中引用它们?

Using import './assets/css/style.css'import '../node_modules/path/to/bootstrap.min.css'有效(至少在生产中),但我应该使用另一条路径吗?

在我的自定义 CSS 文件中,我使用以下方法引用了外部库中的一些字体:

src: url('/node_modules/roboto-fontface/fonts/Roboto/Roboto-LightItalic.eot')

代码可以编译,但是当我在浏览器中打开页面时,在搜索这些字体时收到 404 错误。我应该如何在自定义 CSS 中引用这些字体?


首先,放置自定义 css 和图像的正确位置在哪里?我目前将它们分别放入 asset/css 和 asset/img 中(我创建了这些文件夹)。这是对的吗?

这是一个主观问题,但简短的答案是肯定的。 cli 工具已经为您创建了这个,并在 Webpack 配置文件中定义了一些内容,那么为什么不使用它呢?

使用 import './assets/css/style.css'import '../node_modules/path/to/bootstrap.min.css' 可以工作(至少在生产中),但是我应该使用另一个路径吗?

Webpack 将 css 嵌入到它的 JS 文件中,因此如果您不导入它,Webpack 将不知道它。 这是动态加载图像的示例

    <ul id="albums">
    <li v-for="album in albums">
        <img :src="LoadImage(album.data.imagefile)" />
    </li>
</ul>

如果您只是将 src 绑定到图稿文件,它将无法加载它,因此我们将图像文件名传递给如下所示的方法

LoadImage(filename) {
        const image = require('@/assets/img/' + filename)
        return image
    }

现在在方法中,我们从资产文件夹加载图像(使用在resolve.alias下的webpack.base.conf文件中配置的@符号)

所以,是的,使用 import/require 函数是 Webpack 了解文件的方法。

在我的自定义 css 文件中,我使用以下方法引用了外部库中的一些字体:

src: url('/node_modules/roboto-fontface/fonts/Roboto/Roboto-LightItalic.eot') 代码可以编译,但是当我在浏览器中打开页面时,在搜索这些字体时收到 404 错误。我应该如何在自定义 CSS 中引用这些字体?

最好将 dist 文件夹中所需的所有内容复制到 src 文件夹中。我不太确定,从未尝试过,但查看 webpack.prod.conf 文件,它看起来只会从 src/assets 文件夹复制文件。 关于未加载字体,这有点不同,因为 url-loader 将处理文件,因此您必须从浏览器的角度考虑它,并将其像 url 路径一样引用。 这是我的一个组件中的东西

@font-face {
  font-family: BebasNeue;
  src: url('./assets/fonts/BebasNeue.otf');
}

看看我如何没有使用 @ 符号从 src 文件夹中引用它?不需要网址。

我猜您已经回答了这个问题,如果没有,希望有帮助! 您可以在这里提问http://chat.vuejs.org/ http://chat.vuejs.org/并从社区和核心团队获得答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vueJS + webpack:导入字体、CSS 和 node_modules 的相关文章

随机推荐

  • 如何使用 angular_devise 保留全局当前用户直到注销?

    如何创建自己的全局可访问的服务 该服务将通过以下方式调用服务器currentUser 仅在页面加载时一次 如果用户已登录 则保留它并向控制器或状态提供数据 直到注销 现在我在许多状态或控制器中多次解析currentUser 我在文档中找到
  • 如何检测用户何时使用模拟位置 Chrome 浏览器[重复]

    这个问题在这里已经有答案了 有没有办法检测用户何时在 Chrome 浏览器 移动和桌面 中模拟他的位置 尝试过谷歌搜索 但我只看到如何实际模拟以及如何在本机移动应用程序中检测 参考这个问题 https stackoverflow com q
  • Execvp 不会对未知命令返回错误

    我有以下代码 用于分叉子级并执行命令 a 这是一个未知命令 但是 execvp 不会返回错误 而是打印 成功 当文件 a 不存在时 如果我执行 mv a b 也会发生同样的事情 我应该如何捕获并处理这些错误 int main int arg
  • java.lang.ClassCastException:android.app.ContextImpl

    我正在尝试将 ScoreNinja 融入我的小游戏中 http scoreninja appspot com http scoreninja appspot com 但是 每次都会抛出运行时异常 05 24 23 22 59 888 ERR
  • Angularjs 1.X 相当于 Angular 2 HostBinding 和 HostListener

    我目前正在将一些 ng 1 X 元素指令迁移到 1 5 组件 格式 我的指令都处于 replace true 模式 其中很多指令的根元素上都有诸如 ng class 或 ng click 之类的内容 使用新的 component 格式 re
  • 如何在不依赖 JAX-RS 实现的情况下捕获 404 (NotFoundException)?

    通常一个用途ExceptionMapper捕获异常 记录它们 返回自定义的错误消息 然而 虽然 JAX RS 提供了NotFoundException在其 api 中 实现 Jeresy CXF 提供了自己的 NotFoundExcepti
  • 为开发环境分配域名localhost

    我正在构建一个网站 并且不想将网站从指向重新配置为http 127 0 0 1 to http www example com 此外 我使用的证书当然是用正确的域名制作的www example com但我的测试环境会调用127 0 0 1这
  • Apple Web Clip(Apple Touch 图标)不适用于采用 HTTPS 的网站

    当我为网站启用 HTTPS 时 我很难在 Safari 中的 添加书签 功能中显示 Apple Touch 图标 我可以使用 添加到主页 选项来使其工作 所以我不确定是否对 添加书签 进行了不同的调用 我已经按照苹果文档 https dev
  • 无法在应用程序中使用表情符号:拒绝提交到AppStore

    有谁知道是否所有表情符号都是苹果公司的财产 我试图在我的应用程序中使用其中的很多 大约 80 个 作为文本 但应用程序被拒绝 我问是否有一个我不能使用的表情符号列表 但没有得到答案 如果你已经被 AppStore 提交过程拒绝 你就会知道它
  • 如何优化画布上的动画? HTML 5

    我面临着一个问题 随着各种图片向左 向右 向上和向下移动 画布上的动画速度会减慢 我需要有关如何优化动画的建议 重要的是动画适用于所有主要浏览器 特别是 Chrome Firefox 和 Internet Explorer 动画可以优化吗
  • 如果存在依赖,编译器能否正确处理静态变量的初始化顺序?

    如果存在依赖 编译器能否正确处理静态变量的初始化顺序 例如 我有 a h struct A static double a a cpp include a h double A a 1 b h struct B static double
  • 从 DocumentDb 中删除特定文档

    以下代码检索具有特定 jobId 的所有 CrawlResult 文档 var result from c in documentDb CreateDocumentQuery
  • 特定域的 htaccess 标头?

    我有三个环境 env com env uat com env pre com 所有三个页面都运行相同的代码 我希望 env uat com 和 env pre com 都在 htaccess 中获取此内容 Header set X Robo
  • 角度隐藏忽略

    我试图在 Angular2 中使用隐藏属性 当我包含改变 DIV 显示的样式时 隐藏属性将被忽略 当运行下面的代码时 两个 div 都会显示 当我删除 displayInline 类时 第一个 DIV 被隐藏 第二个 DIV 被显示 如预期
  • TF400324:在 Visual Studio 2012 中,Team Foundation 服务无法从服务器 获得

    当我在 Visual Studio 2012 Professional 中打开现有解决方案时 出现上述错误 这曾经有效 但在重建计算机后出现了一些问题 我已经安装了 Visual Studio 2015 Community 并且可以连接到相
  • 使用反向 Y 轴计算 2 点之间的度数

    我正在使用 javascript canvas 创建一个简单的 2D 游戏 我需要计算出某个物体相对于我的位置的角度 所以 假设我在 10 10 并且物体在 10 5 这将导致 90 度 因为正 Y 向下 负 Y 向上 10 10 与 10
  • 在 PHP 中加密,在 C# (WP7 / Silverlight) 中使用 AES / Rijndael 解密

    我在我的 Android 应用程序中使用了用 PHP 编写的 REST 服务 没有遇到太多麻烦 现在我尝试在 Windows Phone 应用程序中使用它 我已经快疯了 到目前为止我所知道的 Silverlight 将仅接受 CBC 模式下
  • 用于将请求参数映射到对象的 Java 库

    我过去在一个项目中使用过 stipes 它有一个很棒的 TypeConverter 库 可以获取请求参数并将它们路由到 JavaBeans 中 它甚至可以处理映射和数组 例如 class A private int num private
  • 为什么我们应该复制块而不是保留?

    我最近在使用 Facebook 的应用程序切换块时遇到了一个问题 我需要在 Facebook 登录后调用一个块 首先 当应用程序切换回来时 我的块被破坏了 因为它在堆栈上 所以我决定保留它 但这没有用 我把这个问题搞砸了 我找到了一个解决方
  • vueJS + webpack:导入字体、CSS 和 node_modules

    我从 Vue js 和 Webpack 开始 对如何正确导入和引用我的字体 CSS 和node modules正确 我开始使用我的应用程序vue cli 这是最终的结构 build config node modules src asset