Quasar prerender-spa-plugin 踩坑指南

不用quasar的,但是碰到 Unable to prerender all routes! 的可以试试

先讲正确的配置:

1.App.vue里面添加

mounted() {
    document.dispatchEvent(new Event('render-event'));//加载完发布这个事件
  }

添加位置如图

2.使用 @dreysolano/prerender-spa-plugin 而不是原版的prerender-spa-plugin

@dreysolano/prerender-spa-plugin - npm (npmjs.com)https://www.npmjs.com/package/@dreysolano/prerender-spa-plugin

原版有bug,详情见

[prerender-spa-plugin] Unable to prerender all routes! - Chrisvfritz/Prerender-Spa-Plugin (issueexplorer.com)https://issueexplorer.com/issue/chrisvfritz/prerender-spa-plugin/469

[prerender-spa-plugin]无法预渲染所有路线!将 webpack 升级到 v5+ 时 ·问题 #414 ·chrisvfritz/prerender-spa-plugin (github.com)https://github.com/chrisvfritz/prerender-spa-plugin/issues/4143.在quasar.config.js里面添加

//这3行添加在最顶上
const path = require('path')
const PrerenderSPAPlugin = require('@dreysolano/prerender-spa-plugin')
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer

//下面这个添加到

module.exports = configure(function (ctx) {
//...
build:{
//添加下面这些
extendWebpack(cfg) {
        if (ctx.prod && ctx.mode.spa) { //仅在spa生产模式下使用
          cfg.plugins.push(
            new PrerenderSPAPlugin({
              staticDir: path.join(__dirname, 'dist/spa'),
              routes: ['/', '/about', '/contact'],
              renderer: new Renderer({
                inject: {
                  foo: 'bar'
                },
                headless: true,
                renderAfterDocumentEvent: 'render-event'//第一步加载完会触发这个事件,这里抓到这个就开始爬取页面
              })
            })
          );
        }
      }

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Vue + Quasar 中,你可以使用 DOMPurify 库来过滤和验证用户输入的 HTML 内容,以确保安全性。DOMPurify 是一个处理和清理 HTML 的库,可以帮助防止跨站脚本攻击 (XSS)。 首先,你需要安装 DOMPurify 库。可以使用 npm 或 yarn 进行安装: ```bash npm install dompurify ``` 或 ```bash yarn add dompurify ``` 接下来,在你的 Vue 组件中引入 DOMPurify 并使用它来处理 HTML 内容。以下是一个示例: ```html <template> <q-input v-model="htmlContent" type="textarea" autogrow /> </template> <script> import DOMPurify from 'dompurify'; export default { data() { return { htmlContent: '<p>这是一段包含<br>换行的 HTML 代码</p>' }; }, computed: { sanitizedHtmlContent() { return DOMPurify.sanitize(this.htmlContent); } } }; </script> ``` 在上面的示例中,我们首先通过 `import` 语句引入了 DOMPurify 库。然后,我们使用 `computed` 属性创建了一个计算属性 `sanitizedHtmlContent`,它使用 DOMPurify 的 `sanitize` 方法来过滤和清理用户输入的 HTML 内容。最后,我们将过滤后的内容绑定到 `<q-input>` 组件的 `v-model` 上。 这样,用户输入的 HTML 内容将会经过 DOMPurify 的过滤处理,确保其中不包含恶意代码,并展示在 `<q-input>` 组件中。 请注意,DOMPurify 可以帮助过滤和清理大部分的恶意代码,但不能保证绝对安全。因此,仍然建议在展示用户输入的 HTML 内容时,谨慎处理并进行适当的验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值