前段的坑记录 点点滴滴

本文涵盖前端开发中常见的问题解决技巧,包括Vue.js的高级用法,如响应式属性管理、事件绑定、指令自定义及性能优化策略。同时探讨了CSS定位、变换及兼容性问题,以及JavaScript基础数据类型和DOM操作细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.当盖视点设置填充属性时边界半径不生效

2.获取对象属性的个数Object.getOwnPropertyNames(testObj)。长度

3.Vue.js当绑定事件和类名一样时页面一片空白也不报错!

4.vue只能有一个根元素

5.Vue不允许在已经创建的实例上动态添加新的根级响应式属性。

6.Vue不能检测到对象属性的添加或删除或修改,最好的方式就是在初始化实例前声明根级响应式属性,哪怕只是一个空值。

7.使用VUE全局方法设置对象属性可以使VUE检测到属性的添加和删除但依旧不能检测到修改

8.

数组pop()删除最后一个,    
push()添加最后一个,
shift()删除第一个,
unshift()添加第一个

9.小程序在页面配置css overflow-hidden页面就不滚动了

10.vue v-if v-else v-for别挂在一个标签使用!会爆炸

11.Vue在富文本中绑定事件在渲染出来事件不生效要这样搞

	mounted:function(){
	  	this.$nextTick(() => {
		    // Code that will run only after the
		    // entire view has been rendered
		    $(this.$el).on('click', "img", (e) => {
		        console.log(e.target.src)
		    })
		 })
	},
//$nextTick dom更新 nextTick数据更新
//this.$refs.article 绑定任意对象

12. vue中指令的用法

 <input v-local-test />   

directives:{
        'local-test':function(el,binding,vnode){
            /** el可以获取当前dom节点,并且进行编译,也可以操作事件 **/
            /** binding指的是一个对象,一般不用 **/
            /** vnode 是 Vue 编译生成的虚拟节点 **/
            el.style.border="1px solid red";  //操作style所有样式
            console.log(el.value);  //获取v-model的值
            console.log(el.dataset.name) //data-name绑定的值,需要el.dataset来获取
            console.log(vnode.context.$route); //获取当前路由信息
        }
 },

13.onpopstate检测历史变化pushState的的的的的的的的的设置历史记录replaceState更改历史记录

让对方手机不能返回 超暴力!
window.onpopstate = function(event) {
	history.pushState({page: 3}, "title 3", "?page=3");
  alert("location: " + document.location + ", state: " + JSON.stringify(event.state));
};
//绑定事件处理函数. 
history.pushState({page: 1}, "title 1", "?page=1");    //添加并激活一个历史记录条目 http://example.com/example.html?page=1,条目索引为1
history.pushState({page: 2}, "title 2", "?page=2");    //添加并激活一个历史记录条目 http://example.com/example.html?page=2,条目索引为2
//history.replaceState({page: 2}, "title 3", "?page=3"); //修改当前激活的历史记录条目 http://ex..?page=2 变为 http://ex..?page=3,条目索引为3
//console.log(history)
//history.back()
//history.go(1)
//history.back(); // 弹出 "location: http://example.com/example.html?page=1, state: {"page":1}"
//history.back(); // 弹出 "location: http://example.com/example.html, state: null
//history.go(2);  // 弹出 "location: http://example.com/example.html?page=3, state: {"page":3}

14.只有标签才能为一个表单但是标签并不能使选择出现下拉,标签,输入等单标签不能:之前的类

15.Vue绑定事件对象用$ event @ click =“fun($ event)”

16.原生AJAX

var ajax=null;
try {
    ajax=new XMLHttpRequest()
}catch(e) {
    ajax=new ActiveXObject("Microsoft.XMLHTTP")
}
ajax.open("post","a.php",true)
//原生ajax要设置请求头 不然默认text/plain请求头 无法发送键值对数据
ajax.setRequestHeader("content-type","application/x-www-form-urlencoded")
//请求体键值对数据
ajax.send("name=张三&age=20")
ajax.onreadystatechange=function(){
    if(ajax.readyState==4){
        if(ajax.status==200){
            console.log(ajax.responseText)
        }
    }else{
        console.log(ajax.status)
    }
}

17.要想在形式提交时不跳到其他页面可以这样!表单提交好像没用到的XMLHttpRequest的的的的因为在控制台XHR请求里面看不到

<!-- 空iframe,用于协助处理form提交后不进行页面跳转的问题 -->
<form target="iframe_display" action=""></form>
<iframe  name="iframe_display" style="display: none;"></iframe>

18.拼接对象用Object.assign({},{})取对象的值Object.values()取对象的键Object.keys() 

19.js有几种基本数据类型?用的typeof运算运算运算运算去检测的话有基本类型(数字,未定义的,字符串,布尔)引用类型(对象,函数)

阵列是对象,空是物体另外还用日期对象正则对象等等

20.用vue时可以先绑定个原生类名在绑定个vue类名<div class =“text-danger”:class =“'active'”>

21.if判断中undefined,null,0 NaN,“”,false都执行不了

22.Boolean(ARR)用来判断布尔值是真还是假

23.iframe获取父页面parent.document操作父方法parent.function(),window.open()打开的窗口可以通过opener.document opener.function()来搞  window.frames["iframe的name值"].document.getElementById("iframe中控件的ID").click();  

24.普通函数和定时器中的这是窗口,构造函数中的这是实例对象,原型方法中的这也是实例对象

25.当CSS定位设置的是绝时离脱离文档流,边缘不再生效

26.在三维变换中,如果角度不生效那可能是不兼容加上-webkit-前缀试验,变换风格:持之以恒-3D开启3D模式

27.回调函数函数作为参数调用

28.阻止事件冒泡e.stopPropagation

29.dom设置自定义属性dom.setAttribute()---------- dom.getAttribute()

bigBox.setAttribute('style' , 'width:400px; height:300px; background-color:blue')

30.用line-block 有时候很难和前面的元素对其 这时候加上position:relative 然后调位置

31.变量提升,变量中的值不提升,常量只能定义一次,变量可以重复定义

32. 

1、onmouseleave、onmouseenter,鼠标进入到指定元素区域内触发事件,不支持冒泡,不包含子元素的区域。

2、onmouseout、onmouseover、鼠标进入指定元素触发事件,含子元素区域。

 33.vue子组件向父组件传递值时,要小写事件名称!

1、事件名称要求全小写。
2、不是父子关系。这里的父子关系是严格的父子关系,祖孙关系也不行。只能一层一层触发,这在写树形组件时,很容易掉坑里。

34.window.history.go(-1),window.history.back(),window.location.href=''

35.window.innerHeight 获取设备宽高

var a=':9:' 
console.log(a.replace(/(?=\d)/g,0)); 
匹配后面是一个数字的空符 结果:09: 可以用来日期补0


var a=':9:' 
console.log(a.replace(/(?<=\d)/g,0)); 
匹配前面是一个数字的空符 结果:90: 可以用来日期补0



var num=('0'+num2).slice(-2)可以截取后两个

slice(-4,-2)
slice(0,-2)



let str = "2016-1-1 1:1:1"//下面两种正则替换方法都可以实现日期补零 
console.log(forDate.replace(/(?=\b\d\b)/g,0))
console.log(str.replace(/\b\d\b/g, '0$&'));

36.命令行输入 echo test > .properties创建以.开头的文件

37.打包工具的.babelrc文件用记事本打开,存储为任意格式,utf-8编码

39.在谷歌浏览器使用翻译时e.target.nodeName不好使 因为谷歌把我们的标签名改了 比如i 改为font

40.

  1. 将输入的中文替换成空字符
input.value = input.value.replace(/[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/g, '');

41.ime-mode:disabled这是个垃圾属性 只有ie和火狐支持 大家都别用!

42.input表单只能输入数字 加号点号都不可以的写法

<input  onkeypress="return(/[\d]/.test(event.key))"  onkeyup="fun(event)"/>
英文输入状态下 onkeypress可以做到

中文输入状态下用事件做替换
	function fun(e){
		e.target.value=e.target.value.replace(/[^0-9]/g,'')//替换掉不是数字的
		e.target.value=e.target.value.replace(/^0/,'')//替换掉开头是0的
	}

43.a链接跳到本页面

    <a href="#tt">单此处什么也不会发生</a>
	<div id="tt" style="width:200px;height:200px;background:red"></div>

 

基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是一款广泛应用在无人机、机器人和运动设备中的六轴姿态传感器,它集成了三轴陀螺仪和三轴加速度计。这款传感器能够实时监测并提供设备的角速度和线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地与MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp`和`MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口和函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式和I2C地址,`getAcceleration()`和`getGyroscope()`则分别用于获取加速度和角速度数据。 在Arduino项目中,首先需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()`和`getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准和滤波,以消除噪声和漂移。 I2C通信协议是MPU6050与Arduino交互的基础,它是一种低引脚数的串行通信协议,允许多个设备共享一对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地与MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)和角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置和动态运动,而角速度数据则能反映物体转动的速度。结合这两个数据,可以进一步计算出物体的姿态(如角度和角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力和更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程和数据处理原理与Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是一个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地与传感器交互,获取并处理数据,实现各种创新应用。博客和其他开源资源是学习和解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息和实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值