Vue(五)【技巧】

【零基础入门VUE】VueJS - 概述 不会对 DOM 进行更改,而是创建 DOM 的副本,该副本以 JavaScript 数据结构的形式存在。最终的更改会更新到真实的 DOM,用户将看到它的变化。随后,对两个 JavaScript 对象进行比较,并在真实 DOM 中更新最终的更改。Ember 添加了 glimmer 渲染引擎,旨在提高重新渲染性能,这与使用虚拟 DOM 的 VueJS 和 React 是类似的概念。随着时间的推移,淘汰赛的发展速度已经放缓。VueJS 继承了 Angular 和 React 的优点,并构建了一个强大的库。 阅读详情

路由方案

  <transition :name="transitionName">
    <keep-alive>
      <router-view v-if="$route.meta.keepAlive" ></router-view>
    </keep-alive>
  </transition>
  <transition :name="transitionName">
      <router-view v-if="!$route.meta.keepAlive" :key="key"></router-view>
  </transition>
  data () {
    return {
      transitionName: '',
      isSlide: false
    }
  },
  computed: {
    key () {
      // 再次进入时刷新数据
      return this.$route.fullPath + Math.random()
    }
  },
  watch: {
    $route (to, from) {
      // 屏蔽ios原生滑动
      var isiOS = !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)
      if (isiOS) {
        document.body.addEventListener('touchmove', () => {
	      this.isSlide = true
	      }, false)
      }
      if (!this.isSlide ) {
        if (to.meta.index < from.meta.index) {
          // 设置动画名称
          this.transitionName = 'slide-left'
	        this.isSlide = false
        } else {
          this.transitionName = 'slide-right'
	        this.isSlide = false
        }
      } else {
        this.transitionName = ''
	      this.isSlide = false
      }
    }
  },
// 页面过渡动画
.slide-right-enter-active,
.slide-right-leave-active,
.slide-left-enter-active,
.slide-left-leave-active {
  will-change: transform;
  transition: all 0.5s;
  position: absolute;
  width: 100%;
  left: 0;
}
.slide-right-enter {
  opacity: 0;
  transform: translate3d(100%, 0, 0);
}
.slide-right-leave-active {
  opacity: 0;
  transform: translate3d(-100%, 0, 0);
}
.slide-left-enter {
  opacity: 0;
  transform: translate3d(-100%, 0, 0);
}
.slide-left-leave-active {
  opacity: 0;
  transform: translate3d(100%, 0, 0);
}

前进页面缓存,后退页面销毁

beforeRouteLeave (to, from, next) {
  if (to.name === 'peopleList') {
    if (!from.meta.keepAlive) {
      from.meta.keepAlive = true
    }
    next()
  } else {
    from.meta.keepAlive = false
    this.$destroy() // 销毁实例
    next()
  }
},

适配方案

移动端适配方案之postcss-px-to-viewport

不兼容PC端

npm install postcss-px-to-viewport --save-dev
module.exports = {
  "plugins": {
    "postcss-import": {},
    "postcss-url": {},
    // to edit target browsers: use "browserslist" field in package.json
    "autoprefixer": {},
    'postcss-px-to-viewport': {
      viewportWidth: 750,   // 视窗的宽度,对应的是我们设计稿的宽度,一般是750
      // viewportHeight: 1334, // 视窗的高度,根据750设备的宽度来指定,一般指定1334,也可以不配置
      unitPrecision: 3,     // 指定`px`转换为视窗单位值的小数位数
      viewportUnit: "vw",   //指定需要转换成的视窗单位,建议使用vw
      selectorBlackList: ['.ignore'],// 指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名
      minPixelValue: 1,     // 小于或等于`1px`不转换为视窗单位,你也可以设置为你想要的值
      mediaQuery: false     // 允许在媒体查询中转换`px`
   }
  }
}

Axios请求封装

import axios from 'axios';
// 创建axios实例
const service = axios.create({
    baseURL: process.env.BASE_API,
})
// request拦截器,在请求之前做一些处理
service.interceptors.request.use(
    config => {
        config.headers['Content-Type'] = 'application/json'
        return config
    },
    error => {
        console.log(error) 
        Promise.reject(error)
    }
)
// response 拦截器,数据返回后进行一些处理
service.interceptors.response.use(
    response => {
        const res = response.data
        if (res.code == 666) {
            return res;
        } else {
            Promise.reject(res.msg);
        }
    },
    error => {
        Promise.reject('网络异常');
    }
)
export default service

