使用nuxt异步加载样式

时间:2018-10-01 23:04:40

标签: javascript vue.js nuxt.js

如何将样式异步加载到网站。还是在页脚中插入样式?

我使用nuxt:2.0.0

我尝试:

  • 在webpack中添加插件:async-stylesheet-webpack-plugin。但是,要在nuxt中预渲染添加样式。
  • 创建模块。但是如何删除旧样式?

谢谢!

1 个答案:

答案 0 :(得分:0)

我开发模块:

const STYLE_REGEXP = '<link rel="stylesheet" href="(.+?)">'
const STYLE_TEMPLATE = '<link rel="preload" href="$1" as="style" onload="this.onload=null;this.rel=\'stylesheet\'">' +
  '<noscript><link rel="stylesheet" href="$1"></noscript>'

module.exports = async function asyncCss (options) {
  this.nuxt.hook('render:route', renderRouteHandle.bind(this))
}

async function renderRouteHandle (url, result) {
  result.html = result.html.replace(
    new RegExp(STYLE_REGEXP, 'g'), STYLE_TEMPLATE)
}

为我提供了帮助https://github.com/nuxt/nuxt.js/issues/2822