在 Webpack + VueJs 中链接样式表和要求它们有啥区别?

Posted

技术标签:

【中文标题】在 Webpack + VueJs 中链接样式表和要求它们有啥区别?【英文标题】:What is the difference between linking stylesheets and requiring them in Webpack + VueJs?在 Webpack + VueJs 中链接样式表和要求它们有什么区别? 【发布时间】:2017-08-28 21:09:58 【问题描述】:

使用 VueJs 和 Webpack 组合,我发现要包含外部样式表(例如引导程序),您可以做以下两件事之一:

在您的主 js 脚本中,您可能需要这样的样式表:

require('./assets/lib/bootstrap.min.css');

或者您可以简单地将其移动到通过 Express 访问的静态文件夹并将其链接到您的主 html 文件中:

<link rel="stylesheet" type="text/css" href="/static/css/lib/bootstrap.min.css">

这两种方法有什么区别?我不太明白在链接上使用 require 的优势(除非我猜每个组件都在本地工作?)。使用其中一个有什么优势吗?

【问题讨论】:

【参考方案1】:

要求方法:

由 webpack 捆绑 某些库可能无法开箱即用,可能需要额外配置 您可以执行各种技巧,例如将所有 CSS 提取到一个文件中 您可以决定不将它们拆分为单独的文件,您可以将所有 CSS 和 JS 放在一个文件中(非常方便的开发设置) webpack 可以将图片内嵌到 CSS 中,然后再到 JS 中 CSS 的热重载应该在这种方法中工作(对库没有用) 像库这样的大 CSS 会使 webpack 开发服务器运行缓慢,因为它每次都必须重新构建它们

链接方法:

webpack 未触及 可以从外部 CDN 提供,前提是您不需要从服务器提供服务 不灵活 效果很好

Webpack 方法为您提供了更多的灵活性和可能性——它非常适合您的代码。我认为我的经验法则是,如果您不必捆绑库,除非有理由这样做,因为您需要支付构建时间和有时额外的配置。

【讨论】:

感谢您的深入解答【参考方案2】:

第一种,样式表被webpack打包到浏览器下载的文件中,第二种,浏览器直接从服务器获取样式表。

使用 webpack 的 require 版本捆绑您的样式表可确保它们在一个请求中(连同您的页面需要呈现的所有其他资产)下载到浏览器,而不是作为单独的服务器请求下载。这可以减少网络流量并加快页面呈现速度。

【讨论】:

我不确定它是否比从任何 CDN 提供库更快。也许使用适当的名称散列+缓存如果也可能很快。 感谢您的澄清:)

以上是关于在 Webpack + VueJs 中链接样式表和要求它们有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 vuejs 和 webpack 中加载字体文件?

vuejs:vue-cli webpack模板无法解析sass导入

html如何连接外部样式表,关于html:链接到外部样式表和javascript文件

vueJS-单文件组件引入css文件

如何在 WEBPACK + VUEJS 中减小包大小

节点 webpack 开发服务器在 vuejs 项目中失败“无法获取 /”