nuxt+axios解决前后端分离SSR的示例代码


Posted in Javascript onOctober 24, 2017

​背景:由于后端程序猿通常对CSS 、JS掌握不是特别好,通常的开发模式,UI把静态html做好交给程序猿,程序猿开发,把静态html变成动态的时候经常会有各种样式错乱的问题,并且要迎合上级一天三遍样式需求,因此决定用前后端分离。考虑到网站的推广,又必须做SEO。前端框架选择VUE,解决SSR顺便选择了nuxt.js,此为背景。

一、准备工作

1、安装nodejs
2、安装vuejs
3、安装vue-cli
4、安装nuxt

二、创建nuxt项目并配置

找一个自己喜欢的目录,作为你的workspace,使用命令创建nuxt项目

1、创建项目

在该目录下,摁下shift的同时鼠标右键,进入命令行

执行创建命令:vue init nuxt/starter [firstVue] firstVue为项目名

下面会让确认项目名,项目描述等信息,因为项目名不支持大写,因此我又在创建过程中修改了一下,最终如下图

nuxt+axios解决前后端分离SSR的示例代码

2、执行install

创建完成后进入该目录下,执行npm install ,下载所有依赖的东西,此过程根据网络环境,可能需要几分钟,可以喝杯茶上个厕所。如下图所示

nuxt+axios解决前后端分离SSR的示例代码

3、执行后用IDE(个人因为同时需要做java开发,喜欢用idea,插件用着更方便)打开,工程目录如图

nuxt+axios解决前后端分离SSR的示例代码

4、运行

用idea自带的终端命令行,执行npm run dev,等待启动成功,如果不报错,访问http://localhost:3000,出现下图,则项目创建完成

nuxt+axios解决前后端分离SSR的示例代码

三、配合Axios解决SEO

1、打开index.vue,为了更清洗,保留模板内容如下

nuxt+axios解决前后端分离SSR的示例代码

注意:此处的section标签和container一定要留着不然有的内容会渲染不出来。

可能大家已经注意到此处有个api.js,我的所有接口以及Axios的配置都在这里面,提供api的统一配置,重点就在这两个文件。
1️⃣、index.vue的脚本中的asyncData,该配置为页面渲染之前调用,渲染页面时候可以用返回的数据进行渲染
2️⃣、api.js,多说无益,show code

import axios from 'axios'
import qs from 'qs'
// axios 配置
axios.defaults.timeout = 5000
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
axios.defaults.baseURL = 'https://api.nashi8.com/'

// POST传参序列化
axios.interceptors.request.use((config) => {
 if (config.method === 'post') {
  config.data = qs.stringify(config.data)
 }
 return config
}, (error) => {
 return Promise.reject(error)
})
// 返回状态判断
axios.interceptors.response.use((res) => {
 if (res.status === 200) {
  return res
 } else {
  return Promise.reject(res)
 }
}, (error) => {
 return Promise.reject(error)
})

export function fetch (url, params) {
 return new Promise((resolve, reject) => {
  axios.post(url, params)
   .then(res => {
    resolve(res.data)
   })
   .catch((error) => {
    reject(error)
   })
 })
}
export default {
 /**
  * 获取广告信息
  */
 getAds (params) {
  return fetch('/api/ad/queryADs', params)
 },
 getAreas (params) {
  return fetch('/api/area/getAll', params)
 }
}

3、在index中调用getAreas可以在控制台输出返回结果。页面渲染如下

可能这个看着乱糟糟的,看源码

nuxt+axios解决前后端分离SSR的示例代码

此时页面源码已可以查看到服务端返回的数据,至此,SSR问题已OK

源码下载

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

Javascript 相关文章推荐
获取Javscript执行函数名称的方法
Dec 22 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
May 31 Javascript
java和javascript获取word文档的书签位置对比
Jun 19 Javascript
node.js中的fs.rename方法使用说明
Dec 16 Javascript
jquery简单实现图片切换效果的方法
May 12 Javascript
js动态创建及移除div的方法
Jun 03 Javascript
js实现图片放大和拖拽特效代码分享
Sep 05 Javascript
AngularJS 视图详解及示例代码
Aug 17 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
Nov 24 Javascript
vue插件vue-resource的使用笔记(小结)
Aug 04 Javascript
使用vue中的v-for遍历二维数组的方法
Mar 07 Javascript
微信小程序如何调用新闻接口实现列表循环
Jul 02 Javascript
使用js获取伪元素的content实例
Oct 24 #Javascript
原生JS实现Ajax跨域请求flask响应内容
Oct 24 #Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
Oct 24 #Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
Oct 24 #Javascript
基于js中this和event 的区别(详解)
Oct 24 #Javascript
浅谈es6语法 (Proxy和Reflect的对比)
Oct 24 #Javascript
使用JQuery实现图片轮播效果的实例(推荐)
Oct 24 #jQuery
You might like
PHP的FTP学习(二)
2006/10/09 PHP
PHP中一个控制字符串输出的函数
2006/10/09 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
神盾加密解密教程(三)PHP 神盾解密工具
2014/06/08 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
JS优化与惰性载入函数实例分析
2017/04/06 Javascript
vue实现简单表格组件实例详解
2017/04/16 Javascript
JS中的BOM应用
2018/02/02 Javascript
Node.js 如何利用异步提升任务处理速度
2019/01/07 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
[00:34]TI7不朽珍藏III——纯金地穴编织者饰品展示
2017/07/15 DOTA
python中的内置函数getattr()介绍及示例
2014/07/20 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
实例详解Matlab 与 Python 的区别
2019/04/26 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
使用遗传算法求二元函数的最小值
2020/02/11 Python
python统计文章中单词出现次数实例
2020/02/27 Python
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
西部世纪.net笔试题面试题
2014/04/03 面试题
领导调研接待方案
2014/02/27 职场文书
煤矿安全承诺书
2014/05/22 职场文书
入股协议书范本
2014/11/01 职场文书
世界环境日活动总结
2015/02/11 职场文书
学困生转化工作总结
2015/08/13 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android