开发前准备

一、需求整理

在这里插入图片描述
!!!重要:查看设计图,了解哪些页面组件是可以复用的

二、目录结构设置

public:一般放一些比较大的图片资源
src/api:放接口
src/assets:放一些小一点的图片
src/components:放公用组件
src/views:放项目不同页面的文件夹
src/util:放一些需要格式化的js文件,比如日期转化,金融的格式化,文字转换,数字转换等
src/storage:存放localStorage、sessionStorage的js文件
src/store:使用vuex的时候存放一些东西的文件夹
src/router:存放路由的文件夹
可能还会有些存放公共样式的文件,可以根据自己的需求增减

三、分析设计图,找出最外层复用的组件,单独提出来,比如header、footer这种,然后将页面目录设置出来

如:
在这里插入图片描述

四、安装插件

可以用vue GUI安装插件,也可以在控制台使用命令安装
常用插件:
轮播图插件:vue-awesome-swiper、swiper
css预编译器:node-sass,sass-loader
ui组件:element-ui
对接后台:vue-cookie
懒加载:vue-lazyload
接口:vue-axios
路由:vue-router

npm i vue-lazyload node-sass sass-loader vue-awesome-swiper vue-cookie --save-dev

五、路由封装

import Vue from 'vue'// 引入vue
import VueRouter from 'vue-router'// 引入vue-router

Vue.use(VueRouter)// 声明使用vue-router

const routes = [// 我们写的路由,可以有多个,在router里面引入就可以了

]

const router = new VueRouter({ // 声明我们写的路由
  routes
})

export default router// 导出我们写的路由

注意:我们使用路由时必须在main.js中引用

import router from './router'
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

六、storage封装

1、cookie、localStorage、sessionStorage三者的区别

(1)存储大小:
cookie:4k
storage:5M
(2)有效期:
cookie拥有有效期,cookie有时间限制,可能是三天、七天、一个月等,当有效期到了就会消失
localStorage只要不主动删除就会永久存在
sessionStorage有效期是当前会话框的存在时间,当前会话关闭后就消失了
(3)存储位置:
cookie会发送到服务器端,存储在内存中
在这里插入图片描述
localStorage是存储在浏览器端
sessionStorage是存储在内存中的
(4)路径:
cookie有路径限制
storage只存储在域名下
(5)API:
cookie没有特定的API
storage有对应的API

2、为什么要封装storage,本身不是已经有了API了吗?

(1)storage本身已经有API了,但是只是简单的key/value形式
(2)storage只能存储字符串,需要人工转换成json对象
(3)storage只能一次性清空,不能单独清空

七、接口错误拦截

在main.js中:

import axios from 'axios'
import VueAxios from 'vue-axios'
Vue.use(VueAxios, axios)// 把axios对象挂载上去
// 只使用axios时,每个页面都得导入,很麻烦,而vue-axios把作用域对象挂载到vue实例上面去,方便用this调用
// 根据前端跨域做调整,我们先暂时采取代理的方式
axios.defaults.baseURL = '/api'
axios.defaults.timeout = 6000
// 接口错误拦截
axios.interceptors.response.use(function (response) {
  const res = response.data // 获取接口的整个信息(包括status,data,msg)
  if (res.status == 0) { // 登陆成功的状态码为0
    return res.data // 获取接口信息的data
  } else if (res.status == 10) { // 未登录的状态码为10(自己设定)
    window.location.href = '/#/login' // 直接跳转页面到login登陆页面,
    // 不能用路由的方式,因为这是main.js文件不是vue
  } else {
    alert(res.msg) // 否则报错,输出错误msg信息
  }
})

八、接口环境设置

1、为什么要设置接口环境

● 开发上线的不同阶段,需要不同的配置
● 不同的跨域方式,配置不同
● 打包的时候统一注入环境参数,统一管理环境,输出不同的版本包

2、环境配置的方式

(1)CORS和JSONP的配置

● 在scr目录新建一个env.js文件来配置不同的环境下,使用不同的参数

let baseURL
// process.env.NODE_ENV获取node.js进程里的环境变量
switch (process.env.NODE_ENV) {
  // 开发
  case 'development':
    baseURL = 'http://dev-xx-xxx.com/api'
    break
  // 测试
  case 'test':
    baseURL = 'http://test-xx-xxx.com/api'
    break
  // 预发布
  case 'prev':
    baseURL = 'http://prev-xx-xxx.com/api'
    break
  // 线上
  case 'prod':
    baseURL = 'http://xx-xxx.com/api'
    break
  // 以上的情况都不是
  default:
    baseURL = 'http://xx-xxx.com/api'
    break
}

export default {
  baseURL
}

● 在package.json文件中新增测试打包,线上打包和本地运行时所需的环境

"scripts": {
    "serve": "vue-cli-service serve --mode=development",
    "test": "vue-cli-service serve --mode=test",
    "prev": "vue-cli-service serve --mode=prev",
    "build": "vue-cli-service build --mode=production",
    "lint": "vue-cli-service lint"
  },

● 最后需要在main.js中导入env.js文件

import env from './env'

// 根据前端的跨域方式做调整
axios.defaults.baseURL = '/api'
// 根据环境变量获取不同的请求地址
axios.defaults.baseURL = env.baseURL
// 超时处理
axios.defaults.timeout = 8000

(2)代理跨域的配置

如果使用的是接口代理的方式进行跨域的话,在vue.config.js 文件中修改相对应的地址就可以。

// 因为遵循的是node.js服务器,使用的是commonJS规范,需要用module.exports导入
module.exports = {
  devServer: { // 必须使用这个名字,这样才会默认使用这个里面的配置表
    host: 'localhost', // 主机
    port: 8080, //  端口,可以更改,但默认是8080,我们也使用8080
    proxy: { //  代理
      '/api': { // 当你访问到api时拦截
        target: 'https://www.imooc.com', // 代理目标,当你拦截到api时,就会跳转到这个网址
        changeOrigin: true, // 是否将主机头的原点设置为url,如果设置成true:发送请求头中host会设置成target·
        pathRewrite: { // 配置地址
          '/api': ''
        }
      }
    }
  }
}

九、Mock设置

mock 的意思是模拟,也就是模拟接口返回的信息,用已有的信息替换它需要返回的信息,从实现对上级模块的测试。

1、为什么要设置mock

开发阶段,为了高效率,需要提前Mock
减少代码冗余、灵活插拔
减少沟通、减少接口联调时间

2、配置mock的三种方式

(1)本地创建json

最简单的方式,但是本地创建json文件无法无缝切换到开发环境,应为json文件是写死了的
新建文件public/mock/user/userInfo.json,添加代码:

{
  "status": 0,
  "data": {
    "id|10001-11000": 0,
    "username": "@cname",
    "email": "admin@51purse.com",
    "phone": null,
    "role": 0,
    "createTime": 1479048325000,
    "updateTime": 1479048325000
  }
}

App.vue中添加代码:

<script>
import axios from 'axios'
export default {
  name: 'app',
  components: {
  },
  data () {
    return {
      res: {}
    }
  },

  mounted () {
    axios.get('/mock/user/userInfo.json').then((data) => {
      this.res = data.data
    })
  }
}
</script>

(2)easy-mock平台

easy-mock不稳定,如果能自己搭建使用这种方式时最好的,不建议使用线上的这个
这里

(3)集成Mock API

Mock API有个特点,控制台是查看不到请求的,应为在请求在发出去之前就被拦截了
这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值