javascript - 使用来自 node_modules 的 SVG
问题描述
我创建了一个包含所有 svg 文件的 node_module 来模块化我们的架构。
当我使用以下方法调用它时它工作正常:
<q-icon>
<svg>
<use xlink:href="~svgmodule/svgs/icons.svg#addicon"></use>
</svg>
</q-icon>
但是,当这样做时:
<q-icon>
<svg>
<use :xlink:href="'~svgmodule/svgs/icons.svg#' + iconParameter"></use>
</svg>
</q-icon>
并且iconParameter
定义如下:
iconParameter: 'addicon'
这是我得到的错误:
vue.runtime.esm.js?0594:6757 GET http://localhost:8080/~svgmodule/svgs/icons.svg net::ERR_ABORTED 404 (Not Found)
我也试过这个并且它有效:
<use xlink:href="../../../../../../../../node_modules/svgmodule/svgs/icons.svg#addicon"></use>
但是这个没有:
<use :xlink:href="'../../../../../../../../node_modules/svgmodule/svgs/icons.svg#' + iconParameter"></use>
也不
<use :xlink:href="'../../../../../../../../node_modules/svgmodule/svgs/icons.svg#addicon'"></use>
帮助!!
解决方案
vue-loader
不会将表达式转换为 webpack 模块请求。
您必须手动调用require
. 这就是vue-loader
内部所做的。
<q-icon>
<svg>
<use :xlink:href="require('~svgmodule/svgs/icons.svg') + '#' + iconParameter"></use>
</svg>
</q-icon>
推荐阅读
- mysql - 计算 A 列和 B 列包含的值也出现在 B 列和 A 列中的次数
- sql-server - 从用户定义的业务规则操作存储过程中显示 SQL Server MDS 中的自定义异常消息
- javascript - 用 JS 删除特定的数字
- python - 您如何比较三个列表并将重复项添加到一个列表而将非重复项添加到另一个列表?
- c++ - 以下代码段完成了什么?
- ios - 在 CGPath 中找不到 CGPoint
- ios - 如果已使用 LongPressGesture,如何在 @State 中存储状态
- powershell - 如何将函数的结果保存到 Powershell 中的文本文件
- c# - 使用 select2 的 DropDownListFor 非常慢
- amazon-web-services - 通过 Labmbda 代理在 API 网关中记录请求/响应