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 相关文章推荐
javascript第一课
Feb 27 Javascript
javascript之解决IE下不渲染的bug
Jun 29 Javascript
!DOCTYPE声明对JavaScript的影响分析
Apr 12 Javascript
js 弹出框 替代浏览器的弹出框
Oct 29 Javascript
js表头排序实现方法
Jan 16 Javascript
微信小程序 数据绑定详解及实例
Oct 25 Javascript
vue.js单页面应用实例的简单实现
Apr 10 Javascript
Angular4 中常用的指令入门总结
Jun 12 Javascript
js实现按钮开关单机下拉菜单效果
Nov 22 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
Mar 28 Javascript
微信小程序之左右布局的实现代码
Dec 13 Javascript
JavaScript布尔运算符原理使用解析
May 06 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中PDO的错误处理
2011/09/04 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
2020/03/20 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
laravel 框架执行流程与原理简单分析
2020/02/01 PHP
javascript之锁定表格栏位
2007/06/29 Javascript
js同时按下两个方向键
2007/12/01 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
2014/04/23 Javascript
javascript检查浏览器是否支持flash的实现代码
2014/08/14 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
2018/10/09 Javascript
微信小程序实现时间预约功能
2018/11/27 Javascript
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
[01:22:19]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
Python读写Excel文件的实例
2013/11/01 Python
跟老齐学Python之开始真正编程
2014/09/12 Python
Python随机生成带特殊字符的密码
2016/03/02 Python
Python通过属性手段实现只允许调用一次的示例讲解
2018/04/21 Python
Python中XlsxWriter模块简介与用法分析
2018/04/24 Python
python使用xlrd和xlwt读写Excel文件的实例代码
2018/09/05 Python
python实现对任意大小图片均匀切割的示例
2018/12/05 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
Python 切分数组实例解析
2019/11/07 Python
vscode调试django项目的方法
2020/08/06 Python
GUESS德国官网:美国牛仔服装品牌
2017/02/14 全球购物
亚马逊中国官方网站:amazon.cn
2017/05/25 全球购物
高校毕业生自我鉴定
2013/10/27 职场文书
房地产开发计划书
2014/01/10 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
教育项目合作协议书格式
2014/10/17 职场文书
酒店辞职书怎么写
2015/02/26 职场文书
幼儿园心得体会范文
2016/01/21 职场文书