HTTP请求封装

import request from './request'
const http ={
    /**
     * methods: 请求
     * @param url 请求地址 
     * @param params 请求参数
     */
    get(url,params){
        const config = {
            method: 'get',
            url:url
        }
        if(params) config.params = params
        return request(config)
    },
    post(url,params){
        const config = {
            method: 'post',
            url:url
        }
        if(params) config.data = params
        return request(config)
    },
    put(url,params){
        const config = {
            method: 'put',
            url:url
        }
        if(params) config.params = params
        return request(config)
    },
    delete(url,params){
        const config = {
            method: 'delete',
            url:url
        }
        if(params) config.params = params
        return request(config)
    }
}
//导出
export default http

调用接口

import http from './http.js'
export const getDetail = params => {
  return http.get('/detail', params).then(res => {
    if (res.code === 20000) {
      return Promise.resolve(res)
    }
    return Promise.reject(res)
  })
}
getDetail () {
  return new Promise((resolve, reject) => {
    getDetail({
      data: this.data
    })
      .then((res) => {
        if (res.code === 20000) {
          resolve(2)
        }
      })
      .catch((err) => {
        console.log(err)
      })
  })
}
八小时实现迷你版vuejs五:实现Watcher 再贴一下之前的一张图: 我们已经实现了 Observer 和 Directive,并且自己实现了一个 v-on 的指令,那么再实现 Dep 和 Watcher 就完整了。这里的 dep.js 其实就是一个记录依赖关系的,他有一个内部的数组 subs 会把所有依赖的 watcher 记录在里面,然后 observer 在观察到数据改变的时候,就告诉dep,它会负责遍历 subs 并调用他们的 upd 阅读详情

相关推荐

vue fetch中的.then()的正确使用方法

主要介绍了vue fetch中的.then()的正确使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

vue中的then方法

方法处理异步操作并不局限于 HTTP 请求,它也可以用于处理其他返回 Promise 的异步操作,比如使用。方法通常用于处理异步操作的返回结果,例如 Promise 或者是通过 Vue 的。方法被调用来处理 HTTP 请求的返回结果。希望以上信息对您有帮助。如果有任何疑问,请随时提出。方法中编写自己的逻辑来处理该数据。对象,其中包含了返回的数据。方法可用于捕获请求过程中发生的错误。需要注意的是,在 Vue 中,使用。库发送的 HTTP 请求。

欢迎大家一起攻克bug 4812

AI量化投资开源平台——Qlib(微矿)的学习使用笔记(随缘更新)

Qlib 涵盖了量化投资的全过程,为用户的 AI 算法提供了高性能的底层基础架构,从框架设计上让用户可以更容易地应用 AI 算法来辅助解决量化投资的各个关键问题(例如 Alpha 预测,风险预测,市场动态性建模)。本文旨在记录一些面向初学者的基础内容。

in_void的博客 3133

vue中的then方法和catch方法

1、then()方法是异步执行。

qq_26942049的博客 1万+

IPC-7351标准实战:如何用LPWizard_10快速生成PCB封装库(附避坑指南)

本文提供了一份详细的IPC-7351标准实战指南,手把手教你使用LPWizard_10软件快速生成符合行业标准的PCB封装库,并直接导入Cadence Allegro。文章深入解读了IPC-7351密度等级的选择逻辑,并重点分享了软件配置、QFN封装生成实战步骤,以及导出失败、焊盘异常等常见问题的避坑解决方案,旨在帮助硬件工程师提升设计效率和可靠性。

weixin_29207439的博客 153

ros2 humble cartographer 2D激光雷达建图

Cartographer是一个支持多平台和传感器配置的SLAM的系统。 本文主要讲述在ros2 humble系统上cartographer的安装方法,以及如何配置参数实现自己的ros2 bag包的离线建图。

weixin_43087302的博客 6937

Vue 开发技巧(五)

