[Vue] 3. 奇奇怪怪的经验

【AI】使用Cursor和AI编程生成的VUE前端框架 本项目是一个基于VUE.js的前端框架,结合了登录、图形验证码、权限校验等常用功能模块。通过与Cursor AI交互生成的代码,展示了AI在编程中的潜力与效率。 阅读详情

1.给鼠标换图标(相对路径)

全局更换:在App.Vue中<style>添加如下代码

html,body{
   /*cursor: pointer;*/
   cursor: url('../static/image/2.png'),auto;
}

目录结构如图,注意图片要32*32以下


2.Vue中添加live2d

效果:

参考:https://www.jianshu.com/p/29500e047d7c

注意一定要把live2dw放入static文件夹中(Vue-cli3.0以下),相对路径自己调

注意一定要把live2dw放入public文件夹中(Vue-cli3.0以上),相对路径自己调


3.获取本地json的值

效果: 第一行是json的文本,第二行是“test“对应”的值

实现:xxx.Vue代码如下     使用JSON.stringify将Object变成string

<div>
       <p>{{json}}</p>
       <p>{{json.test}}</p>
</div>
<script>
import axios from 'axios'
export default {
    data(){
        return {
            msg:"hello",
            json:""
        }
    },
    methods:{
        getJson(){
           axios({
               url: '/static/json/1.json',
               method: 'get',
           }).then((res)=>{
               this.json=res.data;
               console.log("???"+JSON.stringify(res.data));
           })
        }
    },
    created(){
        this.getJson();
    }
}
</script>

注意相对路径


4.Vue的自适应高度布局 采用flex布局示例

效果:

xxx.Vue 如下

<div class="flex">
            <div class="header">top</div>

            <div class="flex-item"> 
                <div>
                    <p>{{json}}</p>
                    <p>{{json.test}}</p>
                    <p>{{json.test}}</p>
                    <p>{{json.test}}</p>
                    <p>{{json.test}}</p>
                    <p>{{json.test}}</p>
                    <p>{{json.test}}</p>
                    <p>{{json.test}}</p>
                    <p>{{json.test}}</p>
                    <p>{{json.test}}</p>
                    <p>{{json.test}}</p>
                    <p>{{json.test}}</p>
                </div>
            </div>

            <div class="footer">bottom</div>
</div>

重点是下面的css(带注释)

<style>
  .flex {
    display: flex;         /*父级元素:声明是flex布局*/
    flex-direction: column;/*使得子级div里面的块 竖向排列 */
    height: 100vh /*vh就是当前屏幕可见高度的1%,也就是说height:100vh == height:100%;*/ 
  }
  .flex-item {
    flex: 1;/*假设有3个元素123排列flex,2加上"flex:1" => 2展开铺满。
              假设有4个元素1234排列flex,2、3都加上"flex:1" => 2、3平均展开铺满。
              生效的前提是父级元素声明了flex布局跟100%高度*/
    overflow: auto;/*如果内容被修剪,则浏览器会显示滚动条,以便查看其余内容。*/
  }
  .footer,.header{
      background:black;
      color: blanchedalmond;
      min-height: 60px;
  }
</style>

 


5.css插入图片

 <img src="../../static/image/2.png" />

目录结构:


6.垂直居中的骚操作

知识点:当父元素设置了弹性布局flex并且设置了高度后,只要设置元素的margin:auto就可以实现元素的垂直居中了

然后用<el-col>来水平布局,好看一点

效果:

父级元素:

子级元素:

 


7.试试导航栏菜单el-menu:

效果:http://localhost:8080/#/Hellocopy/Son1

http://localhost:8080/#/Hellocopy/Son2

实现:在index.js  声明父子组件   如果是Vue-cli3.0以上这里就别用懒加载

 {
      path: '/Hellocopy',
      name: 'Hellocopy',
      component: Hecopy,   //爸爸
      children: [
        {
          path: 'Son1',
          name: 'Son1',
          component: () => import('@/components/Son1')//绑定儿子组件,懒加载
        },
        {
          path: 'Son2',
          name: 'Son2',
          component: () => import('@/components/Son2')//绑定儿子组件,懒加载
        }
      ]
}

项目结构图

 

主页面Hecopy.Vue分为header+中间+footer三层,

用flex布局解决垂直布局,el-col解决水平布局。

header里引入导航菜单栏(须有element-ui依赖)

<div class="header">
        <el-col span="6">
          <h3>title</h3>
        </el-col>
        <el-col span="9">
          <h3></h3>
        </el-col>
        <el-col span="6">
          <el-menu
            :default-active="this.$route.path"
            class="el-menu-demo"
            @open="handleOpen"
            @close="handleClose"
            background-color="white"
            text-color="#2E131B"
            active-text-color="#FA6690"
            router="true"
            mode="horizontal"<!-- 竖着,可以改成横着 -->
          >
            <el-menu-item index="/Hellocopy/Son1">
              <!-- 配置子页面 -->
              <i class="el-icon-menu"></i>
              <span slot="title">列表</span>
            </el-menu-item>

            <el-menu-item index="/Hellocopy/Son2">
              <!-- 配置子页面 -->
              <i class="el-icon-menu"></i>
              <span slot="title">个人中心</span>
            </el-menu-item>
          </el-menu>
        </el-col>
</div>

中间层加入这个,router-view声明儿子的路由出口

      <div class="flex-item">
        <div class="item">
          <router-view></router-view>
        </div>
      </div>

这样就能用el-menu导航了


8.导入element-ui

在命令行跑npm i element-ui -S 、 npm install

main.js加入如下代码

import ElementUI from "element-ui"
import 'element-ui/lib/theme-chalk/index.css';
Vue.config.productionTip = false;
Vue.use(ElementUI);

9.取消ul的偏移与点点

ul{
        list-style: none;
        margin:0;padding:0;
}

10.Vue函数

关键词:Es6 箭头函数 普通函数 this

xxx.Vue,代码如下

功能:按年龄age查找数组lists1的函数

    
data(){
    return {
     lists1:[{name:"123",age:"32"},{name:"1123",age:"323"}]
    }
},



methods:{
    Add2(id){ //写法1
       console.log(this.lists1.find(todo=>todo.age===id))
       return this.lists1.find(todo=>todo.age===id)
    }
    Add2:function(id){ //写法2
       console.log(this.lists1.find(todo=>todo.age===id))
       return this.lists1.find(todo=>todo.age===id)
    }
    Add2:(id)=>{//写法3   报错:this.lists1找不到
       console.log(this.lists1.find(todo=>todo.age===id))
       return this.lists1.find(todo=>todo.age===id)
    }
}

ES6中  写法1,2等价。

坑点1::methods中用箭头函数的话(比如写法3)(写法3会报错:找不到list1),

报错原因: 在XXX.vue中,支持Vue实例.xxx来访问data(){}中的数据

用了箭头函数后,this不是指向Vue实例了,而是指向前一花括号method,表示undefined,所以报错。

 

然后咱们来细品,看下面,  箭头函数实际上就是一个缩写(第一、第二行等价(不考虑this的话))

箭头函数的XX => { } , XX是参数,后面{ }是函数体

this.lists1.find(todo=>todo.age===id)

this.lists1.find(function (todo) { return todo.age === id; });

let x=todo=>todo.age===id
console.log(this.lists1.find(x))

里面todo表示数组元素,相当于 c++ for(auto i:list){} 里面的i 

第三行可以看到数组.find() 支持函数变量作为参数。


坑点3:如果是非Vue,比如说store.js里面用Vuex,访问state的变量就有问题了,this.list,this.state.list,都找不到

store.js如下: 功能跟上面一样:按title1 查找数组lists的函数

export default new Vuex.Store({ 
     state:{//状态
        lists:[{title1:"test",content1:"test"}]
     },
     getters: {
        getTodoById: (state) => (id) => {  //写法1
            return state.lists.find(todo => todo.title1 === id)
        },
        getTodoById2:function(state,actions){//写法2
            let x=function(id) {
                console.log("action:",actions)
                return  state.lists.find(todo => todo.title1 === id)
            }
            return x;
        },
        getTodoById2(id) { //写法3
            return  this.lists.find(todo => todo.title1 === id)
        }    
    }   



})

你会发现,写法3此时报错了,原因看红字

写法12是等价的。多箭头函数,把第一层的state传进去,

利用函数闭包(嵌套函数)的性质(里层函数能访问到外层函数的变量),访问到最外层的state

 


11.this.$xxxx

文档:https://cn.vuejs.org/v2/api/#vm-data

目前用过 this.$options.name 访问当前Vue中的name变量

this.$root.xx可以访问main.js里的变量

export default {
    name:'List',
}

12 v-bind v-on v-model {{}}

https://blog.youkuaiyun.com/xiaolongqinghua/article/details/86702609

v-bind等于 :   绑定标签的属性值  比如<a>的href   <a :href="url"/>   data(){return {url:"xxx.com"}}   

v-bind一定是绑定data里的变量,如果data没有,就不加双引号,视为属性,比如 <div style="xxx">

v-on 等于@   绑定触发事件  比如 @click 点击事件   <p @click="xxx()">   methods:{xxx(){} }

v-model  双向绑定 html跟js里同时变化, 比如 <input type='text' v-model='content'/>   data(){return {content:""}}   

{{}}只能在html里面,可以是变量,字符串,函数,正则表达式


13 v-if  v-for

 <p v-if="sum>3">{{sum}}>3</p>
 <p v-else>{{sum}}<=3</p>
 export default {
  data(){
      return {   
        sum:1,
      }
    },
 }
 <ul>
      <li v-for="(item,idx) in pageLists" :key="idx" style="color:black;"> 
              <!-- for 绑定 pageLists事件返回的 lists + 绑定下标idx,元素item -->
              <!-- {{item.title1}}-{{item.content1}} -->
              <el-col :span="12" >
                <el-card  shadow="hover" >
                     <span >{{item.title1}}</span>
                     <el-divider></el-divider>
                     <span>{{item.content1}}</span>
                </el-card>
              </el-col>
      </li>
 </ul>
export default {

     computed:{ //动态监听变化
        pageLists:()=>store.state.lists,
     },

}

v-for 绑定 pageLists事件返回的 lists + 绑定下标idx,元素item

v-for加唯一标识:key的原因 https://www.jianshu.com/p/4bd5e745ce95

官方v-for文档:https://cn.vuejs.org/v2/guide/list.html#%E7%BB%B4%E6%8A%A4%E7%8A%B6%E6%80%81

就是为了数组有变化时(排序,增加,删除),下标指向保持稳定


14.试试走马灯

效果:默认2s自动切换

          <el-carousel height="400px">
            <el-carousel-item v-for="i in urls" :key="i">
              <el-image style="opacity:0.9;height:400px" :src="i" fit="cover"></el-image>
              <h3 class="small">{{ fit }}</h3>
            </el-carousel-item>
          </el-carousel>


 data() {
    return {
      urls: 
           ["/img/12.jpg",
            "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
            "/img/2.jpg"]
      //fits: ['fill', 'contain', 'cover', 'none', 'scale-down'],
    };

 

 

vue3+ts+vite环境中使用json-editor-vue3,记录遇到的奇奇怪怪问题!!! vue3+ts+vite环境中使用json-editor-vue3仅仅简单记录下最近使用这个插件的一些注意事项,这个插件很容易使用的。json-editor-vue3文档以上是我在实际使用json-editor-vue3的过程,最后说下为什么比较强大呢,因为它是由一个错误回掉的,这样我们是可以知道这个输入json内容和不合规的,并且怎么提示。 阅读详情

相关推荐

185: vue+openlayers 引用hover插件,展示各种鼠标cursor样式

本示例的目的是介绍演示如何在vue+openlayers中使用hover效果,这里是引用了一个hover插件。鼠标对应到相应的feature中时候,获取其类型,并且设定不同的鼠标样式。直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果OpenStreetMap无法加载,请加载其他来练习1)查看基础设置:https://xiaozhuanlan.com/topic/1378924560 或者同样查看:https://blog.csdn.net/cuclife/artic

大剑师兰特的GIS世界 2082

vue自定以鼠标样式cursor

vue自定以鼠标样式cursor

enhenglhm的博客 2559

vue-cursor-fx:for用于交互式元素(如导航)的动画自定义光标效果-w VueJS-SSR兼容

:party_popper: Vue游标Fx 动画自定义光标效果,可用于诸如导航的交互元素-带VueJS-兼容SSR 安装 该软件包可用于npm和yarn 。 # Deps npm install --save @luxdamore/vue-cursor-fx # Or yarn add @luxdamore/vue-cursor-fx 用法 作为组件 // Global component and css import { CursorFx } from &#39;@luxdamore/vue-cursor-fx&#39; ; import &#39;@luxdamore/vue-cursor-fx/dist/CursorFx.css&#39; ; // Install Vue . component ( CursorFx . name ,

cursor:hand和cursor:pointer的区别(vue前端鼠标悬浮变小手)

cursor:hand 与 cursor:pointer 的效果是一样的,都像光标指向链接一样,光标变成手形。向上右改变大小(North East) cursor: ne-resize;向上左改变大小(North West) cursor: nw-resize;向下右改变大小(South East) cursor: se-resize;向下左改变大小(South West) cursor: sw-resize;向上改变大小(North) cursor: n-resize;

青山不改,绿水长流。 2048

ISO15118-20协议测试实战:用Efficient XML库验证26条命令编解码(附完整代码)

本文分享了ISO15118-20协议测试实战经验,重点探讨了使用Efficient XML库对26条命令进行EXI编解码验证的过程。通过搭建测试环境、编写自动化程序并与官方工具链进行交叉比对,文章深入分析了4条命令编码结果不一致的原因,并提供了完整的排查思路与C代码示例,旨在帮助开发者确保电动汽车充电通信的协议一致性。

weixin_29284657的博客 108

(R,线性回归)R语言里的模型诊断图(Residuals vs Fitted,Normal QQ , Scale-Location ,Residuals Leverage)

线性回归,是概率统计学里最重要的统计方法,也是机器学习中一类非常重要的算法。线性模型简单理解非常容易,但是内涵是非常深奥的。尤其是线性回归模型中的Diagnostics plot的阅读与理解一直被认为是线性回归中的一个难点。 在任何线性模型中,能够直接“lm”(模型有意义),既要考虑各个参数的t-test所得出的p-value,也要考虑总体模型F-检验得出的p-value。在这之后,还要清楚一个...

qq_35837578的博客 7万+

【亲测可用】改变鼠标样式,自定义cursor样式,自定义鼠标图片,适配不同状态

