Nuxt 按需引入 iview 3 提示:The client-side rendered virtual DOM tree

发布于 2022-09-12 00:49:32 字数 1440 浏览 20 评论 0

我尝试在 Nuxt 2 中 按需引入 iview 3 插件,下面是我的配置过程

nuxt.config.js

plugins: [
    { src:  '@/plugins/iview', ssr:  false  },
],
build: {
    babel: {
        "plugins": [["import",  {

            "libraryName":  "iview",

            "libraryDirectory":  "src/components"

        }]]
    }
},

plugins/iview.js

import  Vue  from  'vue'
import  { Button }  from  'iview';

Vue.component('Button',  Button);

page/test.vue 渲染一个 Button 按钮测试

<template>
    <Button>测试按钮</Button>
</template>

npm run dev 以后出现了如下两种现象:

  1. 按钮分两个阶段渲染出来,先渲染出原生 button 按钮,没有样式,然后才渲染出 iview 的Button 按钮(这种情况只出现在刷新页面时,如果通过路由跳转进入页面则直接渲染出 iview 按钮)

    渲染阶段1:
    渲染阶段1.png
    渲染阶段2:
    QQ截图20200127103245.png

  2. 控制台发出警告,提示客户端渲染与服务端渲染 DOM 不匹配:QQ截图20200127103259.png

尝试搜寻了一些答案,大部分建议将 ssr 属性变为 true: { src: '@/plugins/iview', ssr: false }, -> { src: '@/plugins/iview', ssr: true}, 但是如果这样设置的话,项目启动提示找不到 import:QQ截图20200127105957.png

后面我又尝试利用 element-ui 来测试按需加载功能,没有出现如上的现象,难道 iview 3 目前还是不能完全支持 ssr 吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

Saygoodbye 2022-09-19 00:49:32

已解决,
build 需同步配置

build: {
    transpile: [/^iview/],
}
知足的幸福 2022-09-19 00:49:32

我也遇到过这个问题,不过我把在beforeMount里面请求的列表数据换到mounted里面就消失了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文