Vue 2.0 服务端渲染入门介绍
作者:弗朗西斯科 发布时间:2023-07-02 16:58:52
标签:vue,服务端渲染
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)
来源:http://www.cnblogs.com/bhaltair/p/6441302.html


猜你喜欢
- 本文实例讲述了Python3.4编程实现简单抓取爬虫功能。分享给大家供大家参考,具体如下:import urllib.requestimpo
- python实现从登录到自动发送qq邮件,供大家参考,具体内容如下qq邮箱登录注意问题账户密码登录框是写在一个iframe上的,所以我们要先
- 为什么要引入线程池如果在程序中经常要用到线程,频繁的创建和销毁线程会浪费很多硬件资源,所以需要把线程和任务分离。线程可以反复利用,省去了重复
- 1. Python中的异常栈跟踪之前在做Java的时候,异常对象默认就包含stacktrace相关的信息,通过异常对象的相关方法printS
- 导言:到目前为止,我们的教程围绕的是text数据。然而,很多应用程序既需要处理text数据,也需要处理二进制数据。比如招聘网站可能需要用户上
- 绘制八个子图import matplotlib.pyplot as pltfig = plt.figure()shape=['.
- javascript实现翻页效果:<html> <head> <title>上下翻页看 - aspxho
- 执行数据库更新update操作的时候数据库卡死了问题分析一般都是数据库事务未提交,导致update或者delete卡死。解决办法在执行完更新
- 本文实例讲述了PHP获取二叉树镜像的方法。分享给大家供大家参考,具体如下:问题操作给定的二叉树,将其变换为源二叉树的镜像。解决思路翻转二叉树
- 关于list的insert函数list#insert(ind,value)在ind元素前面插入value首先对ind进行预处理:如果ind&
- 本文实例讲述了go语言实现一个最简单的http文件服务器的方法。分享给大家供大家参考。具体实现方法如下:package mainimport
- PyCharm 是一款功能强大的 Python 编辑器,具有跨平台性,鉴于目前最新版 PyCharm 使用教程较少,为了节约时间,来介绍下p
- 一、演示效果b站:虎年烟花演示二、python代码import pygamefrom math import *from pygame.lo
- mysql复制表的几种方式 所描述的方法还请实际测试一下再使用.1、复制表结构及数据到新表CREATE TABLE 新表SELEC
- 通过使用turtle绘画象棋棋盘,供大家参考,具体内容如下# 绘制象棋棋盘import turtlet = turtle.Pen()t.wi
- 一、目标之前无意中看到有某位博主写过人像动漫化这样的文章,看着还挺好玩,所以我也想尝试一下。利用百度智能云中的人工智能,对图片进行处理达到人
- 大家在用django写完模型代码后,肯定都迫不及待的将模型翻译为迁移文件然后migrate吧,后来发现以后模型要修改的话再python ma
- 一、Python介绍从我开始学习Python时我就决定维护一个经常使用的“窍门”列表。不论何时当我看到一段让我觉得“酷,这样也行!”的代码时
- Python是一种非常富有表现力的语言。它为我们提供了一个庞大的标准库和许多内置模块,帮助我们快速完成工作。然而,许多人可能会迷失在它提供的
- 使用方法和步骤如下:step1检测是否已经启用ServiceBroker,检测方法:SelectDATABASEpRoPERTYEX(