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类,兼容IE及Firefox
Jun 23 Javascript
封装的原生javascript弹出层代码
Sep 24 Javascript
如何让DIV可编辑、可拖动示例代码
Sep 18 Javascript
jQuery的animate函数实现图文切换动画效果
May 03 Javascript
基于jQuery仿淘宝产品图片放大镜特效
Oct 19 Javascript
浏览器复制插件zeroclipboard使用指南
Mar 26 Javascript
完美实现八种js焦点轮播图(上篇)
Jul 18 Javascript
JQuery为元素添加样式的实现方法
Jul 20 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
Oct 24 Javascript
vue中接口域名配置为全局变量的实现方法
Sep 20 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
Feb 28 Javascript
微信小程序实现天气预报功能(附源码)
Dec 10 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+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
jQuery 1.2.x 升? 1.3.x 注意事项
2009/05/06 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
jQuery的css() 方法使用指南
2015/05/03 Javascript
jquery设置表单元素为不可用的简单代码
2016/07/04 Javascript
面试常见的js算法题
2017/03/23 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
nodejs微信开发之授权登录+获取用户信息
2019/03/17 NodeJs
微信小程序实现原生步骤条
2019/07/25 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
利用python模拟sql语句对员工表格进行增删改查
2017/07/05 Python
python发送邮件实例分享
2017/07/28 Python
Python实现的破解字符串找茬游戏算法示例
2017/09/25 Python
python对离散变量的one-hot编码方法
2018/07/11 Python
python 剪切移动文件的实现代码
2018/08/02 Python
python 处理string到hex脚本的方法
2018/10/26 Python
Python爬虫爬取Bilibili弹幕过程解析
2019/10/10 Python
Python3和pyqt5实现控件数据动态显示方式
2019/12/13 Python
服务器端jupyter notebook映射到本地浏览器的操作
2020/04/14 Python
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
APM Monaco中国官网:来自摩纳哥珠宝品牌
2017/12/27 全球购物
学校后勤人员职责
2013/12/27 职场文书
离婚协议书范本样本
2014/08/19 职场文书
纪念九一八事变演讲稿1000字
2014/09/14 职场文书
长江三峡导游词
2015/01/31 职场文书
监守自盗观后感
2015/06/10 职场文书
莫言诺贝尔获奖感言(全文)
2015/07/31 职场文书
2016新教师培训心得体会范文
2016/01/08 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书
python机器学习创建基于规则聊天机器人过程示例详解
2021/11/02 Python