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 相关文章推荐
jquery验证表单中的单选与多选实例
Aug 18 Javascript
HTML页面登录时的JS验证方法
May 28 Javascript
jquery实现上下左右滑动的方法
Feb 09 Javascript
jquery自定义插件开发之window的实现过程
May 06 Javascript
jQuery实现日期联动效果实例
Jul 26 Javascript
js 上传文件预览的简单实例
Aug 16 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
Nov 22 Javascript
Angular使用ng-messages与PHP进行表单数据验证
Dec 28 Javascript
js实现3D图片展示效果
Mar 09 Javascript
Node学习记录之cluster模块
May 31 Javascript
Javascript实现的StopWatch功能示例
Jun 13 Javascript
Angular2整合其他插件的方法
Jan 20 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类
2006/11/27 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
PHP中最容易忘记的一些知识点总结
2013/04/28 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
PHP5多态性与动态绑定介绍
2015/04/03 PHP
PHP实现查询手机归属地的方法详解
2017/04/28 PHP
javascript 二维数组的实现与应用
2010/03/16 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
2014/12/12 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
js实现点击切换TAB标签实例
2015/08/21 Javascript
JS实现的表格行上下移动操作示例
2016/08/03 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
VueJS组件之间通过props交互及验证的方式
2017/09/04 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
Vue响应式原理深入解析及注意事项
2017/12/11 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
[01:13:51]TNC vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python内置函数的用法实例教程
2014/09/08 Python
python 统计代码行数简单实例
2017/05/04 Python
python绘制双柱形图代码实例
2017/12/14 Python
python数据处理 根据颜色对图片进行分类的方法
2018/12/08 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
高三毕业典礼演讲稿
2014/05/13 职场文书
焦裕禄精神心得体会
2014/09/02 职场文书
综治工作心得体会
2014/09/11 职场文书
介绍信的写法
2015/01/31 职场文书
现役军人家属慰问信
2015/03/24 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书
python中__slots__节约内存的具体做法
2021/07/04 Python