Atwood定律:凡是能用JavaScript写出来的,最终都会用JavaScript写出来

 

uniapp 开发笔记(一)

1, App/uni-app离线本地存储方案https://ask.dcloud.net.cn/article/1662, uni-app导航栏开发指南 刘海屏,水滴屏https://ask.dcloud.net.cn/article/349213, 富文本/渲染/显示/图文混排方案。rich-text、uparse、v-html的区别https://ask.dcloud.net.cn/article/357724, 微信小程序超过 2MB 需要分包https://uniapp.dcloud.io/collocation/pages?id=subpackagestarBar 使用的地址不能是分
ngtwewy 2019-11-28    App开发   

rem 单位手机页面适配

物理像素:顾名思义,就是设备屏幕上的实际像素。也就是说这个手机被出厂造出来的时候,这个屏幕上有多少个像素点,他的物理像素就是多少;设备独立像素:也叫做逻辑像素(对于前端来说,和我们的css像素是一样的),这个不同的设备是不一样的。在viewport为ideal-viewport模式时, 如iphone6此时的viewport为375px,代表着我们在css中写375px就可以达到全屏的效果;在移动端中会使用rem方案,来做不同设备间的适配:(function () { function changeRootFont() { var designWidth = 750, rem2px = 1
ngtwewy 2019-11-26    CSS   

php生成唯一识别码uuid

php生成唯一识别码uuid/*生成唯一标志 *标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx(8-4-4-4-12) */ functionuuid() { $chars = md5(uniqid(mt_rand(), true)); $uuid = substr ( $chars, 0, 8 ) . '-' . substr ( $chars, 8, 4 ) . '-' . substr ( $chars, 12, 4 ) . '-' . substr ( $chars, 16, 4 ) . '-' . substr (
ngtwewy 2019-11-16    PHP   

三点运算符

作用:将一个数组转为用逗号分隔的参数序列。//该运算符主要用于函数调用。function push(array, ...items) {array.push(...items);}function add(x, y) {return x + y;}var numbers = [4, 38];add(...numbers) // 42//扩展运算符取代apply方法的一个实际的例子,应用Math.max方法,简化求出一个数组最大元素的写法。// ES5 的写法Math.max.apply(null, [14, 3, 77])// ES6 的写法Math.max(...[14, 3, 77])//
ngtwewy 2019-11-16    JavaScript   

前端生成验证码

var numArr = [] var canvas = document.querySelector('#canvas'); var ctx = canvas.getContext('2d'); draw(); canvas.onclick = function () { ctx.clearRect(0, 0, 120, 30); draw(); } function draw() { /*绘制一个矩形颜色随机*/ ctx.fillStyle = randColor(170, 250); ctx.fillRect(0, 0, 120, 50); v
ngtwewy 2019-11-16    JavaScript   

排除选择器

css :not()排除函数css:not()函数用来排除选择,not(x),其中的x为css选择器,但是x不能是not选择器,也就是说:not()排除选择器不能嵌套使用。css:not()排除选择器使用.sibcont{ background:#f1f1f1; border:1px solid #bababa; margin:20px; padding:20px; } .sibcont ul{ margin:0; padding:0; list-style:none; } .sibcont ul li{ color:#C91010; font-size:13px;
ngtwewy 2019-11-16    CSS   

JavaScript 连等赋值

最近探究js原理的过程中遇到了这个挺有趣的问题。先贴代码:var a = {n:1}a.x = a = {n:2}alert(a.x) //undefined在弄懂这个之前,我们先普及一个知识点,就是在javascript运算符中,属性运算符的优先级高于赋值运算符的优先级。因此,a.x是先于赋值之前就进行的。就是说,a.x刚开始是undefined的,这是没错的。接下来我们探究一下连等赋值的赋值顺序:1、从左往右a.x赋值为{n:2};然后a赋值为{n:2};a的重新指向重写了a.x,即.x属性不存在,因此a.x输出为undefined。2、从右往左a赋值为{n:2};直接限制了a.x的赋值,
ngtwewy 2019-11-16    JavaScript   

input上选择同一文件change事件不生效

在文件上传的时候我们我们选择监控change事件来获取文件,如果第一次如果选择了A文件,当再次点开选择A 文件时,change事件没有触发,这时可以用如下方式处理.1. vue项目处理方式:this.$refs.uploadExcelId.value=null;复制该代码到项目中,并且把uploadExcelId换成自己input的ref即可。2. 普通js处理方式:event.target.value=”;尽量不要用删除dom元素,再添加这种操作方式,因为还需要在做事件绑定比较麻烦。
ngtwewy 2019-11-16    JavaScript   

爬虫需谨慎,你不知道的爬虫与反爬虫套路!

前言爬虫与反爬虫,是一个很不阳光的行业。这里说的不阳光,有两个含义。第一是,这个行业是隐藏在地下的,一般很少被曝光出来。很多公司对外都不会宣称自己有爬虫团队,甚至隐瞒自己有反爬虫团队的事实。这可能是出于公司战略角度来看的,与技术无关。第二是,这个行业并不是一个很积极向上的行业。很多人在这个行业摸爬滚打了多年,积攒了大量的经验,但是悲哀的发现,这些经验很难兑换成闪光的简历。面试的时候,因为双方爬虫理念或者反爬虫理念不同,也很可能互不认可,影响自己的求职之路。本来程序员就有“文人相轻”的倾向,何况理念真的大不同。然而这就是程序员的宿命。不管这个行业有多么的不阳光,依然无法阻挡大量的人进入这个行业,
ngtwewy 2019-11-16    大杂烩   

php中$GLOBALS["HTTP_RAW_POST_DATA"]报错

$postStr = file_get_contents("php://input");因为一般PHP中register_globals参数都设置了On,禁止了使用$GLOBALS["HTTP_RAW_POST_DATA"];php://inputphp://input 是个可以访问请求的原始数据的只读流。 POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA,因为它不依赖于特定的 php.ini 指令。 而且,这样的情况下 $HTTP_RAW_POST_DATA 默认没有填充, 比激活 always_populate_raw_post_da
ngtwewy 2019-11-03    PHP   

SASS/SCSS 快速上手

编码规则SASS首先会检查代码文件的Unicode BOM(byte order mark),然后是@charset声明,再然后是底层运行Ruby的字符串编码,如果这些都未进行设置,将会默认以UTF-8编码输出CSS文件。@charset 'utf-8'; #app { background: url('../assets/背景图片.png'); } 建议代码开头位置显式定义@charset "encoding-name";,让SASS能够按照给定的字符集编译输出。特性概览CSS书写代码规模较大的Web应用时,容易造成选择器、层叠的复杂度过高,因此推荐通过SASS预处理器进行CSS的开
ngtwewy 2019-10-05    CSS   

当async/await遇上forEach

for和forEach的差别是后者不能正常的跳出循环(return、break等),其它的差别不大,把forEach转成for的写法就知道为什么你的for写法可以顺序执行而forEach不能:for:const report = async () => { for (let i = 0, len = arr.length; i forEach:const report = async () => { arr.forEach(async (item) => { await asyncFn(item); }); }; 上述forEach的写法相当
ngtwewy 2019-08-25    JavaScript   

HTML5播放HLS流(.m3u8文件) Apache 跨域设置

HLTML5播放HLS流(.m3u8文件) Apache 跨域设置1,使用 mod_headers 添加请求头信息Apache 配置文件中确保加载了以下模块:LoadModule headers_module modules/mod_headers.so 虚拟主机配置文件中,添加Header add Access-Control-Allow-Origin: *这样做以后,提示 m3u8 没有提示禁止跨域了。但是视频切片文件(.ts文件)提示跨域禁止。然后,进行下一步。2,添加crossdomain.xml播放器跨域访问时需要添加策略文件,即在视频播放链接所在域名的根目录下添加 crossdo
ngtwewy 2019-08-21    Apache   

HTTP Authorization 之 Basic Auth

一、简介在HTTP中,基本认证(Basic access authentication)是一种用来允许网页浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式。最明显的特征是,Basic Auth 就是在请求的时候在headers中设置 Authorization: "Basic 用户名和密码的base64加密字符串"。JWT Token 认证,建议把 Token 保存在 Authorization 中。二、访问形式1、使用浏览器在使用浏览器访问设置了 HTTP Basic Auth 的服务器时,会弹出对话框,输入用户名和密码即可。2、使用 HTTP Client 工
ngtwewy 2019-08-18    HTTP   

Axios 文档摘要

axios API可以通过向 axios 传递相关配置来创建请求axios(config)// 发送 POST 请求 axios({  method: 'post',  url: '/user/12345',  data: {   firstName: 'Fred',   lastName: 'Flintstone'  } }); // 获取远端图片 axios({  method:'get',  url:'http://bit.ly/2mTM3nY',  responseType:'stream' })  .then(function(response) {
ngtwewy 2019-08-15    JavaScript