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 相关文章推荐
JS实现让访问者自助选择网页文字颜色的方法
Feb 24 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
Nov 06 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
Nov 18 Javascript
浅谈js中function的参数默认值
Feb 20 Javascript
js以及jquery实现手风琴效果
Apr 17 Javascript
fullPage.js和CSS3实现全屏滚动效果
May 05 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
May 20 Javascript
easyui简介_动力节点Java学院整理
Jul 14 Javascript
浅谈webpack4 图片处理汇总
Sep 12 Javascript
VUE实现可随意拖动的弹窗组件
Sep 25 Javascript
微信小程序监听用户登录事件的实现方法
Nov 11 Javascript
js实现点击按钮随机生成背景颜色
Sep 05 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
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
js小技巧--自动隐藏红叉叉
2007/08/13 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
2010/08/30 Javascript
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
jquery.validate的使用说明介绍
2013/11/12 Javascript
php跨域调用json的例子
2013/11/13 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
2015/11/26 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
详谈JS中实现种子随机数及作用
2016/07/19 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
2016/08/17 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
javascript实现画板功能
2020/04/12 Javascript
vue 中的动态传参和query传参操作
2020/11/09 Javascript
Python实现的下载8000首儿歌的代码分享
2014/11/21 Python
浅谈Python中数据解析
2015/05/05 Python
玩转python爬虫之cookie使用方法
2016/02/17 Python
Pandas Shift函数的基础入门学习笔记
2018/11/16 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
2019/06/27 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
python3安装crypto出错及解决方法
2019/07/30 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
2020/02/05 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
2020/05/18 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
生物制药专业自我鉴定
2014/02/19 职场文书
受伤赔偿协议书
2014/09/24 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
为什么在foreach循环中JAVA集合不能添加或删除元素
2021/06/11 Java/Android
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技