12.17面试题

目录

讲下路由拦截器

缓存路由

uniapp页面跳多个页面返回根页面会有什么问题

vue动态路由跳转

uiapp有哪些跳转方式

前端团队有多少人?你在里面的定位?

[uniapp IOS和安卓打包上架](#uniapp IOS和安卓打包上架)

[pinia是怎么存数据的 一般都存的什么数据](#pinia是怎么存数据的 一般都存的什么数据)

接口如何封装的


讲下路由拦截器

beforeEach前置路由守卫afterEach后置路由守卫

javascript 复制代码
// 全局路由守卫
 
//前置路由守卫  初始化时被调用 每次路由切换之前被调用
// to  去哪儿 from 来自哪里 next 放行
router.beforeEach((to, from, next) => {
  if (!token && !to.query.token) {
    if (to.path == '/login') {
      next();
    } else {
      next('/login');
    }
  } else {
    next();
  }
});
 
 
// 后置路由守卫 初始化时被调用 每次路由切换之后被调用
router.afterEach((to, from, next) => {});
javascript 复制代码
          {
            path: '/news',
            name: 'News',
            meta: {
              isAuth: true
            },
            component: () => import('../views/news/news.vue'),
 
            // 独享路由守卫  只针对单个路由进行限制  只有前置 没有后置
            beforeEnter: (to, from, next) => {
              const token = localStorage.getItem('token');
              if (to.meta.isAuth) {
                if (!token && !to.query.token) {
                   if (to.path == '/login') {
                    next();
                  } else {
                    next('/login');
                  }
                } else {
                  next();
                }
              }
            }
 
          }
javascript 复制代码
组件内使用
 
//进入守卫 通过路由桂策 进入该组件时被调用
beforeRouteEnter(to,from,next){ }
 
//离开守卫 通过路由规则 离开该组件时被调用
beforeRouteLeave(to,from,next){ }

缓存路由

方法1:使用<keep-alive>

作用:让不展示的路由组件保持挂载 不被销毁

如:组件中的Input输入后 切换别的组件 回来输入的值还在

javascript 复制代码
const router = new VueRouter({
  routes: [
    {
      path: '/home',
      component: () => import('./components/Home.vue')
    },
    {
      path: '/profile',
      component: () => import('./components/Profile.vue')
    }
  ]
})

然后在你的App.vue或者相应的父组件中使用<keep-alive>来缓存这些组件

javascript 复制代码
<template>
  <keep-alive>
    <router-view></router-view>
  </keep-alive>
</template>
方法2:使用meta字段和动态<keep-alive>

如果你想要更细粒度地控制哪些路由需要被缓存,你可以在路由配置中使用meta字段,并在父组件中根据路由的meta信息决定是否使用<keep-alive>

修改路由配置,添加meta字段:

javascript 复制代码
const router = new VueRouter({
  routes: [
    {
      path: '/home',
      component: Home,
      meta: { keepAlive: true } // 标记此路由需要被缓存
    },
    {
      path: '/profile',
      component: Profile,
      meta: { keepAlive: false } // 标记此路由不需要被缓存
    }
  ]
})

然后在父组件中动态使用<keep-alive>

javascript 复制代码
<template>
  <keep-alive v-if="$route.meta.keepAlive">
    <router-view></router-view>
  </keep-alive>
  <router-view v-else></router-view>
</template>

uniapp页面跳多个页面返回根页面会有什么问题

vue动态路由跳转

在 Vue 中实现动态路由跳转,主要依赖于 Vue Router 组件的 <router-link> 标签或 this.$router.push() 方法。

uiapp有哪些跳转方式

  • uni.navigateTo 保留当前页面
  • uni.redirtectTo 瑞得ruai可特 关闭当前页面
  • uni.relaunch 关闭所有页面
  • uni.switchTab 套转到tabtar页面 并关闭所有非tabtar页面
  • uni.navigateback 关闭当前页面 返回上一页面或多级页面

前端团队有多少人?你在里面的定位?

uniapp IOS和安卓打包上架

pinia是怎么存数据的 一般都存的什么数据

接口如何封装的

以我负责的微信小程序项目为例,其中包含了loading统一处理,请求拦截器,响应拦截器,错误处理,接口超时的时间等

首先定义基础配置 其中包含url,timeout,loading,loadingText,showErrorToast等

然后用new promise包裹wx.request,接收参数 URL,method,data,hearder等参数,合并默认配置和自定义配置

添加请求拦截器 请求拦截中hearder头中添加缓存token 判断token是否存在 不存在跳转登录页 存在存到header头中 或者是请求拦截器中header头中添加app版本号或者设备号

添加响应拦截器 先统一解析数据 成功返回核心数据 失败则统一处理(如 401 自动刷新 token 并重试请求或者跳转到登录页,500服务器错误,其他错误提示用户)

注意事项:

loading控制:请求成功或失败之后记得关闭loading 避免忘记关闭页面卡死

相关推荐
Huanzhi_Lin3 小时前
禁用谷歌/google/chrome浏览器更新
前端·chrome
咸鱼加辣3 小时前
【前端的crud】DOM 就是前端里的“数据库”
前端·数据库
kong79069283 小时前
环境搭建-运行前端工程(Nginx)
前端·nginx·前端工程
成都证图科技有限公司4 小时前
Bus Hound概述
前端
PythonFun4 小时前
WPS中表格行高无法手动调整怎么办?
前端·html·wps
IT_陈寒4 小时前
JavaScript性能优化:7个V8引擎内部原理帮你减少90%内存泄漏的实战技巧
前端·人工智能·后端
narukeu4 小时前
聊下 rewriteRelativeImportExtensions 这个 TypeScript 配置项
前端·javascript·typescript
开压路机4 小时前
模拟实现反向迭代器
前端·c++
San30.4 小时前
从 0 到 1 打造 AI 冰球运动员:Coze 工作流与 Vue3 的深度实战
前端·vue.js·人工智能