nuxtjs: https://zh.nuxtjs.org/

SSR:server side render

1、使用模板新建项目

vue init nuxt-community/starter-template <project-name>
cnpm install
npm run dev

2、配置axios

https://github.com/nuxt-community/axios-module

cnpm install @nuxtjs/axios

nuxt.config.js

module.exports = {
  modules: [
    '@nuxtjs/axios',
  ],

  axios: {
    // proxyHeaders: false
  }
}

3、开发页面

新建页面, 会自动生成路由
pages/demo.vue

<template>
  <h1>{{message}}: {{name}}</h1>
</template>

<script>
export default {
  data() {
    return {
      message: "hello"
    };
  },

  // 向后端请求数据
  async asyncData({app, params, query}) {
    /**
    参数
    ctx.app; // 根实例
    ctx.route; // 路由实例
    ctx.params; //路由参数
    ctx.query; // 路由问号后面的参数
    ctx.error; // 错误处理方法
     */
    let url = "http://127.0.0.1:5000/";
    const res = await app.$axios.$post(url, query);
    console.log(res);
    return res.data;

  },

  // 配置SEO页面元数据
  head: {
    title: "关于我们",
    meta: [
      { hid: "keywords", name: "keywords", content: "关键字" },
      { hid: "description", name: "description", content: "页面描述" }
    ]
  }
};
</script>

4、后端服务

使用Flask搭建简单后台服务,提供数据

# -*- coding: utf-8 -*-
from flask import Flask, jsonify, request

app = Flask(__name__)


# 服务端接收post的json数据,并返回给客户端
@app.route("/", methods=["POST"])
def index():
    data = {
        "msg": "ok",
        "code": 0,
        "data": request.json
    }

    return jsonify(data)


if __name__ == '__main__':
    app.run(debug=True)

5、访问页面

http://localhost:3000/demo/?name=Tom
Vue服务端渲染Nuxt.js实例_Vue
查看页面源码,已经包含正确的内容

Vue服务端渲染Nuxt.js实例_Vue_02

打包

# 打包
npm run build

# 本地跑
npm start

部署参考文章:
nuxt.js部署vue应用到服务端过程

参考
Nuxt.js 基础入门教程
Nuxt.js实战和配置