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 相关文章推荐
prototype Element学习笔记(篇一)
Oct 26 Javascript
浅析ajax请求json数据并用js解析(示例分析)
Jul 13 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
Feb 20 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
Mar 19 Javascript
JavaScript观察者模式(经典)
Dec 09 Javascript
学习javascript面向对象 理解javascript对象
Jan 04 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
Mar 06 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
Sep 01 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
Nov 22 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
Sep 03 Javascript
vue-cli3中配置alias和打包加hash值操作
Sep 04 Javascript
html中创建并调用vue组件的几种方法汇总
Nov 17 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
2019十大人气国漫
2020/03/13 国漫
做个自己站内搜索引擎
2006/10/09 PHP
php access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
jquery实现智能感知连接外网搜索
2013/05/21 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
vue.js开发环境安装教程
2017/03/17 Javascript
基于JS递归函数细化认识及实用实例(推荐)
2017/08/07 Javascript
nodejs中Express与Koa2对比分析
2018/02/06 NodeJs
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
Vue函数式组件的应用实例详解
2019/08/30 Javascript
jQuery实现简单聊天室
2020/02/08 jQuery
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
Python中的Numpy入门教程
2014/04/26 Python
Python获取远程文件大小的函数代码分享
2014/05/13 Python
详解Python编程中time模块的使用
2015/11/20 Python
简单易懂的python环境安装教程
2017/07/13 Python
python实现mysql的读写分离及负载均衡
2018/02/04 Python
django进阶之cookie和session的使用示例
2018/08/17 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
python openpyxl使用方法详解
2019/07/18 Python
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
2019/08/09 Python
html5写一个BUI折叠菜单插件的实现方法
2019/09/11 HTML / CSS
海信商城:海信电视、科龙空调、容声冰箱官方专卖
2017/02/07 全球购物
世界领先的高品质定制产品平台:Zazzle
2017/07/23 全球购物
请解释流与文件有什么不同
2016/07/29 面试题
小班重阳节活动方案
2014/02/08 职场文书
三年级评语大全
2014/04/23 职场文书
服务型党组织建设典型材料
2014/05/07 职场文书
小学生春游活动方案
2014/08/20 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers
Win11 Build 21996.1 Dev版怎么样? win11系统截图欣赏
2021/11/21 数码科技
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL