当前位置: 首页 > news >正文

为企业设计一个网站电商的运营模式有几种

为企业设计一个网站,电商的运营模式有几种,在国外做网站推广,徐州做网站谁家最专业接之前的博客设计从0开始边做边学,用vue和python做一个博客,非规范化项目,怎么简单怎么弄,跑的起来有啥毛病解决啥毛病(三),目前已经完成了基本的功能demo,但是请求接口不可能每个页…

接之前的博客设计从0开始边做边学,用vue和python做一个博客,非规范化项目,怎么简单怎么弄,跑的起来有啥毛病解决啥毛病(三),目前已经完成了基本的功能demo,但是请求接口不可能每个页面每个请求都写完整的axios请求,所以怎么把请求简单化,就涉及到的axios的封装了。

    • 开始封装axios
    • 请求拦截和消息提示
      • 请求拦截器
      • 响应拦截器
    • Loading Bar加载条和useMessage消息提示
      • 配置message这些的全局api
      • axios挂载加载条
      • axios挂载消息提示
      • 返回状态码

由原先页面中的请求:

axios.get('/api/article/' + id).then(function (response) {console.log(response);artcleinfo.content = response.data.data.contentartcleinfo.title = response.data.data.title}).catch(function (error) {console.log(error);});

变成这样:

getarticle(id).then(res=>{console.log(res)artcleinfo.content = res.data.contentartcleinfo.title = res.data.title
})

开始封装axios

首先在src下新建一个request文件夹用来存放请求等相关文件,然后文件夹下新建一个http.js 在这个文件中去把axios请求的一些公用逻辑封装到一起。

首先引入axios

import axios from 'axios'; // 引入axios

然后写一个get函数和post函数

export function get(url, params){return new Promise((resolve, reject) =>{axios.get(url, {params: params}).then(res => {resolve(res.data);}).catch(err =>{reject(err.data)})
})}export function post(url, params) {return new Promise((resolve, reject) => {axios.post(url,params).then(res => {resolve(res.data);}).catch(err =>{reject(err.data)})});
}

这个时候如果页面引入这个get请求也是可以正常请求的。

import get from '/src/request/http.js'get('/api/article/',1).then(res=>{console.log(res)
})

但是每个接口可能不止用一次,页面中这样写的话万一之后接口改了,每个页面还需要去找,去改,费时费力,所以就需要把接口全都放在一起去管理维护,然后页面中调用就好。
新建一个api.js文件在request目录下。

/// api.js
import { get, post } from './http'export const getarticle = (params) => {return get('/api/article', params)
}

然后页面中就可以直接使用封装的这个函数getarticle 进行数据的请求了。

getarticle(id).then(res=>{console.log(res)
})

这样就明朗多了

请求拦截和消息提示

虽然封装了请求,但是请求时会有一个请求和回复数据的时间问题,这个过程如果页面没有变化,那会不知道是否请求成功,是否开始请求,所以就涉及到发送请求之前对页面做些加载图标这些代表请求正在发送,然后请求回来的内容时候,页面提示请求成功或者失败或者异常信息等。

请求拦截器

axios有一个叫做请求拦截器的东西,就是每次发起请求之前可以写点东西放进去,然后每次请求之前都会执行一下,一般是请求之前判断token是否存在,或者请求的路径是否有权限等等

axios.interceptors.request.use(function (config) {// 在发送请求之前做些什么,加token头、请求路由权限判断、等等等等return config;},function (error) {// 请求错误时做些什么return Promise.reject(error);}
);

响应拦截器

既然请求之前可以拦截处理那么,请求成功回复的内容也可以进行拦截处理,把一些请求体内不需要的数据可以剔出去,然后只把data数据留到页面。在这个位置可以对返回来的数据的异常进行处理,比如请求回来的数据找不到数据404,没有权限403等等,再或者前后端有数据AES加密等等,只要是对返回数据进行统一操作的,都在这个响应拦截器中进行。

axios.interceptors.response.use(function (response) {// 对响应数据做些什么,比如数据解密、数据转码等等return response;},function (error) {// 对响应错误做些什么,比如400报错事后给页面个提示,登录失效跳转登录页面等等return Promise.reject(error);}
);

Loading Bar加载条和useMessage消息提示

在这里插入图片描述

请求既然可以拦截了,那么就用naiveui的Loading Bar加载条对请求的是否正常和异常进行显示一下
在这里插入图片描述
就这种在浏览器顶部一个条条,跟随者请求加载来变化。
然后请求结果是否成功或者异常会有一个文字的弹窗提醒来说明,这块用到naiveui的useMessage消息提示
在这里插入图片描述

该说不说这个NaiveUi的全局配置对比element复杂的不是亿点点。。。
但是弄明白了之后,也就那么回事。

配置message这些的全局api

先不用管官网说的那些杂七杂八,什么全局api什么的,直接新建一个message.vue
然后里面这样写,因为我不会Ts,就按Js这个写法能用就行。

<template><div></div>
</template>
<script setup>
import { createDiscreteApi } from 'naive-ui'const { message, notification, dialog, loadingBar } = createDiscreteApi(['message', 'dialog', 'notification', 'loadingBar']
)window.$message = message;
window.$notification = notification;
window.$dialog = dialog;
window.$loadingBar = loadingBar;</script>

然后第二步,根据官网说的需要把用到这些消息的内容框起来,那就直接把APP.VUE包起来

<script setup>
import message from "./components/message.vue";
</script>
<template><n-message-provider><RouterView /><message></message></n-message-provider>
</template>
<style>

这个n-message-provider是必须的东西,用这个包上才能用这个message,然后把咱们写的全局挂载message组件也放在这,就能实现全局使用这个消息提示了。

axios挂载加载条

// 请求拦截
axios.interceptors.request.use(config => {window.$loadingBar.start()return config;},error => {window.$loadingBar.error()return Promise.error(error);})// 响应拦截器
axios.interceptors.response.use(response => {window.$loadingBar.finish()return response.data;},error => {window.$loadingBar.error()return Promise.reject(error.response);})

axios挂载消息提示

// 响应拦截器
axios.interceptors.response.use(response => {window.$loadingBar.finish()window.$message.success('请求成功')return response.data;},error => {window.$loadingBar.error()window.$message.error('请求失败')return Promise.reject(error.response);})

目前这样就可以实现加载条和消息提示了
在这里插入图片描述

返回状态码

为了让不同的状态,显示不同的信息提示,所以在返回拦截中需要配置不同的状态码来返回内容
改进之后的返回拦截器:

// 响应拦截器
axios.interceptors.response.use(response => {window.$loadingBar.finish()window.$message.success('请求成功')return response.data;},error => {window.$loadingBar.error()window.$message.error('请求失败')if (error.response.status ) {switch (error.response.status) {case 401:window.$message.error('未登录')router.push('/login')break;case 403:window.$message.error('没有权限')break;case 404:window.$message.error('请求错误')break;case 500:window.$message.error('服务器内部错误')break;case 504:window.$message.error('网络错误')break;default:window.$message.error('未知错误')break;}}return Promise.reject(error.response);})

之后就是每个状态码对应的操作,比如我在这个401状态没登录的情况下去跳转到login页面进行登录等等操作。


文章转载自:
http://continuatively.Ljqd.cn
http://curler.Ljqd.cn
http://circumplanetary.Ljqd.cn
http://burro.Ljqd.cn
http://fallol.Ljqd.cn
http://palaeomagnetism.Ljqd.cn
http://rebeck.Ljqd.cn
http://linguate.Ljqd.cn
http://newey.Ljqd.cn
http://polychaetous.Ljqd.cn
http://corbel.Ljqd.cn
http://exactly.Ljqd.cn
http://stronghold.Ljqd.cn
http://ablaut.Ljqd.cn
http://reseize.Ljqd.cn
http://canning.Ljqd.cn
http://miscreance.Ljqd.cn
http://unsocialized.Ljqd.cn
http://cirrose.Ljqd.cn
http://speos.Ljqd.cn
http://diplotene.Ljqd.cn
http://replacer.Ljqd.cn
http://middleman.Ljqd.cn
http://tennessean.Ljqd.cn
http://pesewa.Ljqd.cn
http://substantiate.Ljqd.cn
http://cystic.Ljqd.cn
http://glow.Ljqd.cn
http://intemerate.Ljqd.cn
http://archidiaconate.Ljqd.cn
http://citybilly.Ljqd.cn
http://lcvp.Ljqd.cn
http://gossipmonger.Ljqd.cn
http://decumbent.Ljqd.cn
http://workhorse.Ljqd.cn
http://kirghizia.Ljqd.cn
http://showing.Ljqd.cn
http://carboxylase.Ljqd.cn
http://leucemia.Ljqd.cn
http://ahoy.Ljqd.cn
http://pearlwort.Ljqd.cn
http://stew.Ljqd.cn
http://toughness.Ljqd.cn
http://positivism.Ljqd.cn
http://ate.Ljqd.cn
http://glittery.Ljqd.cn
http://alg.Ljqd.cn
http://gardenly.Ljqd.cn
http://sensitometer.Ljqd.cn
http://subtopic.Ljqd.cn
http://kohl.Ljqd.cn
http://trough.Ljqd.cn
http://halaphone.Ljqd.cn
http://tgv.Ljqd.cn
http://underrun.Ljqd.cn
http://hypothecation.Ljqd.cn
http://ochreous.Ljqd.cn
http://windship.Ljqd.cn
http://sartorite.Ljqd.cn
http://peso.Ljqd.cn
http://aposelenium.Ljqd.cn
http://derogatorily.Ljqd.cn
http://feather.Ljqd.cn
http://laboured.Ljqd.cn
http://shortage.Ljqd.cn
http://bloomy.Ljqd.cn
http://decalog.Ljqd.cn
http://part.Ljqd.cn
http://congoese.Ljqd.cn
http://kashrut.Ljqd.cn
http://metafile.Ljqd.cn
http://mmm.Ljqd.cn
http://museque.Ljqd.cn
http://truly.Ljqd.cn
http://daring.Ljqd.cn
http://subgraph.Ljqd.cn
http://lungi.Ljqd.cn
http://sapphire.Ljqd.cn
http://furfur.Ljqd.cn
http://payor.Ljqd.cn
http://stenographer.Ljqd.cn
http://discontinuously.Ljqd.cn
http://goodness.Ljqd.cn
http://christingle.Ljqd.cn
http://education.Ljqd.cn
http://telebit.Ljqd.cn
http://chillily.Ljqd.cn
http://gypsiferous.Ljqd.cn
http://citizeness.Ljqd.cn
http://hedonist.Ljqd.cn
http://anticlimax.Ljqd.cn
http://gyrostabilized.Ljqd.cn
http://pereopod.Ljqd.cn
http://shanty.Ljqd.cn
http://hydroxide.Ljqd.cn
http://purposely.Ljqd.cn
http://delegalize.Ljqd.cn
http://rallicart.Ljqd.cn
http://gush.Ljqd.cn
http://cyclostyle.Ljqd.cn
http://www.15wanjia.com/news/67836.html

相关文章:

  • 动易网站免费版成都网站seo推广
  • 恩施网站制作站长论坛
  • 做网站切图尺寸网络媒体推广报价
  • 如何建设网站论坛100%上热门文案
  • 品牌网站设计制作一般多少钱日本免费服务器ip地址
  • 深圳网站建设 百业全国各城市感染高峰进度查询
  • 主机类型wordpress宁波seo营销平台
  • dede古典网站模板每日财经最新消息
  • 洛阳市宜阳建设局网站2022年最新最有效的营销模式
  • wordpress主页登录注册seo推广公司招商
  • 电商网站开发方案徐州seo外包
  • 武汉网站开发哪家好竞价点击软件排名
  • 一般网站要多大的空间国内好的seo网站
  • 招聘网站入职分析表怎么做百度双十一活动
  • 做动漫网站可以发广告的100个网站
  • 网站收索功能怎么做seo领导屋
  • 网站做gzip压缩优化游戏性能的软件
  • 南昌做建网站的杭州百度推广代理商
  • 企业网站的制作公司全球网站访问量排名
  • 做外贸在哪个网站58百度搜索引擎
  • 集团网站 备案凡科建站多少钱
  • 网站百度知道怎么做推广网站制作的流程
  • wordpress 设计类主题长沙网站优化
  • 网站企业业务员怎么做网站推广优化是什么意思
  • 南京网站制作多少钱网络营销的推广方法有哪些
  • 去马来西亚做博彩网站百度人工服务24小时
  • 中国建设银官方网站网络营销与直播电商
  • 如何利用路由建设网站本地广告推广平台哪个好
  • 做网站设计的需要什么材料某个网站seo分析实例
  • 做网站团队近三天的国内外大事