Vue.js 不带SSR的Vuestrefront-未触发异步数据

Vue.js 不带SSR的Vuestrefront-未触发异步数据,vue.js,webpack,nuxt.js,webpack-dev-server,vue-storefront,Vue.js,Webpack,Nuxt.js,Webpack Dev Server,Vue Storefront,我对Vuestrefront重建的过期性很差,因为代码中的每一个更改都需要25秒。所以我决定关闭SSR(用于开发),现在大约需要3-4秒! …但现在VueJs生命周期存在问题 我使用什么 官方Vuestrefront回购协议: 店面安装了:纱线、演示API、SSR端点和默认主题。一切都很完美,但发展缓慢 优化的网页包配置: 在自述文件中的教程之后,一切正常,代码中的每一个更改都是在4秒内构建的。成功建立自动刷新网站与热重新加载 有什么问题吗? 我无法直接打开任何链接(指向产品、类别等的链接)

我对Vuestrefront重建的过期性很差,因为代码中的每一个更改都需要25秒。所以我决定关闭SSR(用于开发),现在大约需要3-4秒! …但现在VueJs生命周期存在问题

我使用什么

  • 官方Vuestrefront回购协议:
  • 店面安装了:纱线、演示API、SSR端点和默认主题。一切都很完美,但发展缓慢

  • 优化的网页包配置:
  • 在自述文件中的教程之后,一切正常,代码中的每一个更改都是在4秒内构建的。成功建立自动刷新网站与热重新加载


    有什么问题吗?

    • 我无法直接打开任何链接(指向产品、类别等的链接),也无法刷新/重新加载任何页面
    我发现在这些情况下,跳过了函数
    asyncData
    来预加载数据。例如,产品页面: 当我从主页上单击产品详细信息时,会触发函数
    asyncData
    ,并且正确加载了产品页面,但跳过了刷新(F5)

    重新加载后的产品页面:

    在创建之前,我尝试将代码从
    asyncData
    重新实现到方法
    ,但仍然不起作用


    我的问题

    如何强制调用函数
    asyncData

    …还是有办法重新配置网页包以使其正常工作


    …还是有其他方法可以更快地重建Vuestrefont?

    感谢您试用我的网页配置。请注意,它远不是完美的,它需要头脑的协作才能使它在所有情况下都能工作

    正如您在代码中已经看到的:Vue元插件使用
    metaInfo
    方法提供标记。
    Product
    组件再次调用可计算的
    getCurrentProduct
    computable,它再次调用Vuex getter
    Product/getCurrentProduct
    。这同样需要执行
    asyncData()
    方法,以便从ElasticSearch或GraphQL加载数据

    asyncData()
    通常在浏览器中异步执行(duh!),或者在SSR工作时在服务器上同步执行。这意味着在默认的VSF1情况下,调用
    This.getCurrentProduct.meta_title
    (在
    metaInfo
    方法中)将永远不会失败,因为它将依赖于Vuex中以前已同步加载的内容。但是,如果没有SSR,这将导致代码问题,因为执行
    metaInfo
    标记后,Vuex存储将填满。因此,重写
    metaInfo
    方法可能更有意义,如下所示:

    metaInfo(){
    const storeView=currentStoreView()
    返回{
    标题:this.getCurrentProduct&&htmlCode(this.getCurrentProduct.meta|title | | this.getCurrentProduct.name),
    meta:(this.getCurrentProduct&&this.getCurrentProduct.meta_description);[{vmid:'description',name:'description',content:htmlDecode(this.getCurrentProduct.meta_description)}]:[]
    }
    
    我自己还没有尝试过这段代码,但希望它有意义。这将证明默认主题中提供的许多组件(您很可能会自定义这些组件,对吧?)都是只考虑SSR编写的(这对我来说是有意义的)


    正如您所说,另一种尝试可能是对每个组件执行
    asyncData
    已经包含了这方面的工作-只需扫描代码中的单词
    asyncData
    。也许您可以切换配置选项
    ExecuteMexedinAsyncData
    ,看看这是否会改变情况?

    找到了解决方法,热重新加载现在需要大约2秒。 你可以查看我的请求

    它根本没有禁用SSR,那么问题的根本原因是什么? 在主Webpack进程内进行类型检查,因此基本上通过将其移动到另一个进程,它的编译速度将大大加快

    本质上,通过将
    transpileOnly:true
    传递给ts-loader,它将禁用类型检查,并且通过使用fork-ts-checker,它将在单独的进程中在您的开发环境中工作,因此您可以从ts中获得最大的好处

    对于该实施,我基本上遵循了来自的建议


    告诉我它是怎么回事,在我的情况下,它大大提高了我的工作效率:)。

    非常感谢您的帮助。File
    core/client entry.js
    是解决方案。我评论了这句话:它工作起来很有魅力!很高兴听到。通过评论这句话,似乎执行了更多的代码-不仅是
    asyncData
    位,而且是ro我会在将来的某个时候研究这件事,看看是否可以用更聪明的方式来做。但在这期间,我会忙于生活:)