当前位置: 首页 > news >正文

可信网站身份验证 必须做吗宁波网站建设设计制作

可信网站身份验证 必须做吗,宁波网站建设设计制作,苏州网络公司哪家最好,多少钱 英文第一步:创建store目录结构 src/ ├── store/ │ ├── modules/ │ │ └── robot.js # 机器人专用状态模块 │ └── index.js # Vuex 主配置文件第二步:创建机器人状态模块 创建 src/store/modules/robot.js 文件&#xff…

第一步:创建store目录结构

src/
├── store/
│   ├── modules/
│   │   └── robot.js     # 机器人专用状态模块
│   └── index.js         # Vuex 主配置文件

第二步:创建机器人状态模块
创建 src/store/modules/robot.js 文件,内容如下:

// 从本地存储读取初始位置(实现持久化)
const getInitialPosition = () => {try {return JSON.parse(localStorage.getItem('robotPosition')) || { x: 100, y: 100 }} catch {return { x: 100, y: 100 }}}export default {namespaced: true,  // 启用命名空间state: () => ({position: getInitialPosition(),visibility: true}),mutations: {UPDATE_POSITION(state, newPos) {state.position = newPos// 同步到本地存储localStorage.setItem('robotPosition', JSON.stringify(newPos))},TOGGLE_VISIBILITY(state) {state.visibility = !state.visibility}},actions: {setPosition({ commit }, position) {commit('UPDATE_POSITION', position)},resetPosition({ commit }) {commit('UPDATE_POSITION', getInitialPosition())}},getters: {formattedPosition: state => {return `X: ${state.position.x}px, Y: ${state.position.y}px`}}}

第三步:配置主Store文件
修改 src/store/index.js:

import Vue from 'vue'
import Vuex from 'vuex'
import robot from './modules/robot'Vue.use(Vuex)export default new Vuex.Store({modules: {robot  // 注册机器人模块}
})

第四步:初始化Vuex
在 main.js 中挂载 store:

import Vue from 'vue'
import App from './App.vue'
import store from './store'  // 自动识别 index.jsnew Vue({store,  // 注入全局 storerender: h => h(App)
}).$mount('#app')

第五步(可选):增强持久化配置

如果要实现更复杂的持久化,可以使用 vuex-persistedstate:

1.安装插件:

npm install vuex-persistedstate

2.修改 store 配置:

// store/index.js
import createPersistedState from 'vuex-persistedstate'export default new Vuex.Store({modules: { /*...*/ },plugins: [createPersistedState({paths: ['robot.position']  // 只持久化位置信息})]
})

第六步:创建全局机器人组件(components/GlobalRobot.vue)

<template><div class="global-robot" :style="robotStyle" @mousedown="startDrag" @click="opendialog">🤖</div>
</template><script>
import { mapState, mapActions } from 'vuex'export default {name: 'GlobalRobot',data() {return {isDragging: false,dragOffset: { x: 0, y: 0 },elementWidth: '',elementHeight: ''}},computed: {...mapState('robot', ['position']),robotStyle() {return {left: `${this.position.x}px`,top: `${this.position.y}px`,zIndex: 9999}}},methods: {...mapActions('robot', ['setPosition']),startDrag(e) {this.isDragging = trueconst rect = this.$el.getBoundingClientRect()this.elementWidth = rect.widththis.elementHeight = rect.heightconsole.log(this.elementWidth)console.log(this.elementHeight)this.dragOffset = {x: e.clientX - this.position.x,y: e.clientY - this.position.y}document.addEventListener('mousemove', this.onDrag)document.addEventListener('mouseup', this.stopDrag)e.preventDefault()},onDrag(e) {if (!this.isDragging) returnconst maxX = window.innerWidth - this.elementWidthconst maxY = window.innerHeight - this.elementHeightconst newX = e.clientX - this.dragOffset.xconst newY = e.clientY - this.dragOffset.y// 严格边界限制this.setPosition({x: Math.max(0, Math.min(newX, maxX)),y: Math.max(0, Math.min(newY, maxY))})console.log(`边界检测: newX=${newX}, maxX=${maxX}, clampedX=${Math.max(0, Math.min(newX, maxX))}`
)},stopDrag() {this.isDragging = falsedocument.removeEventListener('mousemove', this.onDrag)document.removeEventListener('mouseup', this.stopDrag)},opendialog() {this.dialogVisible = true}}
}
</script><style scoped>
.global-robot {position: fixed;width: 100px;height: 100px;/* background-image: linear-gradient(92deg, #407cd6 15%, #3ebcb4 48.8525390625%, #397ace 100%); */border-radius: 50%;display: flex;justify-content: center;align-items: center;font-size: 50px;cursor: move;user-select: none;box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);transition:transform 0.2s,box-shadow 0.2s;pointer-events: auto;/* 确保可交互 */
}.global-robot:hover {transform: translateY(-2px);box-shadow: 0 6px 16px rgba(0, 0, 0, 0.25);
}.global-robot:active {cursor: grabbing;transform: scale(0.95);
}
</style>
http://www.dtcms.com/a/501737.html

相关文章:

  • 嘉峪关做网站衡水安徽学校网站建设
  • 免费asp主机网站现在怎么做网络推广
  • 创建一个网站的创业计划书曲阜企业网站建设
  • 哈尔滨门户网站建站官网网站建设平台
  • 2015做那个网站能致富wordpress 加速js插件
  • 青岛物流公司网站建设品牌建设助力乡村振兴
  • 网站后台管理系统源码下载商融交通建设工程有限公司网站
  • 上海知名网站推广商业网站建设实训指导书
  • 用什么程序做网站最好优化天津网站建设企业系统
  • 网站你懂我意思正能量晚上不用下载无极app定制开发公司网站模板
  • 宜昌网站制作公司亿腾互联网门户网站模板
  • 网站集约化建设探讨建设网站商城需要多少费用吗
  • 那个网站专利分析做的好陕西省房和城乡建设厅网站
  • 临沂龙文网站建设工业和信息化部五系网站建设
  • 企业做网站带来的好处做网站的软件叫code
  • 公司建网站要多少钱青海西宁最新消息今天
  • 下载网站的搭建成都地铁建设分公司网站
  • 苏州北京商场网站建设石家庄专业信息门户网站定制
  • 中山高端网站建设公司国内建站 wordpress
  • 北京网站建设 知乎肥乡专业做网站
  • 重庆市建设工程造价管理总网站如何给一个网站做定时的更新
  • 免费的个人空间建网站有找猎聘网站做简历优化的
  • 24小时学会网站建设 下载wordpress 返回 插件
  • 视频作为网站背景华为商城的网站建设
  • 网站怎么换空间商韩国网站免费模板
  • 网站建设进度时间表桥梁建设杂志网站
  • 晓风彩票网站建设源代码授权怎么修改wordpress侧边栏信息
  • 网站seo与网站没关宁波网站搭建公司
  • 郑州网站建设学校常州微网站开发
  • 为自己网站建设上海 网络推广