8 Vue 开发方案

基于Simulink的无迹卡尔曼滤波(UKF)SOC高精度估计仿真 本文介绍了基于Simulink的无迹卡尔曼滤波(UKF)在电池SOC高精度估计中的应用。通过无迹变换替代传统EKF的线性化过程,UKF显著提升了SOC估计精度,在强非线性工况下误差可控制在0.5%以内。文章详细阐述了UKF的核心原理,包括Sigma点生成、状态预测和观测更新等关键步骤,并基于Thevenin等效电路模型构建了完整的UKF SOC估算系统。通过Simulink建模和仿真验证,展示了UKF在大电流脉冲、变温工况等复杂场景下的优异性能,其动态响应时间小于30ms,长期累积误差低于0.7%。研究为储 阅读详情

通用需求


axios 封装

封装 axios 请求
import axios from 'axios' // 导入 axios

// 第一种: 直接配置在 axios 上(无法配置多个)
axios.defaults.baseURL = 'http://ttapi.research.itcast.cn/'

// 第二种: 使用 create 方法创建一个 axios 实例化对象(能够配置多个)
// 1. 设置基准地址并暴露(request.js)
const request = axios.create({
  baseURL: 'http://ttapi.research.itcast.cn/' // 基础路径
})
export default request

// 2. 针对不同组件暴露不同的方法(xxx.js)
import request from './request.js'
export const getUserInfoApi = () => {
  return request({
    method: 'GET',
    url: '/user'
  })
}

// 3. 集中暴露(index.js)
import {getUserInfoApi} from './xxx.js'

export default getUserInfoApi = getUserInfoApi

设置 axios 请求/拦截器
import axios from 'axios'
import router from '@/router'
import { Message } from 'element-ui'
import store from '@/store'
import { isTimeOut } from '@/utils/auth.js'

const timeOut = 3600 * 1000 // 秒

// 创建 axios 实例对象
const request = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, // 请求基准地址
  timeout: 10 * 1000 // 请求超时(秒)
})

// 请求拦截器
request.interceptors.request.use(config => {
  // 判断是否存在 token
  if (store.getters.token) {
    // 判断时间戳是否过期,如果过期则清空登录信息,返回登录页
    if (isTimeOut(timeOut)) {
      // 通过判断说明已超时,删除登录信息,主动跳转登录也
      store.dispatch('user/logout') // 清空登录信息
      router.push('/login') // 跳转登录页
      return Promise.reject(new Error('登录超时'))
    }

    config.headers['Authorization'] = `Bearer ${store.getters.token}` // 将 token 添加到请求头中
  }
  return config // 必须返回请求对象
}, error => {
  return Promise.reject(error) // 返回错误对象
})

// 响应拦截器
request.interceptors.response.use(response => {
  const { success, message, data } = response.data // 解构数据(axios 默认包了一层data)
  // 判断返回状态
  if (success) {
    return data // 业务成功,返回数据
  }
  Message.error(message) // 提示错误信息
  return Promise.reject(new Error(message)) // 返回错误对象
}, error => {
  // 判断错误对象的 token 是否超时
  if (error.response && error.response.data && error.response.data.code === 10002) {
    store.dispatch('user/logout') // 清空数据
    router.push('/login')
  } else {
    Message.error(error.message) // 提示错误对象信息
  }
  return Promise.reject(error) // 返回错误对象
})

export default request

页面适配

移动端 rem 适配方案

PostCSS CSS处理器

PostCSS 是一个处理 CSS 的处理工具,本身功能比较单一,它主要负责解析 CSS 代码,再交由插件来进行处理,它的插件体系非常强大,所能进行的操作是多种多样的
PostCSS 一般不单独使用,而是与已有的构建工具进行集成
Vue CLI 默认集成了 PostCSS,并且默认开启了 autoprefixer 插件

Vue CLI 内部使用了 PostCSS,可以通过 .postcssrc 或任何 postcss-load-config 支持的配置源来配置 PostCSS。也可以通过 vue.config.js 中的 css.loaderOptions.postcss 配置 postcss-loader
默认开启了 autoprefixer。如果要配置目标浏览器,可使用 package.json 的 browserslist 字段。

目前 PostCSS 已经有 200 多个功能各异的插件。开发人员也可以根据项目的需要,开发出自己的 PostCSS 插件

1. 利用 lib-flexible 动态设置 rem 基准值
npm i amfe-flexible // 安装

// 自行配置可以如此书写 scss
@function rem($px) {
  @return calc($px / 37.5) + rem;
}

width: rem(100);

2. 使用 postcss-pxtorem 将 px 转为 rem
npm install postcss-pxtorem -D // 安装

.postcssrc.js // 配置文件
module.exports = {
  plugins: {
    'autoprefixer': { // 此配置 Vue/cli 默认配置,可以省略
      browsers: ['Android >= 4.0', 'iOS >= 8']
    },
    'postcss-pxtorem': {
      rootValue: 37.5, // 根据根字号配置
      propList: ['*'] // 需要转换的属性: 所有属性
    }
  }
}

3. 如何解决自身设计稿与 UI 组件设置不同

因为 rem 适配方案本质上是根据设计稿像素的十分之一来进行设定,而 UI 组件是固定的 375 ==> 37.5,这样就会导致不匹配的情况

.postcssrc.js // 配置文件
module.exports = {
  plugins: {
    'postcss-pxtorem': {
      rootValue({ file}) {
        return file.indexOf('vant') !== -1 ? 37.5 : 75 // 根据判断是否为 UI 组件设置大小(vant 37.5; 自身: 75)
      }
      propList: ['*'] // 需要转换的属性: 所有属性
    }
  }
}

模拟数据

登录加密

1. 安装插件

npm install crypto-js

2. 创建工具类

import CryptoJS from 'crypto-js'

// 需要和后端一致
const KEY = CryptoJS.enc.Utf8.parse('1234567890123456')
const IV = CryptoJS.enc.Utf8.parse('1234567890123456')

export default {
  /**
   * 加密
   * @param {*} word
   * @param {*} keyStr
   * @param {*} ivStr
   */
  encrypt(word, keyStr, ivStr) {
    let key = KEY
    let iv = IV
    if (keyStr) {
      key = CryptoJS.enc.Utf8.parse(keyStr)
      iv = CryptoJS.enc.Utf8.parse(ivStr)
    }
    let srcs = CryptoJS.enc.Utf8.parse(word)
    var encrypted = CryptoJS.AES.encrypt(srcs, key, {
      iv: iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.ZeroPadding
    })
    return CryptoJS.enc.Base64.stringify(encrypted.ciphertext)
  },

  /**
   * 解密
   * @param {*} word
   * @param {*} keyStr
   * @param {*} ivStr
   */
  decrypt(word, keyStr, ivStr) {
    let key = KEY
    let iv = IV

    if (keyStr) {
      key = CryptoJS.enc.Utf8.parse(keyStr)
      iv = CryptoJS.enc.Utf8.parse(ivStr)
    }

    let base64 = CryptoJS.enc.Base64.parse(word)
    let src = CryptoJS.enc.Base64.stringify(base64)

    let decrypt = CryptoJS.AES.decrypt(src, key, {
      iv: iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.ZeroPadding
    })

    let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
    return decryptedStr.toString()
  }
}

3. 引入并加密

import aes from '@/utils/aes'

let encryptionPassword = aes.encrypt(password)

Vue 脚手架代理

方案一: 简易配置

// vue.config.js 配置
devServer: {
  proxy:"http://localhost:5000"
}

方案二: 具体配置

// vue.config.js 配置
module.exports = {
    devServer: {
      proxy: {
      '/api1': {// 匹配所有以 '/api1'开头的请求路径
        target: 'http://localhost:5000',// 代理目标的基础路径
        changeOrigin: true,
        pathRewrite: {'^/api1': ''}
      },
      '/api2': {// 匹配所有以 '/api2'开头的请求路径
        target: 'http://localhost:5001',// 代理目标的基础路径
        changeOrigin: true,
        pathRewrite: {'^/api2': ''}
      }
    }
  }
}
/*
   changeOrigin设置为true时,服务器收到的请求头中的host为: localhost:5000
   changeOrigin设置为false时,服务器收到的请求头中的host为: localhost:8080
   changeOrigin默认值为true
*/

