vue获取本地时间和服务器时间(顺便复习vuex的内容)

这篇具有很好参考价值的文章主要介绍了vue获取本地时间和服务器时间(顺便复习vuex的内容)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. vue 实时获取时间

now: new Date()
mounted() {
 setInterval(()=>{
 	this.now = new Date()
 }, 1000)
}

2. 获取服务器的时间,防止本机时间获取错误

  • 场景: 本机经常关机,时间获取不同步,但是服务器时间是同步的,需要获取服务器的时间显示
  • 解决办法:
    - 1. 在后端服务器的响应头部可以获取date,
    - 2. 使用简单状态管理store来获取本地时间与服务器的时间差
    - 3. 混入到需要使用的组件中
  • 代码
// store 
var store = {
  debug: true,
  state: {
    differTime: ''
  },
  changeTIme (newValue) {
    if (this.debug) console.log('setMessageAction triggered with', newValue)
    this.state.differTime = valueOf(new Date()) - valueOf(newValue) // 时间戳的差值
  }
}

// request.js
import store from 'store'
// 添加响应拦截器
instance.interceptors.response.use(
  function (response) {
  // 获取服务器时间
  	if(response.header.date) {
  		store.changeTime(response.header.date)
  	}
    return response
  },
  function (error) {
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)

// minxin.js 使用公共状态store
import store from '../xx/store'
export default {
	data() {
		return {
			storeState: store.state // {differTime: ''}
			myState: {
				currentTime: ''
			}
		}
	},
	computed: {
		formatTime() {
			return this.$moment(this.currentTime).format('YYYY-MM-DD HH:mm:ss')
		},
		formatMonth() {
			return this.$moment(this.currentTime).format('YYYY-MM')
		},
		formatYear() {
			return this.$moment(this.currentTime).format('YYYY')
		}
	},
	mounted() {
		this.timer = setInterval(() => {
			this.currentTime = new Date( valueOf(new Date()) + this.storeState.differTime)
		},
		1000)
	}
}

// xxx.vue中使用

import myMixin from 'xxx'
export default {
	 mixins: ['myMixin'],
	 data() {return {}}
	}
	
// 则可以使用this.myState.formatTime ......

VUEX 总结

– 上面使用了简单状态管理,具体参考官网说明,只提供了全局变量,和操作变量的方法

  • 相当于使用了Vuex中的state, 和mutations功能, 没有getters, actions, modules(五大功能)

  1. 不能直接改变state里的数据。

  2. mutations:通过执行 this.$store, commit('mutation名称', payload)来触发 mutation 的调用, 间接更新 state

  3. actions 组件中: this.$store.dispatch(‘action 名称’, data1),actions中可以包含异步代码(例如:定时器, 请求后端接口), actions中调用mutations的函数,可以监听操作state的变化

  4. getters可以获取state中经过计算的属性, 类似vue中computed属性,具有缓存功能

  5. namespace 可以使用模块化

         // 分模块,不改方法名
       ...mapActions('模块名', ['actions方法名'])    ||     -------通常放在methods
       ...mapState(模块名', ['state名称'])        ---- 通常放在computed中
       ...mapGetters ('模块名', [ 'getters名称'  ])   ---- 通常放在computed中
       ...mapMutations ('模块名', [ 'mutations名称'  ])   -------通常放在methods
    
    或者使用  ...mapActions(['模块名/ 方法名'])   
    
    调用函数
    this.$store.dispatch("user/test", "value")  // 第二个参数为传参
    
import {createStore} from 'vuex'
import collapse from "./modules/collapse";
import authState from './modules/auth';
 
export default createStore({
    modules: {
        collapse,
        authState 
    },
})

//auth.js
const authState = {
    namespaced: true, // 开启命名空间
    state: {
        count: 0,
    },
    mutations: {
        setCount(state, data) {
            state.count= data
        },
    },
    actions: {},
    getters: {
        count: state => state.count,
    }
}
export default authState 

—完美!!!文章来源地址https://www.toymoban.com/news/detail-703885.html

到了这里,关于vue获取本地时间和服务器时间(顺便复习vuex的内容)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 部署在阿里云ECS服务器上的微服务项目中获取到的时间和windows的时间不一样的问题

    继上一篇文章《阿里云ECS服务器无法发送邮件问题解决方案》之后,又发现登录的时候发送邮件中的时间和自己windows上的时间不一样,大概找了一下原因,是LocaDateTime使用的时区不一样导致的远程服务器和本机时间不一致。 只需要在LocaDateTime.now()方法中传一个参数,这个参

    2024年02月07日
    浏览(33)
  • vue打包部署到服务器,动态获取(修改)对应服务器的请求ip

    需求: vue打包后的文件要部署到不同的服务器上,ip不同,每次部署都要修改对应服务器的ip后打包上线,所以会出现频繁打包的情况 问题:vue项目打包上线不同服务器,需要打包一次能够动态的修改ip地址 思路1: 1.由于vue项目里面public文件在打包时不会被影响,所以可以在

    2024年02月05日
    浏览(29)
  • vue请求时间太长_接口处理请求时间过长,前台响应“服务器超时”的解决办法

    这些方法可以根据具体需求和情况进行选择和组合使用,以提高前端的用户体验和接口的性能。同时,还需要考虑服务器端的性能和网络环境,以及前后端的协作来实现最佳的用户体验。

    2024年02月09日
    浏览(37)
  • vue项目本地开发完成后部署到服务器后报404

    前后端分离开发模式下,前后端是独立布署的,前端只需要将最后的构建物上传至目标服务器的 web 容器指定的静态目录下即可 我们知道 vue 项目在构建后,是生成一系列的静态文件 常规布署我们只需要将这个目录上传至目标服务器即可 让 web 容器跑起来,以 nginx 为例 配置

    2024年02月05日
    浏览(41)
  • shell脚本之003获取固定时间段(分钟)内的日志,并将其定时通过sftp上传至服务器中

    #!/bin/bash export PATH=/home/ccbt/software/lftp-4.9.2/usr/local/bin/:$PATH # 获取当前系统时间 now=$(date +\\\"%Y/%m/%d %H:%M:%S\\\") echo \\\"当前日期时间:$now\\\" # 当前时间戳 now_time=$(date +%s) echo \\\"当前时间戳:$now_time\\\" #获取指定开始时间的时间戳 10分钟 time_befo=$(($now_time-600)) echo \\\"指定开始时间戳: $time_befo\\\"

    2024年02月01日
    浏览(43)
  • 【智能家居项目】FreeRTOS版本——多任务系统中使用DHT11 | 获取SNTP服务器时间 | 重新设计功能框架

    🐱作者:一只大喵咪1201 🐱专栏:《智能家居项目》 🔥格言: 你只管努力,剩下的交给时间! 在上篇文章中,本喵仅进行了单任务的DHT11温湿度传感器使用,相当于裸机使用。 根据上面时序图计算接收一次数据(5个字节)的耗时,不考虑主机发送起始信号的耗时: 最小时间

    2024年02月05日
    浏览(30)
  • 本地开发环境请求服务器接口跨域的问题(vue的问题)

    上面的这个报错大家都不会陌生,报错是说没有访问权限(跨域问题)。本地开发项目请求服务器接口的时候,因为客户端的同源策略,导致了跨域的问题。下面先演示一个没有配置允许本地跨域的的情况: 可以看到,此时我们点击获取数据,浏览器提示我们跨域了。所以我

    2024年01月23日
    浏览(34)
  • SOAP学习之一:Visual C++创建简单的客户端--使用soap toolkit 3.0获取UTC服务器时间

    初始接触 XML及SOAP第一天,摸不着头绪,看了很多文章,总结一下几点心得,附一个小例子使用VC++控制台程序获取UTC服务器时间。 看到的资料VC++都是使用soap toolkit来使用SOAP,soap toolkit目前看最高版本应该是3.0,但是微软已经不再对soap toolkit提供技术支持及更新,在微软官网

    2024年02月09日
    浏览(50)
  • vue2 使用axios获取服务器响应头(前后端分离)

    1:后端通过json序列化成字符串 传给前端 2:在program 配置跨域中进行配置 按需返回所需数据

    2024年02月07日
    浏览(34)
  • Vue.js:Vue-Router动态路由从服务器接口获取路由数据

    文档 https://v3.router.vuejs.org/zh/installation.html 版本号 有几种方式实现动态路由: 前端配置 完整路由 ,通过接口返回的数据判断是否可显示,是否可访问 前端配置 部分路由 ,由后端接口返回的数据生成新路由 抛开路由的思维,是否能直接通过 url查询参数 或者是 动态路径参数

    2024年02月08日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包