开发者问题收集

Vue-cli 3 组件库支持 SSR

2019-12-13
1023

我正在创建一个自定义组件库,我想在多个域之间共享它。

  • 每个域都有自己的 nuxt 实例
  • 每个域都在 package.json 中注册了 my-component-lib
  • 每个域都将该库注册为插件

    //my-component-lib.js
    从“my-component-lib”导入组件
    从“vue”导入 Vue
    
    export default ({ store }) =>; {
    Vue.use(components, { store: store })
    }
    
    //nuxt.config.js
    plugins: [
    /*所需选项 1*/ '@/plugins/my-component-lib',
    /*当前使用*/ { src: '@/plugins/my-component-lib', ssr: false }
    ]
    

my-component-lib:

  • 使用 vue-cli 3 设置

  • 该库由基本 html 标签和 CSS 组成,例如 <input ></input> 。样式很重要,我想将其与组件 (extract:false) 放在一起,这样我就可以拉出单个组件,而不必担心导入 css 文件。

    //vue.config.js
    module.exports = {
    outputDir: 'dist',
    lintOnSave: false,
    css: {
    extract: false
    }
    }
    

使用 "production": "vue-cli-service build --target lib --name sc components/index.js" 进行生产设置

问题:

  1. 使用所需选项,当我运行 nuxt npm run dev 时,我在函数 addStyle (obj /* StyleObjectPart */) {.. 内得到 document is not defined sc.common.js
  2. 使用当前选项,我收到一个水化错误 (客户端渲染的虚拟 DOM 树与服务器渲染的内容不匹配。) ,如果我将组件包装在 <no-ssr> 标签中,这个问题就会得到解决,但我不想这样做。

我想编译我的组件库以与 SSR 一起使用,而不必导入大型 css 文件

1个回答

 ...
 css: {
  extract: false
 }
 ...

更改为 true

Jujubes
2020-02-14