actions 对象定义了对状态的异步修改方法,在这个例子中只有一个 increment 方法,它调用了 commit 函数来触发一个 increment 的 mutation。mapActions 函数从 vuex 中导入,它将 store 中的 actions 映射到组件的 methods 中,这样可以在组件内部直接调用这些 actions。mutations 对象定义了对状态的修改方法,在这个例子中只有一个 increment 方法,用于将 count 加 1。App.vue 文件是应用的主组件。

2301_76433421的博客 121

AutoGenTestCase - AI大模型生成测试用例

AI技术助力高效软件测试:AutoGenTestCase工具介绍 传统手工测试存在效率低、覆盖不全等痛点。AutoGenTestCase工具集成DeepSeek、通义千问等AI大模型,能快速解析需求并自动生成标准化测试用例,将数小时工作缩短至分钟级。该工具部署简单,仅需配置APIKey即可运行,支持多种测试用例类型比例设置,并输出Markdown和Excel格式的测试用例。通过GitHub或网盘下载后,用户可按照教程完成APIKey配置、需求文档上传和用例生成等操作,显著提升测试效率与覆盖完整性。

YIqifeibaQI的博客 347

vue技巧(五)通用loading组件

当我们调用一些耗时比较久的接口时,在页面上最好有个“锁定”的状态,防止在请求过程中用户重复发起请求或触发页面上的一些其它事件。下面是我们实际使用中的效果图: 该技术的实现主要是依赖自定义组件以及vuex的全局存储功能,实现流程如下: 1、首先是创建一个通用的组件Loading.vue <template> <el-dialog title="提示" :visible.sync="requesting" width="30%" > &

Interest1_wyt的博客 4719

基于Termux的Android平台OpenClaw部署:移动端AI助理实现

本文介绍了在Android设备上通过Termux部署OpenClaw AI助理的方案。Android设备的便携性、Termux提供的完整Linux环境以及多样化的硬件配置使其成为理想的部署平台。文章详细分析了不同级别Android设备的硬件规格(从入门级到旗舰级),并提供了最低/推荐配置要求。部署步骤包括Termux安装初始化、Python环境配置以及性能优化建议。该方案充分利用Android设备的传感器和电池供电优势,为移动办公、学习等场景提供了低成本、高便携性的AI助理解决方案。

博客 3008

Plecs standalone 4.9.5最新版本,赶紧来下载使用吧,需要做并网逆变器及光伏储能变换器的朋友赶紧下载起来

PLECS 4.9.5较4.7.1版实现全面升级:采用自适应求解器切换技术,支持多核CPU/GPU加速,仿真速度提升30-50%;新增模型引用功能,实现模块化设计;强化光伏/风电等新能源组件,支持多物理场耦合分析;优化代码生成功能,兼容多种硬件平台和FMU导入。新版特别适用于复杂电力电子系统、多域联合仿真及硬件在环测试项目,但对硬件配置要求更高。基础教学项目仍可使用4.7.1版本。建议用户根据项目复杂度选择升级方案。

2415

Vue开发工具vuejs-devtools超级详细安装教程以及常见问题解决

这绝对是最详细的Vue开发工具vuejs-devtools安装教程,相信你只需要5分钟即可解决所有问题 所需的所有文件,链接:https://pan.baidu.com/s/19GWDS_7GodIdFBUO0eTDAg 提取码:2yvc 一、vue.js插件下载 下载地址:vue.js插件下载; 点击进入Vue官网即可下载,共有两种版本的插件(开发版本:vue.js,生产版本:vue.main.js),建议使用开发版本。开发版本有更多的错误信息提示和调试,文件较大,生产办文件小但是很多提示不全,解决开发

goog_man的博客 6万+

【即插即用模块】Transformer篇 | AAAI 2026 | Circulant Attention:全新ViT自注意力范式,复杂度从O(N²) 降至O(NlogN)!

本文提出了一种基于频域优化的循环注意力模块(Circulant Attention),通过离散傅里叶变换(DFT)将传统自注意力中的矩阵乘法转化为频域元素乘法,显著降低了计算复杂度。该模块采用复数线性层适配频域特征,并引入门控调制机制增强表达能力,在保持全局依赖捕捉能力的同时,将复杂度从O(N²)降至O(NlogN)。实验表明,该模块在多种视觉任务中均能提升模型性能,且计算效率更高。适用于需要高效全局注意力的视觉Transformer架构,可作为传统自注意力的替代方案。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 150

Vue基础——VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定、Vue的安装和使用、Vue模板语法-文本渲染、常用的vue的指令

Vue基础——VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定、Vue的安装和使用、Vue模板语法-文本渲染、常用的vue的指令

ranran0306的博客 9676

OpenClaw零基础教程:30分钟搭建你的第一个AI自动化助手

别再看那些满是代码、专业术语的教程了,那些都是给程序员看的。这篇教程,我把所有步骤拆到了极致,你跟着点鼠标就行,点错了都没关系,大不了重装一遍,5分钟的事。

2601_94871597的博客 96

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

vue和vuejs区别_D3vue-VueJS的D3插件

vue和vuejs区别 D3vue (D3vue) D3 integration with Vue.js. 与Vue.js的D3集成。 View demo 查看演示 Download Source 下载源 d3vue is a plugin for VueJS 2 that allows you to take data from your Vue instance and bind ...

cuk5340的博客 3277

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

VueJS WebPack separating javascript from vue

VueJS 与 Webpack:将 JavaScript 从 Vue 文件中分离

suiusoar 1317

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

探索Vue.js的无限可能 —— vuejs-challenges

挑战自我,共同成长,Vue.js挑战等你来战!

2401_83063795的博客 2835

推荐:Vue.js 官方文档日语版项目 - vuejs/jp.vuejs.org

推荐:Vue.js 官方文档日语版项目 - vuejs/jp.vuejs.org 在这个飞速发展的前端世界里,拥有清晰、详尽的文档是至关重要的。Vue.js,作为一款轻量级但功能强大的渐进式框架,其官方文档一直是开发者的重要学习资源。现在,对于日语使用者来说,有一个绝佳的机会,那就是参与并使用由社区维护的 vuejs/jp.vuejs.org 项目,它提供了 Vue.js 2.x 版本的日语文档。...

gitblog_00009的博客 1137

提升Vue开发效率的利器:vuejs-devtools

提升Vue开发效率的利器:vuejs-devtools 【下载地址】Vue开发工具vuejs-devtools安装教程及常见问题解决 Vue开发工具vuejs-devtools安装教程及常见问题解决本文详细介绍了如何安装Vue开发工具vuejs-devtools,并提供了常见问题的解决方法 ...

gitblog_06522的博客 742

面向开发人员 的终极 VueJS 资源

在 10 小时内构建 10 个项目 使用 Vue 3 组合 API - 设置、传送、反应和引用 Vue 3 教程将从非常基础的内容开始,通过构建 10 个不同的应用程序,教您如何在 10 个小时的完整课程中将 TensorFlow 和 firebase 与您的 Vuejs 一起使用。它是从头开始设计的,根据您的目标,可以很容易地成为一个库和一个框架。VueJS 示例,顾名思义,它是示例的集合,例如简单且可自定义的步骤进度指示器、Vue 汽车贷款计算器、通知/Toast 组件等使用 VueJS 制作的项目。

码上全栈创享家官方号,小红书、公众号、抖音、b站,youtube等同名,欢迎各位码农一起来学习! 2867

vuejs插件_VueJS 2的基本翻译插件

vuejs插件 Vue-Polyglot (Vue-Polyglot) basic translation plugin for VueJS 2+. VueJS 2+的基本翻译插件。 View demo 查看演示 Download Source 下载源 安装 (Installation) npm install --save vue-polyglot TLDR (TLDR) can lo...

cuk5340的博客 2150

10分钟精通Vue时间轴:timeline-vuejs实战全攻略

timeline-vuejs是一款专为Vue.js设计的极简时间轴组件,能够帮助开发者快速构建美观的时间线展示界面。无论你是要展示个人经历、项目里程碑还是历史事件,这个Vue时间轴组件都能提供简洁优雅的解决方案。 ## 一、环境配置与一键部署技巧 ✨ ### 前置要求 在开始使用Vue时间轴组件之前,请确保你的开发环境中已安装以下依赖: - Node.js 8.0或更高版本 - Vue.js

gitblog_00072的博客 926
上一篇: Vue(四)【进阶】
下一篇: 技巧 vue还能这样写
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值