Vue处事端渲染实践 ——Web应用首屏耗时最优化方案
当编写纯客户端 (client-only) 代码时,我们风俗于每次在新的上下文中对代码举办取值。可是,Node.js 处事器是一个恒久运行的历程。当我们的代码进入该历程时,它将举办一次取值并留存在内存中。这意味着假如建设一个单例工具,它将在每个传入的哀求之间共享。如根基示例所示,我们为每个哀求建设一个新的根 Vue 实例。这与每个用户在本身的赏识器中行使新应用措施的实例相同。假如我们在多个哀求之间行使一个共享的实例,很轻易导致交错哀求状态污染 (cross-request state pollution)。因此,我们不该该直接建设一个应用措施实例,而是应该袒露一个可以一再执行的工场函数,为每个哀求建设新的应用措施实例。同样的法则也合用于 router、store 和 event bus 实例。你不该该直接从模块导出并将其导入到应用措施中,而是必要在 createApp 中建设一个新的实例,并从根 Vue 实例注入。 如上代码所述,createApp要领通过返回一个返回值建设Vue实例的工具的函数挪用,在函数createVueInstance中,为每一个哀求建设了Vue,Vue Router,Vuex实例。并袒露给entry-client和entry-server模块。 在客户端entry-client.js只需建设应用措施,而且将其挂载到DOM中:
处事端entry-server.js行使default export 导出函数,并在每次渲染中一再挪用此函数。此时,除了建设和返回应用措施实例之外,它不会做太多工作 - 可是稍后我们将在此执行处事器端路由匹配和数据预取逻辑:
在处事端用vue-router支解代码 与Vue实例一样,也必要建设单例的vueRouter工具。对付每个哀求,都必要建设一个新的vueRouter实例:
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |