0%

一、常考-基础点

对 SPA 单页面应用的理解,优缺点是什么?

核心答案:

SPA( single-page application )仅在 Web 页面初始化时加载相应的 HTML、JavaScript 和 CSS。⼀旦⻚⾯加载完成,SPA 不会因为用户的操作而进行页面的重新加载或跳转;取而代之的是利用路由机制实现 HTML 内容的变换,UI 与用户的交互,避免页面的重新加载。

阅读全文 »

前端

css

calc, support, media各自的含义及用法?

@support主要是用于检测浏览器是否支持CSS的某个属性,其实就是条件判断,如果支持某个属性,你可以写一套样式,如果不支持某个属性,你也可以提供另外一套样式作为替补。

calc() 函数用于动态计算长度值。 calc()函数支持 “+”, “-“, “*”, “/“ 运算;

@media 查询,你可以针对不同的媒体类型定义不同的样式。

阅读全文 »

HTML方向

调用系统功能

使用<a>能快速调用移动设备的电话/短信/邮件三大通讯功能,使用<input>能快速调用移动设备的的图库/文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!-- 拨打电话 -->
<a href="tel:10086">拨打电话给10086小姐姐</a>

<!-- 发送短信 -->
<a href="sms:10086">发送短信给10086小姐姐</a>

<!-- 发送邮件 -->
<a href="mailto:[email protected]">发送邮件给JowayYoung</a>

<!-- 选择照片或拍摄照片 -->
<input type="file" accept="image/*">

<!-- 选择视频或拍摄视频 -->
<input type="file" accept="video/*">

<!-- 多选文件 -->
<input type="file" multiple>
阅读全文 »

前端常用60余种工具方法

1.邮箱

1
2
3
export const isEmail = (s) => {
return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)
}

2.手机号码

1
2
3
export const isMobile = (s) => {
return /^1[0-9]{10}$/.test(s)
}
阅读全文 »

voice meeter设置教程

不得不说这是个非常强大,而且特别良心的软件,先贴一下官网[https://www.vb-audio.com/]
官网上有三个版本提供下载,分别是 voicemeeter voicemeeter banana 和 voicemeeter potato
如果只是吃鸡或日常应用banana版本完全够用,当然专业一点可以下载potato版本,不过这个版本是需要捐赠的,建议大家没有经济危机的都可以支持下
除了potato 其他两个版本完全免费功能也一样够用,建议下载banana版本
这软件的安装十分简单,同一个按键一直点就行
安装好重启后进入软件界面

![](https://img.nga.178.com/attachments/mon_201910/13/fsQ5-1x6ZbT1kSfa-k6.jpg)

在我看来这软件是可以替代声卡来管理音频流的,如果把音频当作流水,那banana就是一根管道,管道能进水也能出水,进水的就是输入端,出水就是输出端

阅读全文 »

Neumorphism - 实现新拟态效果

可以轻松实现新拟态效果,不仅可以修改颜色或填写色值,也可以修改尺寸、半径、距离、强度、模糊效果以及形状等参数,同时提供了CSS代码可以直接Copy。

https://neumorphism.io/

CDNJS - JavaScript 资料库

CDNJS 为开发者提供最新的前端 Web 开发资源,免费使用,无使用限制。你可以直接在自己的网页上引用这些 JS 文件。进入 CDNJS 网站后,搜索你想要的资源库,找到后点击项目后方的[ Copy Script Tag] ,然后贴上就可以用了。目前 CDNJS 在 Web 前端的 CDN 服务中排名第二(第一名是 Google),性能出色。

https://cdnjs.com/libraries

阅读全文 »

1.安卓手机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script>
(function() {
if (typeof WeixinJSBridge == "object" && typeof WeixinJSBridge.invoke == "function") {
handleFontSize();
} else {
if (document.addEventListener) {
document.addEventListener("WeixinJSBridgeReady", handleFontSize, false);
} else if (document.attachEvent) {
document.attachEvent("WeixinJSBridgeReady", handleFontSize);
document.attachEvent("onWeixinJSBridgeReady", handleFontSize); }
}
function handleFontSize() {
// 设置网页字体为默认大小
WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize' : 0 });
// 重写设置网页字体大小的事件
WeixinJSBridge.on('menu:setfont', function() {
WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize' : 0 });
});
}
})();
</script>
阅读全文 »

以下代码可以在不影响原生代码结果的同时在中间插入自己的代码

1
2
3
4
5
6
7
8
9
10
let _push = Array.prototype.push	//原生代码[native code]
Array.prototype.push = function(){ //代码重写override
for(let i of arguments){
_push.call(this, i); //原生代码引用
}
console.log('参数为', arguments);
}

let a = [1,2,3]
a.push(4,5,6)
阅读全文 »