后台管理系统需求


登录

import { getToken, setToken, removeToken, setTimestamp } from '@/utils/auth.js'
import { loginAPI, getUserInfoAPI, getUserDetailByIdAPI } from '@/api/index.js'
import { resetRouter } from '@/router'

const state = {
  token: getToken(), // 用户 token
  userInfo: {} // 用户基本信息(不能设置为null,映射时访问null中的属性将报错)
}

const mutations = {
  // * 设置 token 并持久化
  setToken(state, token) {
    state.token = token // 保存状态
    setToken(token) // 数据持久化
  },

  // * 删除 token 并重置持久化
  removeToken() {
    state.token = null // 重置状态
    removeToken() // 清空 token 数据持久化
  },

  // * 设置用户信息
  setUserInfo(state, data) {
    state.userInfo = data // 保存数据
  },

  // * 设置用户信息
  removeUserInfo() {
    state.userInfo = {} // 清空数据
  }
}

const actions = {
  // * 异步登录
  async login(context, data) {
    const result = await loginAPI(data) // 调用后端接口请求数据
    context.commit('setToken', result) // 保存token
    // 此时已经获取到了 token ,加上时间戳,主动介入
    setTimestamp() // 设置时间戳
  },

  // * 异步获取用户信息
  async getUserInfo(context) {
    const result = await getUserInfoAPI() // 获取用户基本信息
    const baseInfo = await getUserDetailByIdAPI(result.userId) // 用户员工基本信息
    const baseResult = { ...result, ...baseInfo } // 合并数据
    context.commit('setUserInfo', baseResult) // 设置用户基本信息
    return baseResult // 返回合并数据(为权限控制做准备)
  },

  // * 退出登录
  logout(context) {
    context.commit('removeToken') // 删除 token
    context.commit('removeUserInfo') // 删除用户信息

    resetRouter() // 重置路由表(去除动态路由权限)
    context.dispatch('permission/setRoutes', [], { root: true }) // 情况权限路由数据
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}

权限管理

权限是对特定资源的访问许可,所谓权限控制,也就是确保用户只能访问到被分配的资源,而前端权限归根结底是请求的发起权,请求的发起可能有下面两种形式触发
触发有页面加载触发和页面上的按钮点击触发,总的来说所有的请求发起都触发自前端路由或视图,所以我们可以从这两方面入手,对触发权限的源头进行控制

最终实现

  • 路由方面,用户登录后只能看到自己有权访问的导航菜单,也只能访问自己有权访问的路由地址,否则将跳转4xx提示页
  • 视图方面,用户只能看到自己有权浏览的内容和有权操作的控件
  • 最后再加上请求控制作为最后一道防线,路由可能配置失误,按钮可能忘了加权限,这种时候请求控制可以用来兜底,越权请求将在前端被拦截

实现方案

  • 接口权限: 接口权限目前一般采用jwt的形式来验证,没有通过的话一般返回401,跳转到登录页面重新进行登录,具体实现在于后端
  • 按钮权限:
    • 方案一: 通过 v-if 来判断控制是否能够点击
    • 方案二: 通过自定义指令通过权限鉴权,通过后端返回的权限数据判断对应的按钮是否可以点击
  • 菜单权限:
    • 方案一: 菜单与路由分离,菜单由后端返回,路由跳转时判断跳转信息是否在对应的权限菜单中来控制菜单访问权限
      • 缺点1: 菜单需要与路由做–对应,前端添加了新功能,需要通过菜单管理功能添加新的菜单,如果菜单配置的不对会导致应用不能正常使用
      • 缺点2: 全局路由守卫里,每次路由跳转都要做判断
    • 方案二: 菜单和路由都由后端返回,前端统一定义路由组件,在将后端返回路由通过addRoutes动态挂载之间,需要将数据处理一下,将component字段换为真正的组件
      • 缺点1: 全局路由守卫里,每次路由跳转都要做判断
      • 缺点2: 前后端的配合要求更高
  • 路由权限:
    • 方案一: 初始化就挂载所有的路由,通过标识数据在每次路由跳转时判断用户是否有权限来访问此页面
      • 缺点1: 加载所有的路由,如果路由很多,而用户并不是所有的路由都有权限访问,对性能会有影响。
      • 缺点2: 全局路由守卫里,每次路由跳转都要做权限判断。
      • 缺点3: 菜单信息写死在前端,要改个显示文字或权限信息,需要重新编译
      • 缺点4: 菜单跟路由耦合在一起,定义路由的时候还有添加菜单显示标题,图标之类的信息,而且路由不一定作为菜单显示,还要多加字段进行标识
    • 方案二: 初始化的时候先挂载不需要权限控制的路由,比如登录页,404等错误页。如果用户通过URL进行强制访问,则会直接进入404,相当于从源头上做了控制,登录后,获取用户的权限信息,然后筛选有权限访问的路由,在全局路由守卫里进行调用addRoutes添加路由
      • 缺点1: 全局路由守卫里,每次路由跳转都要做判断
      • 缺点2: 菜单信息写死在前端,要改个显示文字或权限信息,需要重新编译
      • 缺点3: 菜单跟路由耦合在一起,定义路由的时候还有添加菜单显示标题,图标之类的信息,而且路由不一定作为菜单显示,还要多加字段进行标识

路由权限设置

import router from '@/router' // 引入 router 实例
import store from '@/store' // 引入 vuex 实例
import NProgress from 'nprogress' // 引入一份进度条插件
import 'nprogress/nprogress.css' // 引入进度条样式

// 白名单路径
const whilePath = ['/login', '/404']

NProgress.configure({ showSpinner: false }) // NProgress 关闭顶部加载状态

// 路由前置守卫
router.beforeEach(async(to, from, next) => {
  NProgress.start() // 开启进度条
  // 判断有无 token
  if (store.getters.token) {
    // 有 token 做免登陆功能
    if (to.path === '/login') {
      next('/') // 免登录到主页
    } else {
      // 请求用户数据,但要先判断用户数据是否存在
      if (!store.getters.userId) {
        // 因为获取用户数据是异步任务,所有需要使用 await 暂停函数运行
        const { roles } = await store.dispatch('user/getUserInfo') // 用户数据不存在获取用户数据
        // 此时用户数据已经获取,获取路由权限(actions 是异步操作)
        console.log(roles.menus)
        const asyncRoute = await store.dispatch('permission/filterRoutes', roles.menus)
        // 动态添加路由规则
        router.addRoutes([...asyncRoute, { path: '*', redirect: '/404', hidden: true }])
        // 使用动态添加路由规则后需要手动 next(地址) 不然会报错
        next(to.path)
      } else {
        next() // 其余直接放行
      }
    }
  } else {
    // 判断路径是否在白名单中
    if (whilePath.includes(to.path)) {
      next() // 在白名单,直接放行
    } else {
      next('/login') // 不在白名单,强制调整登录页
    }
  }

  NProgress.done() // 强制停止进度条,防止手动切换地址时不经过后置守卫而导致的错误
})

// 路由后置守卫
router.afterEach((to, from) => {
  NProgress.done() // 关闭进度条
})

[Dify实战] 项目复盘助手:自动拉数据、生成复盘报告 本文介绍如何利用Dify平台构建自动化项目复盘助手,解决传统人工复盘效率低、易遗漏等问题。系统通过自动拉取Git/Jira等数据源,计算关键指标后,由LLM生成结构化复盘报告。文章详细讲解了数据采集、指标计算、Prompt设计等核心模块的实现,并分享了完整Workflow搭建步骤。实践表明,该系统能将复盘耗时从4小时缩短至10分钟,显著提升数据准确率和执行频率。最后总结了数据一致性、输出质量等常见问题的解决方案,强调Dify+LLM组合可实现复盘流程的自动化流水线。 阅读详情

相关推荐

Plecs仿真进阶:半桥LLC谐振变换器从开环到闭环的实战解析

本文通过Plecs软件,详细解析了半桥LLC谐振变换器从开环模型搭建到闭环控制实现的完整仿真流程。文章深入探讨了谐振参数设置、关键波形解读,并重点分享了基于PI控制器的闭环调试实战经验与参数整定技巧,帮助工程师高效掌握这一高效拓扑的仿真与设计方法。

weixin_29231263的博客 280

二手交易平台避坑指南:SpringBoot+Vue开发中遇到的8个典型问题及解决方案

本文详细解析了使用SpringBoot+Vue开发二手交易平台时常见的8个技术难题及解决方案,包括文件上传处理、跨域问题、交易状态机设计、实时消息通知、Elasticsearch优化、分布式事务处理、敏感词过滤和性能监控。通过源码示例和实战经验,帮助开发者高效避坑,提升开发效率。

weixin_29313547的博客 403

AI Agent实战:WorkBuddy安装部署、任务执行与模型接入全教程

AI Agent是当前自动化办公与智能工作流的核心技术,它区别于传统问答式AI,能够理解目标、拆解任务并调用工具交付完整成果。其底层原理基于任务规划、工具调用与结果验证的循环机制,让机器从“提供建议”进化为“完成任务”。在工程实践中,合理配置模型服务(如接入DeepSeek)、设计标准化Skill(技能包)与自定义指令,可以显著提升Agent在报告生成、数据分析、竞品调研等场景中的稳定性与效率。WorkBuddy作为典型的任务式AI工作台,为运营、产品、开发等多角色提供了统一入口,覆盖安装部署、任务描述公式

weixin_26712075的博客 289

Vue-8.Vue项目配置详解

Vue项目配置详解

yueerba126的博客 1079

win11本地部署openclaw实操第5集-X11图形化界面搭建,让WSL2“看见”世界

本文介绍了在WSL2中实现图形界面(GUI)的方法。由于WSL2默认没有图形界面,需要使用X11服务器作为"翻译显示器",将Linux程序的图形指令渲染到Windows窗口中。推荐使用VcXsrv作为X11服务器,详细说明了其安装和配置步骤,包括选择"One large window"显示模式、禁用访问控制等关键设置。随后在Ubuntu中安装轻量级xfce4桌面环境,并通过设置DISPLAY环境变量将图形输出指向VcXsrv。最终通过startxfce4命令成功在Vc

weixin_44626085的博客 811

【ubuntu】如何搭建AFTR+B4环境

为何要使用ipv6 目前ipv4地址已经不够用了,而IPv6采用128位地址长度,几乎可以不受限制地提供地址。而且ipv6具有更高的安全性。 主流的ipv6方案 1.双栈方案 :所有设备同时支持IPv4/IPv6协议栈,核心理念在于其传送网同时支持IPv4和IPv6 2.DS-Lite方案 :IPv4‐in‐IPv6 隧道和 NAT 这两个基本技术,同时支持IPV4与IPV6,对于ipv4用户,可以通过ipv6隧道与ipv4业务平台实现通信;针对ipv6用户,可直接通过ipv6网络通信。 3.6RD方案 :

weixin_43863426的博客 2723

VUE 8

优化:由 stores/index.js 统一导出,导入路径统一 `./stores`,而且仓库维护在 stores/modules 中。- 优化:由 stores 统一维护,在 stores/index.js 中完成 pinia 初始化,交付 main.js 使用。官方文档: https://element-plus.org/zh-CN/guide/quickstart.html。- 现在:初始化代码在 main.js 中,仓库代码在 stores 中,代码分散职能不单一。

2401_88624699的博客 683

【数据分析】基于多组学数据整合的微生物与宿主互作网络构建及可视化分析

综上所述,本教程通过详细的步骤和方法,展示了如何整合微生物群落数据、宿主基因表达数据和代谢组数据,构建微生物与宿主互作网络,并进行可视化分析。这种方法为研究微生物与宿主之间的复杂关系提供了一种有力的工具,有助于推动相关疾病的研究和治疗。然而,在实际应用中,需要注意数据处理和分析过程中的各种问题,并结合实验验证来提高研究结果的可靠性和科学性。未来,随着多组学技术的不断发展和完善,以及数据分析方法的创新,相信我们能够更深入地理解微生物与宿主之间的互作机制,为疾病的预防、诊断和治疗提供更有力的支持。

专注生信领域 370

VUE---8.表单&选项

v-model:value="data数据" 简写 v-model="data数据"A: 与输入框内容进行关联, 获取的是内容B: 单个属性名 txt:''A: 需要配合value属性使用, 获取value属性的值B: 单个属性名 rad:""A: 获取多选框的checked属性(布尔值) true选择 false未选择B: 单个属性名 che:""...

xi_xi_123456的博客 539

DC/DC开关电源学习笔记(十三)Buck-Boost升降压电路工作原理

Buck-Boost电路是一种能够实现输出电压高于或低于输入电压的DC-DC变换器,且输出电压极性与输入电压相反。它结合了Buck(降压)和Boost(升压)两种拓扑的特点,广泛应用于需要灵活电压调整的场合,如电池供电设备、LED驱动和工业控制系统。本文将从电路结构、工作原理、关键公式推导及实际应用等方面进行详细分析。

小幽余生不加糖 3505

手把手教你学simulink(12.10)--设计和仿真一个用于控制飞机纵向运动(高度和速度)的多变量控制系统

飞机的纵向运动控制是航空工程中的一个重要问题,涉及飞机的高度和速度的精确控制。多变量控制系统可以同时控制多个飞行参数,确保飞机在最佳条件下运行。Simulink提供了一个强大的平台,用于建模、仿真和分析动态系统,非常适合设计和测试多变量控制系统。通过本项目的实施,我们成功设计和仿真了一个用于控制飞机纵向运动(高度和速度)的多变量控制系统。该项目展示了从系统建模、控制器设计、仿真验证到结果分析的完整流程,为多变量控制系统的设计提供了有价值的参考。

MHD0815的博客 598

vue-8:Vuex状态管理模式库 + map辅助函数简写

vue-8:Vuex状态管理模式库 + map辅助函数简写

qq_60839348的博客 613

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Vue-8-组件双向传值

看着别人写的组件,各种知识点不懂,难以理解其中的逻辑,实在没法工作,今天学习下组件传值,子组件既能接收父组件的值,也能返回更新后的值给父组件。刚好最近看了Cursor,下载试用了下,真是太好用了,对于我这种前端小白来说,大大提升了学习的效率。本次复习的关键知识点为组件双向绑定,有如下两个知识点。

2401_86113453的博客 430

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

YOLOv8 Web前端界面开发:Vue.js集成方案

通过结合YOLOv8的高效目标检测能力与Vue.js的响应式前端框架,构建可交互的Web级AI应用。利用Docker实现环境统一,前后端分离架构提升开发效率,支持实时检测、动态渲染与跨平台访问,打造可落地的可视化智能系统。

weixin_36173034的博客 457

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

原创全新打包工具Parcel零配置VueJS开发脚手架

parcel-vue 一个基于Parcel打包工具的 VueJS急速开发脚手架解决方案,强烈建议使用node8.0以上 项目地址: https://github.com/w3c-king/p... 初始化项目 $ git clone https://github.com/w3c-king/parcel-vue.git 安装依赖 $ cd ...

weixin_34228662的博客 103

常见问题解答:Vue File Agent开发者必知的8个解决方案

Vue File Agent作为Vue JS生态中功能全面且美观的文件上传组件,在实际开发中难免会遇到各种技术挑战。本文整理了开发者最常遇到的8个问题及解决方案,帮助你快速解决集成过程中的痛点,提升文件上传功能的稳定性和用户体验。 ## 1. 如何限制上传文件的大小和类型? 文件验证是上传功能的基础需求,Vue File Agent提供了灵活的配置选项来限制文件大小和类型。通过设置`maxSi

gitblog_00463的博客 859

基于RuoYi-Vue 3.8.8和Dataroom 2.0.0 集成开发的物联网可视化平台。基于Vue的大屏可视化设计器,前后端一体化解决方案,几十种炫酷图表,支持多种数据来源接入,适用于大屏、

基于RuoYi-Vue 3.8.8和Dataroom 2.0.0 集成开发的物联网可视化平台。🔥基于Vue的大屏可视化设计器,前后端一体化解决方案,几十种炫酷图表,支持多种数据来源接入,适用于大屏、低代码、BI场景,使用简单,代码完全开源。

jonehoo的博客 2675

vue 始终在元素底部,使用Vue.js滚动到div的底部

I have a Vue component with several elements in it. I want to automatically scroll to the bottom of that element when a method in the component is called (basically, do the same as in Scroll to bottom...

weixin_39849930的博客 204

vue 始终在元素底部_使用Vue.js滚动到div的底部

I have a Vue component with several elements in it. I want to automatically scroll to the bottom of that element when a method in the component is called (basically, do the same as in Scroll to bottom...

weixin_39813574的博客 203

企业级应用开发架构优化:基于.NET 8与Vue 3的全栈低代码解决方案

在数字化转型的浪潮中,企业应用开发面临多重技术挑战。随着业务复杂度的提升,传统开发模式在数据库兼容性、前后端协作效率和代码复用性方面逐渐显现瓶颈。VOL.Framework作为基于.NET 8与Vue 3技术栈的企业级低代码平台,通过创新的架构设计和自动化工具链,为开发团队提供了可扩展、高性能的解决方案。本文将深入分析该框架的技术实现原理、核心模块设计以及在实际生产环境中的应用实践。 ## 架构

gitblog_00855的博客 1026

Vue3 + ThinkPHP8 + PHP8.x 生态与 Swoole 增强方案对比分析

​​​​​​​​。

琼楼玉宇 1048

VOL.Framework:企业数字化转型的“效率革命“,300%开发加速的.NET 8 + Vue 3低代码方案

在企业数字化转型浪潮中,技术团队正面临前所未有的效率挑战。传统开发模式下,70%的研发资源消耗在重复的CRUD编码上,而业务需求的变化速度却日益加快。VOL.Framework作为基于.NET 8 + Vue 3技术栈的全栈低代码解决方案,正在重新定义企业级应用的开发范式,让开发团队真正实现"开发即部署"的现代化工作流。 ## 企业开发效率的"三重困境"诊断 ### 技术债务堆积如山 传统分层

gitblog_00681的博客 621

基于.NET 8+SqlSugar+Vue3的企业级通用权限开发框架:现代化后台系统快速构建方案

Admin.NET是一个基于.NET 8和Vue3的现代化通用权限开发框架,采用Furion和SqlSugar技术栈构建,专为中小企业快速开发平台设计。该框架实现了前后端分离架构,集成了多租户、动态API、任务调度、打印服务等高级功能,支持国产化软硬件环境,完全符合等保和密评要求。通过模块化插件式开发模式,开发者可以快速构建复杂的企业管理系统,同时保持代码的清晰结构和易维护性。 ## 为什么需要

gitblog_00847的博客 260

计算机毕业设计ssm基于vuejs的二手车交易平台ue120系统+程序+源码+lw+远程部署

springboot基于springboot的影视资讯管理系统。springboot基于web的数码产品应用平台设计与实现。springboot基于springboot的社会公益平台。ssm基于HTML的“牧经校园疫情防控网站”的设计与实现。JSP图书在线借阅系统的设计与实现sqlserver。JSP宠物食品店系统的设计与实现sqlserver。jsp会议管理系统的设计与实现sqlserver。ssm基于SSM高校教师个人主页网站的设计与实现。ssm基于JAVA的OA办公系统的设计与实现。...

m0_71813017的博客 365

通义千问1.5-1.8B-Chat-GPTQ-Int4在Vue3前端开发中的集成方案

本文介绍了如何在星图GPU平台上自动化部署通义千问1.5-1.8B-Chat-GPTQ-Int4镜像,并详细阐述了将其集成到Vue3前端应用中的方案。该方案通过前后端分离架构,使开发者能够快速构建具备智能对话功能的Web应用,例如智能客服或辅助写作工具,从而提升用户体验与开发效率。

weixin_33562004的博客 352

【项目开发】同城分类信息发布系统类似58同城

优质的同城分类信息发布系统。致力于为广大用户解决身边的实际问题 提供便民信息发布平台,享受到本地近距离的一站式便捷生活服务。

xin_king的专栏 1017
上一篇: 7 Vue3
下一篇: 9 Vue 框架生态
taciturn丶
博客等级 码龄9年 471粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

taciturn丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值