(vue)如何根据后端返回的文件路径 import 样式文件?

2019-03-29 13:57:19 +08:00
 waiaan

一开始的时候发请求给后端,后端返回要 css 样式文件名或者路径,然后需要引入这个 css 文件,除了创建 link 标签,能不能在 vue 里 import 这个文件?、 谢谢!

3521 次点击
所在节点    JavaScript
17 条回复
Sean94
2019-03-29 14:11:26 +08:00
Promise.all([import('xxxx'), import('xxx')]).then(() => {})
Sean94
2019-03-29 14:12:21 +08:00
murmur
2019-03-29 14:13:34 +08:00
import 是会被 webpack 翻译成他自己的 template 的 这东西还挺麻烦 我们最近再改这个
甚至在打包的时候就会被抽取到 vendor 或者 css 里,所以你要动态加载就老老实实自己放 style 标签吧
onaug6th
2019-03-29 14:14:47 +08:00
在 JS 中 import(路径) 可以达到效果
waiaan
2019-03-29 14:36:53 +08:00
@Sean94 谢谢,这个方法似乎不可行。
@onaug6th 能否具体说一下?谢谢。
TwoDays91
2019-03-29 14:48:26 +08:00
现在 js import 可以直接加载 css 文件了? webpack 打包 import 会转为一个动态加载机制,一般情况下也只用作本地文件的加载,像你这种从后端取的文件地址说不定还有问题,就用 style 标签蛮好,大不了封装一层。
rabbbit
2019-03-29 14:51:47 +08:00
一般写道里边的 import 都是这样的:
mounted() {
...if(isIos) {
......import('./newIe6.css')
...}
}
不过这好像是被 webpack 打包起来的,在线的话用不了
wednesdayco
2019-03-29 18:46:17 +08:00
wednesdayco
2019-03-29 18:52:08 +08:00
不过针对 non-JavaScript MIME type 的文件是不能使用该方法的,你后端的文件 MIME 需要修改。
murmur
2019-03-29 18:54:47 +08:00
@wednesdayco 这个是被改成内部函数了 前几天刚研究过这部分代码 有个 jsonptemplate 里写了怎么转换 webpack 会把每个文件根据路径转成 id 然后记录哪个文件加载过没有 所以这依存关系还挺麻烦
wednesdayco
2019-03-29 19:06:46 +08:00
@murmur 从原理上来说是可行的- -但是这个实现实在是太绕了,不如直接 link ……如果非得要在 vue 里引用后端传入的 css 怕是要做不少工作(最好还是 css in javascript 吧)。
shynome
2019-03-29 19:10:39 +08:00
前台做方法映射
{
'path':()=>import('path')
}
learnshare
2019-03-29 19:12:26 +08:00
DOM 加 link 比较快吧
yikuo
2019-03-30 00:28:18 +08:00
可以用 vue-meta
waiaan
2019-03-30 11:19:58 +08:00
@wednesdayco
@learnshare
@TwoDays91
@murmur
css 放 link 里,不能覆盖 vue 组件里的样式?
TwoDays91
2019-03-30 11:27:51 +08:00
拿得看你组件样式有没有使用 scoped,或两者 css 先后顺序决定。
learnshare
2019-03-30 11:39:59 +08:00
@waiaan 取决于样式的写法,位置,优先级等条件

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/549915

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX