Vue子应用问题解决及其心得

页面延迟一会儿才布满屏幕

考虑是因为页面的高度不是100%的原因,解决步骤如下

  • 给body设置高度为 height:100%
  • 在 App.vue 文件中添加样式
#app{
  height 100%;
}

然后看看是否解决了问题,如果没有则在页面的View组件外在套一层 div ,并设置height: 100%

某个页面禁用缓存

首先在该需要禁用缓存的页面的路由配置中添加 meta 信息 disableCache:true,表示该页面具有缓存功能。

{
    path: "/questionaire-fill/:id/:operation",
    name: "fill",
    meta: {
      disableCache: true,
    },
    component: Fill,
},

然后修改 App.vue 中的内容,这样,keepAlive为true,利用Vue-Router的条件渲染来实现不同路由进入不同的路由视图实现页面禁用缓存功能。

    <transition :name="routerTransition">
      <keep-alive>
        <router-view v-if="!$route.meta.disableCache" />
      </keep-alive>
    </transition>
    <transition :name="routerTransition">
      <router-view v-if="$route.meta.disableCache" />
    </transition>

调用接口的时候请求的域名地址一直不对,导致接口调不通

  1. 首先查看.env.development的配置是否是正确的,如果是正确的则看下一步。
  2. 查看 request 的配置,看看 axios 请求基路径配置是否正确。是否与.env.development里面的配置匹配。比如,你的配置里面叫 VUE_APP_DEV_BASE_URL,然后你的axios基路径像下面这样获取的,肯定是调不通的。
authedAxios.defaults.baseURL = process.env.VUE_APP_BASE_URL

在线子应用的 token 最好不要用桥接调用

因为考虑到可能在线子应用后期可能会有外部平台也能访问的需求,最好是通过将 token信息拼接到访问路径后面的方式来获取。如:

http://xxxxxx?access_token=1234354543545;

如监听网络请求的成功或失败

使用 axios 的拦截功能。可以给全局的 axios请求添加响应拦截。你可以在当前模块的store 里面添加一个 networkSuccess 字段来表示请求成功与否。下面拿具体的代码来说明。

// 添加响应拦截器
authedAxios.interceptors.response.use((response) => {
    let result = response.data
    if (!result.failed) {
        // 将store里的字段置为 true
        store.commit('questionaire/setNetworkSuccess', true, {root: true});
        return Promise.resolve(result);
    } 
    toast(result.message);
    return Promise.reject(result)
}, (err) => {
    // 发生网络错误后会走到这里
    if (err) {
        // 如果接口没调通,将store里的字段置为 false
        store.commit('questionaire/setNetworkSuccess', false, {root: true});
        toast.show(err.message)
        return Promise.reject(err)
    }
})

一些开发的心得体会

  • 如果页面的数据存到了 store 里面,并且该页面的数据是下次进入是实时更新的,退出当前页面前一定注意清楚 store 里面的数据。
  • 当你某个时候思路特别不清晰的不要写核心逻辑代码,不然一定会返工的。可以写写边缘逻辑或者样式之类的。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Vue概述 1.1 Vue介绍 Vue 是一套用于构建用户界面的渐进式框架。 1.2 Vue核心思想 双向数...
    nimw阅读 3,669评论 0 4
  • ## 框架和库的区别?> 框架(framework):一套完整的软件设计架构和**解决方案**。> > 库(lib...
    Rui_bdad阅读 8,113评论 1 4
  • 1.Vue的数据双向绑定如何实现?Vue的数据双向绑定如何实现? v-model指令或者.sync修饰 2.Vue...
    骑着蜗牛逛妓院阅读 9,225评论 1 11
  • 要招一个会vue的开发者: 作为面试官的你,你还会每次都只是问这些老土的问题吗?你对MVVM的理解是什么?你知道什...
    浪子神剑阅读 23,207评论 0 260
  • 基本用法 一、vuejs简介 是一个构建用户界面的框架 是一个轻量级的MVVM(Model-View-ViewMo...
    深度剖析JavaScript阅读 18,286评论 0 8