加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Vue处事端渲染实践 ——Web应用首屏耗时最优化方案

发布时间:2019-03-22 03:33:36 所属栏目:建站 来源:counterxing
导读:跟着各大前端框架的降生和演变,SPA开始风行,单页面应用的上风在于可以不从头加载整个页面的环境下,通过ajax和处事器通讯,实现整个Web应用拒不更新,带来了极致的用户体验。然而,对付必要SEO、追求极致的首屏机能的应用,前端渲染的SPA是糟糕的。亏得V

一个根基项目也许像是这样:

  1. src  
  2. ├── components  
  3. │   ├── Foo.vue  
  4. │   ├── Bar.vue  
  5. │   └── Baz.vue  
  6. ├── frame  
  7. │   ├── app.js # 通用 entry(universal entry)  
  8. │   ├── entry-client.js # 仅运行于赏识器  
  9. │   ├── entry-server.js # 仅运行于处事器  
  10. │   └── index.vue # 项目进口组件  
  11. ├── pages  
  12. ├── routers  
  13. └── store 

app.js是我们应用措施的「通用entry」。在纯客户端应用措施中,我们将在此文件中建设根Vue实例,并直接挂载到DOM。可是,对付处事器端渲染(SSR),责任转移到纯客户端entry文件。app.js简朴地行使export导出一个createApp函数:

  1. import Router from '~ut/router';  
  2. import { sync } from 'vuex-router-sync';  
  3. import Vue from 'vue';  
  4. import { createStore } from './../store';  
  5. import Frame from './index.vue';  
  6. import myRouter from './../routers/myRouter';  
  7. function createVueInstance(routes, ctx) {  
  8.     const router = Router({  
  9.         base: '/base',  
  10.         mode: 'history',  
  11.         routes: [routes],  
  12.     });  
  13.     const store = createStore({ ctx });  
  14.     // 把路由注入到vuex中  
  15.     sync(store, router);  
  16.     const app = new Vue({  
  17.         router,  
  18.         render: function(h) {  
  19.             return h(Frame);  
  20.         },  
  21.         store,  
  22.     });  
  23.     return { app, router, store };  
  24. }  
  25. module.exports = function createApp(ctx) {  
  26.     return createVueInstance(myRouter, ctx);   

注:在我地址的项目中,必要动态判定是否必要注册DicomView,只有在客户端才初始化DicomView,因为Node.js情形没有window工具,对付代码运行情形的判定,可以通过typeof window === 'undefined'来举办判定。

停止建设单例

如Vue SSR文档所述:

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读