Vue 2.0 服务端渲染入门介绍


Posted in Javascript onMarch 29, 2017

1 什么是服务端渲染 SSR

server side render

就是通过后端吐模板,而不是通过前端ajax获取数据,拼接字符串。

2 为什么需要SSR

需要SEO,因为爬虫不会等待ajax结果。

客户端网络慢,加载速度慢,影响用户体验。

3 另一种解决办法 预渲染

不是一次性下载整个单页应用,预渲染只是在构建时为了特定的路由生成特定的几个静态页面

你用webpack可以很简单地通过prerender-spa-plugin来添加预渲染

 4 NodeJS编写Vue的SSR

首先npm install --save-dev的有 vue express vue-server-renderer

// server.js

'use strict';

var fs = require('fs');
var path = require('path');

global.Vue = require('vue')

var layout = fs.readFileSync('./index.html', 'utf8')

var renderer = require('vue-server-renderer').createRenderer()

var express = require('express')
var server = express()

server.use('/assets',express.static(
  path.resolve(__dirname,'assets')
))


server.get('*',function(req, res){

  // 将Vue实例渲染成HTML
  renderer.renderToString(
    // 创建一个应用实例
    require('./assets/app')(),

    // 处理渲染结果
    function(error, html){
      if(error){
        console.error(error);
        return res
          .status(500)
          .send('Server Error')
      }
      // 发送布局和HTML文件
      res.send(layout.replace('<div id="app"></div>', html))

    }
  )
})


server.listen(5000, function(error){
  if(error) throw errorr;
  console.log('Server is running at localhost:5000')
})
// index.html 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script src="" charset="utf-8"></script>
  <script src="/assets/vue.js" charset="utf-8"></script>
</head>
<body>

  <div id="app"></div>
  <script src="/assets/app.js" charset="utf-8"></script>
  <script type="text/javascript">app.$mount('#app')</script>


</body>
</html>
// assets/app.js

(function() {
  'use strict'
  var createApp = function() {
    return new Vue({
      template: '<div id="app">你已经在这花了 {{ counter }} 秒。</div>',
      data: {
        counter: 0
      },
      created: function() {
        var vm = this;
        setInterval(function(){
          vm.counter += 1;
        },1000)
      }
    })
  }

  // 暴露接口
  if(typeof module !== 'undefined' && module.exports) {
    module.exports = createApp
  } else {
    this.app = createApp()
  }

}).call(this)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js取两个数组的交集|差集|并集|补集|去重示例代码
Aug 07 Javascript
jQuery中获取checkbox选中项等操作及注意事项
Nov 24 Javascript
javascript中caller和callee详解
Aug 10 Javascript
第一次接触神奇的Bootstrap表单
Jul 27 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
May 07 Javascript
Node.js 异步异常的处理与domain模块解析
May 10 Javascript
node中Express 动态设置端口的方法
Aug 04 Javascript
ExtJs整合Echarts的示例代码
Feb 27 Javascript
CSS3 动画卡顿性能优化的完美解决方案
Sep 20 Javascript
Jquery和CSS实现选择框重置按钮功能
Nov 08 jQuery
微信小程序中插入激励视频广告并获取收益(实例代码)
Dec 06 Javascript
antd多选下拉框一行展示的实现方式
Oct 31 Javascript
vue2组件实现懒加载浅析
Mar 29 #Javascript
整理关于Bootstrap排版的慕课笔记
Mar 29 #Javascript
如何使用Bootstrap创建表单
Mar 29 #Javascript
Bootstrap 响应式实用工具实例详解
Mar 29 #Javascript
jQuery日程管理控件glDatePicker用法详解
Mar 29 #jQuery
利用js查找数组中指定元素并返回该元素的所有索引示例
Mar 29 #Javascript
jQuery实现简单漂亮的Nav导航菜单效果
Mar 29 #jQuery
You might like
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
jquery实现select选中行、列合计示例
2014/04/25 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
json的使用小结
2016/06/08 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
详解Angular CLI + Electron 开发环境搭建
2017/07/20 Javascript
JavaScript事件处理程序详解
2017/09/19 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
2020/08/14 Javascript
vue 项目引入echarts 添加点击事件操作
2020/09/09 Javascript
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
Python3搜索及替换文件中文本的方法
2015/05/22 Python
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
pytorch训练imagenet分类的方法
2018/07/27 Python
对python字典过滤条件的实例详解
2019/01/22 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
X/HTML5 和 XHTML2
2008/10/17 HTML / CSS
英国的领先快速时尚零售商:In The Style
2019/03/25 全球购物
adidas泰国官网:adidas TH
2020/07/11 全球购物
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
什么是SCM(软件配置管理)
2014/08/16 面试题
公司司机岗位职责范本
2014/03/03 职场文书
预备党员承诺书
2014/03/25 职场文书
工作岗位说明书模板
2014/05/09 职场文书
单位绩效考核方案
2014/05/11 职场文书
考试作弊检讨书
2014/10/21 职场文书
置业顾问岗位职责
2015/02/09 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
英语通知范文
2015/04/22 职场文书
校长新学期致辞
2015/07/30 职场文书
Nginx动静分离配置实现与说明
2022/04/07 Servers