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实现页面定时跳转总结篇
Sep 21 Javascript
利用JS进行图片的切换即特效展示图片
Dec 03 Javascript
jQuery中选择器小问题(新人难免遇到)
Mar 31 Javascript
js对象内部访问this修饰的成员函数示例
Apr 27 Javascript
Jquery 整理元素选取、常用方法一览表
Nov 26 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Dec 14 Javascript
js实现文字跑马灯效果
Feb 23 Javascript
jquery-file-upload 文件上传带进度条效果
Nov 21 jQuery
Angular之toDoList的实现代码示例
Dec 02 Javascript
vue+vuex+axios实现登录、注册页权限拦截
Mar 09 Javascript
react native 仿微信聊天室实例代码
Sep 17 Javascript
vue实现禁止浏览器记住密码功能的示例代码
Feb 03 Vue.js
使用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 sprintf()函数用例解析
2011/05/18 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
jQuery 顺便学习下CSS选择器 奇偶匹配nth-child(even)
2010/05/24 Javascript
JS实现简单的图书馆享元模式实例
2015/06/30 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
2019/01/23 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
了解不常见但是实用的Python技巧
2019/05/23 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
2021年值得向Python开发者推荐的VS Code扩展插件
2021/01/25 Python
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
简历自荐信
2013/12/02 职场文书
交通事故检查书范文
2014/01/30 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
公安派出所所长四风问题个人对照检查材料
2014/10/04 职场文书
行政上诉状范文
2015/05/23 职场文书
给朋友的赠语
2015/06/23 职场文书
美容院管理规章制度
2015/08/05 职场文书
高中班主任心得体会
2016/01/07 职场文书
PostgreSQL存储过程实用脚本(二):创建函数入门
2021/04/05 PostgreSQL