前端开发中遇到的小问题积累

11 篇文章 0 订阅
11 篇文章 3 订阅

1.HTML中设置浏览器标题前的logo:

在<head></head>标签之间输入

<link rel="icon" href="图片位置" type="image/x-icon"/>

2.在线引入所需框架:

<!--引入jquery-->
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<!--引入bootstrap-->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">

3.校验只能包含字母数字下划线

<script>
	var str = '123'
	var filt = /^[a-zA-Z0-9_]+$/
	if (!filt.test('123123@34')) {
		alert(12313)
	} else {
		alert(456)
	}
</script>

4.读程序

<script>
	function myFunc () {
		document.write(a)
		document.write(func())
		var a = 1
		function func () {
			return 2
		}
	}
	myFunc()
</script>

5.当用户打开一个网页时,想一直停留在当前打开的页面,禁止页面前进和后退的命令是:

window.history.forward(1)

window.history.forward(-1)

6.使用vuex实现绑定微信扫码登录的过程中,控制台报错,即[vuex] Do not mutate vuex store state outside mutation handlers.

搜过几个帖子,有看到是数组类型问题;最终的解决方案是,我在定义store的时候,生产环境采用了严格模式,生产环境中必须设置strict:false。

官网的解释:在严格模式下,无论何时发生了状态变更且不是由 mutation 函数引起的,将会抛出错误。这能保证所有的状态变更都能被调试工具跟踪到。

不要在发布环境下启用严格模式!严格模式会深度监测状态树来检测不合规的状态变更——请确保在发布环境下关闭严格模式,以避免性能损失。

Vue.use(Vuex)

export default new Vuex.Store({
  getters,
  modules,
  strict: process.env.NODE_ENV == 'production'
})

如上所示,解决了上述报错。

其实我的原因是不能直接去修改store中的状态,具体可参考我的另一篇文章:https://blog.csdn.net/qq_29918313/article/details/84971829

7.中国标准时间转换为时间戳

在包含时间的访问后台接口中,经常存在相差八小时的问题,我遇到过在控制台打印的时间刚好是我用时间选择器选择的时间,但是访问接口的时候,却相差八小时,此时,使用时间转换,将标准时间转换为时间戳即可。

this.queryParams.beginTime = (this.allTime[0]).getTime()
this.queryParams.endTime = (this.allTime[1]).getTime()

即使用getTime()方法。

8.时间戳转换为标准时间

let date123 = new Date(this.queryParams.endTime)

9.小数值1.5625的二进制表示是:1.1001,采用乘二取整法。

10.websocket深入浅出:https://blog.csdn.net/sinat_36422236/article/details/85051547

11.setTimeout

for(let i=0;i<2;i++){
    setTimeout(function(){
        console.log(i)
    },100);
}
for(var i=0;i<2;i++){
    setTimeout(function(){
        console.log(i)
    },100);
}

第一个:let将i绑定到for循环快中,事实上它将其重新绑定到循环体的每一次迭代中,确保上一次迭代结束的值重新被赋值。setTimeout里面的function()属于一个新的域,通过 var 定义的变量是无法传入到这个函数执行域中的,通过使用 let 来声明块变量,这时候变量就能作用于这个块,所以 function就能使用 i 这个变量了;输出为0,1.

第二个:settimeout是异步执行,1s后往异步任务队列里面添加一个任务,只有同步的全部执行完,才会执行异步任务队列里的任务,当主线执行完成后,i是2,所以此时再去执行任务队列里的任务时,所以输出两次2.

12.TCP与UDP

TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。 TCP的缺点: 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。
UDP的优点: 快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击…… UDP的缺点: 不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。 基于上面的优缺点,那么: 什么时候应该使用TCP: 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。 在日常生活中,常见使用TCP协议的应用如下: 浏览器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件传输 ………… 什么时候应该使用UDP: 当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。 比如,日常生活中,常见使用UDP协议的应用如下: QQ语音 QQ视频 TFTP ……

TCP与UDP区别总结:

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

13.console.log(typeof Array) 结果为function;    console.log(typeof Array()) 结果为object

Array本身是js内建的一个构造函数,当他在调用或者初始化的时候,typeof的结果为对象。构造函数,不实例化,也只是个函数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Delicia_Lani

你的鼓励将是我写作的动力。

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

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

打赏作者

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

抵扣说明:

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

余额充值