cursor: url(//img.58cdn.com.cn/resource/xxzl/captcha/pencil.png),default; /*注意:这个,后面的default可以改成auto、pointer等等,但是不能省略,否则就无法让自定义鼠标生效,具体为什么不要问我!*/ 生效后的效果如下图鼠标,一支铅笔 ...

我驾驶汽车从不是为了从A点到达B点,我喜欢去感受汽车,与之交流,与之融为一体。 6277

ICC 实战解析——CTS 时钟树综合中的关键设置与优化策略

本文深入解析ICC工具中CTS时钟树综合的关键设置与优化策略,涵盖时钟树异常引脚设置、目标参数配置、非默认布线规则(NDR)等核心技术。通过实战案例展示如何有效控制时钟偏差、优化信号完整性,并平衡功耗与面积,为芯片物理设计提供专业指导。

weixin_30872577的博客 325

Vue3框架基本介绍及搭建

Vue 是一个框架,也是一个生态。其功能覆盖了大部分前端开发常见的需求。但 Web 世界是十分多样化的,不同的开发者在 Web 上构建的东西可能在形式和规模上会有很大的不同。考虑到这一点,Vue 的设计非常注重灵活性和“可以被逐步集成”这个特点。无需构建步骤,渐进式增强静态的 HTML在任何页面中作为 Web Components 嵌入单页应用 (SPA)全栈 / 服务端渲染 (SSR)Jamstack / 静态站点生成 (SSG)

hhyyzz4121的博客 1428

MAX30102心率血氧传感器:从原理到实践的可穿戴健康监测方案

本文深入解析MAX30102心率血氧传感器的工作原理及在可穿戴健康监测中的实践应用。通过反射式光电容积脉搏波(PPG)技术,该传感器能精准测量心率和血氧饱和度,具备低功耗、高抗干扰等优势。文章详细介绍了信号处理算法、硬件连接技巧及创新应用场景,为开发者提供全面的解决方案。

weixin_29184371的博客 282

Claude Code 任务编排 头脑风暴与 疯狂拷问:Superpowers vs Grill-me 硬核对比与工程落地

Superpowers和Grill-me是AI编程中的互补工具:Superpowers提供工程化开发流程(从需求梳理到代码审查),确保规范执行;Grill-me通过持续追问帮助厘清需求,避免方向偏差。两者结合形成"构思-拷问-执行"工作流,前者负责方案生成与落地,后者专注需求审查。根据场景选择:个人项目可用Grill-me快速澄清需求,企业项目推荐Superpowers全流程,复杂开发则建议组合使用。它们分别解决"如何落地"和"是否对齐"的问题,共

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 325

关于Vue2升级Vue3的考虑

公司项目是vue2 node14,考虑要不要升级成vue3,询问我的看法写习惯了vue3 setup的我是觉得……vue3还是很香的,当然要升级一个系统考虑的事很多,不仅仅是技术上的,还有成本与收益的问题作为一个 创业者(商业角度)+程序员(技术角度) ,通过调研,结合经验,去客观的考虑要不要对这个系统升级,最后给出答复。以下内容进针对所回复的项目,对于阅读者来说,仅供参考。

萌狼蓝天の技术栈 1136

基于Flink的流式数据降维实现方案

理解为何实时场景需要降维(解决维度灾难)掌握Flink流处理与降维算法的结合方式学会用Flink实现一个可落地的流式降维系统覆盖内容包括:Flink流处理基础、降维算法选择(侧重在线算法)、Flink与降维的集成方案、实战代码示例,以及工业级场景的应用经验。本文从“为什么需要流式降维”出发,用“快递分拣”的生活案例引出核心概念;接着拆解Flink流处理、数据降维的底层逻辑;然后重点讲解“在线PCA”这一适合流式场景的降维算法,并用Flink实现一个完整的流式降维管道;

AI 领航者的博客 566

[Vue] 10. 奇奇怪怪的经验(待更)

一、获取当前时间 getTime:function(){ var _this = this; let yy = new Date().getFullYear(); let mm = new Date().getMonth()+1; let dd = new Date().getDate(); let hh = new Date().getHours(); let mf = new Date().getMinutes()&lt

animalcoder 206

Lammps实现Ar的沸腾过程(包含in文件)

Lammps实现简单的沸腾过程

Rockyoung 3503

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

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

vue获取div中的值_Vue奇奇怪怪的小技巧

目录1.v-for 循环对象2.动态事件3.“双向绑定” .sync4.获取原始DOM事件5.小型状态管理仓库6.构造器 Vue.extend1.v-for 循环对象有时候我们接口所返回数据的是一个对象,但是如果属性太多了,且是一个list,咱们不能一个一个写吧像这样<p>{{obj.id}}p><p>{{obj.name}}p><p>{{...

weixin_35680189的博客 3879

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Vue奇奇怪怪的小技巧

目录1.v-for 循环对象2.动态事件3.“双向绑定” .sync4.获取原始DOM事件5.小型状态管理仓库6.构造器 Vue.extend1.v-for 循环对象有时候我们接口所返回...

Crazymryan的博客 359

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

uni-app开发日志[20220219]:汇总一些遇到的奇奇怪怪的开发问题(vue3版本为主)

uniapp已支持vue3,但很多组件并未及时更新。想想也用它开发好几个项目了,之前一直用市场里的现成组件,这回索性沉下心好好学学弄弄。目前零零碎碎发现很多问题,专开一贴记录下来。

暂时先用这个名字 3472

vue3 router Cannot use ‘in‘ operator to search for ‘catch‘ in undefined

vue 路由配置的坑

积极的小可爱~的博客 6819

「Vue系列」之Vue3生命周期和新增setup的一些总结

关于vue3.0的生命周期和响应式的问题的一些总结

码农的博客 3326

vue v-for 生成的input不能编辑修改_Vue 奇奇怪怪的小技巧

目录1.v-for 循环对象2.动态事件3.“双向绑定” .sync4.获取原始DOM事件5.小型状态管理仓库6.构造器 Vue.extend1.v-for 循环对象有时候我们接口所返回数据的是一个对象,但是如果属性太多了,且是一个list,咱们不能一个一个写吧像这样<p>{{obj.id}}</p> <p>{{obj.name}}</p> <...

weixin_39614561的博客 1880

Vuejs环境搭建

安装node.js 如何在mac上安装node.js? 有各种各样的方法,例如homebrew。但是我使用brew没有安装成功。最终采用了从官上下载的方法安装,总算有个解决的办法吧。 1.从官网上下载mac os pkg https://nodejs.org/en/download/ 2.双击pkg,按照步骤进行安装就好了。 3.验证node.js是否安装好 node -v npm包管理器是集成...

Chenglin(Ben) Yu's Miracle 608

新书上市 | Vue 3.0 核心源码解析,这本书给Vue学习提供新方法

1600+ 条注释,拆解 Vue 核心源码

图灵教育 2082

「Vue系列」之使用Vue3新增Teleport封装一个弹框组件

使用Vue3新增Teleport封装一个弹框组件

码农的博客 1638

vue3.0 开发公共组件库并发布到npm

vue3.0开发组件库上传npm

郝峰vip的博客 5052
上一篇: [springboot] springboot+oracle+mybatis 整合心得
下一篇: [Vue] 1.Vue安装+Vscode绑定 +新建页面
animalcoder
博客等级 码龄9年 43粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值