Vue.js 不带SSR的Vuestrefront-未触发异步数据
我对Vuestrefront重建的过期性很差,因为代码中的每一个更改都需要25秒。所以我决定关闭SSR(用于开发),现在大约需要3-4秒! …但现在VueJs生命周期存在问题 我使用什么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秒内构建的。成功建立自动刷新网站与热重新加载 有什么问题吗? 我无法直接打开任何链接(指向产品、类别等的链接)
有什么问题吗?
- 我无法直接打开任何链接(指向产品、类别等的链接),也无法刷新/重新加载任何页面
asyncData
来预加载数据。例如,产品页面:
当我从主页上单击产品详细信息时,会触发函数asyncData
,并且正确加载了产品页面,但跳过了刷新(F5)
重新加载后的产品页面:
在创建之前,我尝试将代码从asyncData
重新实现到方法,但仍然不起作用
我的问题
如何强制调用函数asyncData
…还是有办法重新配置网页包以使其正常工作
…还是有其他方法可以更快地重建Vuestrefont?感谢您试用我的网页配置。请注意,它远不是完美的,它需要头脑的协作才能使它在所有情况下都能工作
正如您在代码中已经看到的:Vue元插件使用metaInfo
方法提供标记。Product
组件再次调用可计算的getCurrentProduct
computable,它再次调用Vuex getterProduct/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中获得最大的好处
对于该实施,我基本上遵循了来自的建议
告诉我它是怎么回事,在我的情况下,它大大提高了我的工作效率:)。非常感谢您的帮助。Filecore/client entry.js
是解决方案。我评论了这句话:它工作起来很有魅力!很高兴听到。通过评论这句话,似乎执行了更多的代码-不仅是asyncData
位,而且是ro我会在将来的某个时候研究这件事,看看是否可以用更聪明的方式来做。但在这期间,我会忙于生活:)