传统的Web产品一般使用JSONP或者AJAX这样的方式与服务端通讯,但在单页Web应用中,有很大一部分采用WebSocket这样的实时通信方式。php
WebSocket与传统基于HTTP的通讯机制相比,有很大的优点。它可让服务端很便利地使用反向推送,前端只响应确实产生业务数据的事件,减小一遍又一遍无心义的AJAX轮询。html
因为WebSocket只在比较先进的浏览器上被支持,有一些库提供了在不一样浏览器中的兼容方案,好比socket.io,它在不支持WebSocket的浏览器上会降级成使用AJAX或JSONP等方式,对业务代码彻底透明、兼容。前端
在单页应用中,由于页面的集成度高,全部页面汇集到同一做用域,样式的规划也变得重要了。
样式规划主要是几个方面:vue
传统Web页面的特色是元素多,可是层次少,单页应用会有些不一样。react
在单页应用中,须要提早为各类UI组件规划堆叠次序,也就是z-index,好比说,咱们可能会有各类弹出对话框,浮动层,它们可能组合成各类堆叠状态。新的对话框的z-index须要比旧的高,才能确保盖在它上面。git
<script src="https://unpkg.com/vue/dist/vue.js"></script> <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script> <div id="app"> <h1>Hello App!</h1> <p> <!-- 使用 router-link 组件来导航. --> <!-- 经过传入 `to` 属性指定连接. --> <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 --> <router-link to="/foo">Go to Foo</router-link> <router-link to="/bar">Go to Bar</router-link> </p> <!-- 路由出口 --> <!-- 路由匹配到的组件将渲染在这里 --> <router-view></router-view> </div>
// 0. 若是使用模块化机制编程,导入Vue和VueRouter,要调用 Vue.use(VueRouter) // 1. 定义(路由)组件。 // 也能够从其余文件 import 进来 const Foo = { template: '<div>foo</div>' } const Bar = { template: '<div>bar</div>' } // 2. 定义路由 // 每一个路由应该映射一个组件。 其中"component" 能够是 // 经过 Vue.extend() 建立的组件构造器, // 或者,只是一个组件配置对象。 const routes = [ { path: '/foo', component: Foo }, { path: '/bar', component: Bar } ] // 3. 建立 router 实例,而后传 `routes` 配置 // 你还能够传别的配置参数, 不过先这么简单着吧。 const router = new VueRouter({ routes // (缩写)至关于 routes: routes }) // 4. 建立和挂载根实例。 // 记得要经过 router 配置参数注入路由, // 从而让整个应用都有路由功能 const app = new Vue({ router }).$mount('#app') // 如今,应用已经启动了!