;

如何让web页面更快,雅虎团队实践总结了7类35条规则,下面一一列出。 雅虎前端优化35条规则翻译 1. Content 1.1 Make Fewer HTTP Requests Minimize HTTP Requests减少/最小化 http 请求数。 到终端用户的响应时间80%花在前端:大部分用于下载组件(js/css/image/flash等等)。减少组件数就是减少渲染页面所需的http请求数。这是更快页面的关键。 减少组件数的一个方法就是简化页面设计。保持富内容的页面且能减少http请求,有以下几个技术: Combined files。合并文件,如合并js,合并css都能减少请求数。如果页面间脚本和样式差异很大,合并会更具挑战性。 CSS Sprites。雪碧图可以合并多个背景图片,通过background-image 和 background-position 来显示不同部分。 Image maps。合并多个图片到一个图片,一般用于如导航条。由于定义坐标的枯燥和易错,一般不推荐。 Inline images。使用data:url scheme来內连图片。 减少请求数是为第一次访问页面的用户提高性能的最重要的指导。 1.2 Reduce DNS Lookups 减少DNS查询。 就像电话簿,你在浏览器地址栏输入网址,通过DNS查询得…

雅虎前端优化35条规则 2019年10月1日
;

莱顿弗罗斯特现象(Leidenfrost Phenomenon)是指液体不会润湿炙热的表面,而仅仅在其上形成一个蒸汽层的现象,由科学家莱顿弗罗斯特在1756年发现。

莱顿弗罗斯特效应 2019年10月1日
;

整个流程涉及两次文件验证,各种平台密钥及id,账号关联操作,所用验证文件需放入自己的服务器对应目录 微信支付:https://pay.weixin.qq.com 1.商户号 2.获取api秘钥(私钥,自己本地生成后设置上去) 3.设置支付回调 4.账号关联,通过小程序AppID关联(产品中心-开发设置-APPID授权管理,关联小程序AppID) 5.生成支付相关的验证文件,微信支付商户平台证书,放入网站相关目录 /www/wwwroot/0915www.abc.cn/ThinkPHP/Library/Vendor/WxPay/lib/cert/ 微信公众平台:https://mp.weixin.qq.com 1.开发者ID(AppID) 2.开发者密码(AppSecret) 微信开放平台:https://open.weixin.qq.com 绑定小程序 小程序后台:https://mp.weixin.qq.com 1.AppID(小程序ID) 2.AppSecret(小程序密钥) request合法域名中需要加入https://api.mch.weixin.qq.com, 业务域名配置作用可以打开web-view标签链接,此时需要验证域名合法,将验证文件放入网站根目录 各种信息汇总 //微信公众平台: wxacd22e1524f32019 /…

微信小程序接入支付流程 2019年9月29日
;

“修昔底德陷阱”,指一个新崛起的大国必然要挑战现存大国,而现存大国也必然会回应这种威胁,这样战争变得不可避免。此说法源自古希腊著名历史学家修昔底德,他认为,当一个崛起的大国与既有的统治霸主竞争时,双方面临的危险多数以战争告终。

修昔底德陷阱 2019年9月27日
;

1.问题描述 代码调试,在ajax一返回立马打印,发现结果竟然是后续处理过后的 2.伪代码复现 var array = [1,2]; var obj = { a: 1, b: [1,2] } console.log(array); //[1, 2] 误,外部显示的[1, 2],点开箭头显示的[1,2,3] console.log(obj); //{a:1,b:[1,2,3]} array.push(3); obj.b.push(3); console.log(array); //[1,2,3] console.log(obj); //{a:1,b:[1,2,3]} 更正:打印结果中带三角箭头的地方需要展开查看最终结果,外部显示可能并不一致 3.产生原因 对象保存的是地址,引用同一片内存空间,后面发生改变,也会影响打印出来的值。 但凡是有个箭头出来的,可以认为是一个对象了,所以数值是实时的。三角形点开的时候才会拿着内存地址去取对象的值。 而你查看的时候,对象里的内容已经被改过了。所以这个直接log 对象或者数组的方式,并不能很好的体现内部值的一个实时性。 4.猜想 把push放入setTimeout延时5秒会怎样? var array = [1,2]; var obj = { a: 1, b: [1,2] } console.log(array…

console打印数据,发现打印结果并非初始ajax返回的值 2019年9月25日
;

1.父页面 Model.prototype.modelLoad = function(event){ window.callbroadcaster(‘123’); } 2.子页面 Model.prototype.modelLoad = function(event){ var $this = this; window.callbroadcaster = function(e){ $this.getGoodsFromCode(e); } }

wex5主页面触发子页面事件 2019年9月25日
;

1.问题快照 2.原因 查看本机ip发现变掉了 3.解决方案 重新打包即可

wex5真机调试报错‘UIServer错误’ 2019年9月25日
;

1.故事艺术中的3个极端形式(大情节、小情节、反情节)为故事宇宙勾画出一副三角形地图,将故事显现出的各种形式的可能性囊括其中。 2.经典设计(大情节):超越时间的原理,围绕一个主人公构建的故事,主人公为了追求自己的欲望,与主要来自外界的对抗力量进行抗争,通过连续的时间、在一个连贯而具有因果关联的虚构现实里,到达一个表现绝对、而变化不可逆转的闭合式结局。 如:《火车大劫案》、《贪婪》、《战舰波将金号》、《M就是凶手》、《公民凯恩》、《七武士》、《第七封印》、《江湖浪子》、《2001:太空漫游》、《教父2》、《销魂三人组》、《一条叫旺达的鱼》等各种题材和故事类型的电影。 3.小情节:对大情节的突出特性进行精炼、浓缩与修剪,在简约、精炼的前提下保持经典的精华,像大情节一样给予精美的处理,使影片仍然能够满足观众的期待:“多好的故事!”。 如:《北方的纳努科》、《战火》、《红色沙漠》、《温柔的怜悯》、《征服者佩尔》、《盗窃童心》、《大河恋》、《福利》(叙事性纪录片)等。 4.反情节:反,即反其道而行,否认传统形式,倾向于过度铺陈和自我意识的大肆渲染。 如:《一条安达鲁狗》、《午后的迷惘》、《八部半》、《假面》、《反斗智多星》等。 【每日一句】 作家的全部宇宙论,他们对现实和人生真谛所包罗万象的观点和看法,都包含在这个三角形里。要想理解你在这一宇宙中的位…

大情节 小情节 反情节 2019年9月24日
;

1.入口页面,通常是index 2.创建data组件,添加字段,并设置默认值 model添加onLoad事件 3.html部分 <div component="$UI/system/components/justep/model/model" xid="model" style="height:auto;left:390px;top:161px;" onload="modelLoad"> <div component="$UI/system/components/justep/data/data" autoload="true" xid="commonData" idcolumn="id"> <column iscalculate="false" name="id" type="String" xid="xid2"></column> <column label="show" name="show" type=&q…

wex5中定义全局data组件 2019年9月24日
;

戏剧理论(dramaturgical )亦称“拟剧论”。是用表演说明日常生活中人与人之间相互作用的一种符号互动理论。主要代表人物是戈夫曼。把社会比作舞台.把全体社会成员比作在这一舞台上扮演不同角色的演员。认为他们在社会互动中表现自己。努力把握自己给他人造成的印象,使自身的形象能最好地为自己要达到的目的服务。 戏剧理论介绍 戈夫曼(E.Goffman)采用戏剧分析的方法,从印象管理的角度来揭示社会互动的特点。他的理论主要研究人们运用哪些技巧来在别人心目中创造形象,所以又称“印象管理理论”或“印象整饰理论”。 这一理论认为,互动中的一方总想控制对方的行为,使对方通过对自己的理解,做出符合自己计划的行为反应。 戏剧理论的基本观点是:社会是一个舞台,全体社会成员是在这个舞台上扮演不同角色的演员,他们都在社会互动中表演自己,塑造自己的形象并更好地表达自己的目的。 戈夫曼的戏剧分析理论以个人运用符号的能力为出发点,强调个人内部对话的主观评价的社会的自我,重视符号在互动中的作用,将人们之间的符号互动看作是一门表演艺术,它要研究的实际是个体在社会中的一种互动。 主要思想编辑 1、根据人际互动的场合可以将互动分为两种: 社会机构内经常和持续性的互动;没有界限和临时性的互动。 2、社会机构好比一个舞台,人们的社会行为就是社会表演,人们在互动过程中按一定的常规程序…

戏剧理论 2019年9月22日
;

https://blog.csdn.net/HuangsTing/article/details/88578992 页面交互

wex5获取list中某列值以及页面传参 2019年9月19日
;

1.首先搭建页面框架,创建w文件,并常见main.w 2.在main.w添加contents组件,根据导航个数添加content组件 3.在main.w中的bottom中添加buttonGroup组件,并添加button组件 4.在button组件中修改导航名称和添加icon 5.绑定组件与content的对应关系,用target关联关系 注意节点之间的层级关系很重要,四个并列content的父及和父父级都是content如果缺少某一层就会导致切换失效 来源:https://blog.csdn.net/wjm0519/article/details/80581520

wex5底部tab导航 2019年9月19日
;

1.安装java8环境, java -version // 查看java是否已安装 sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-8-jdk 参考资料:https://www.cnblogs.com/wxishang1991/p/5662499.html 备注:此处ubantu版本为14.04,历经波折oracle版本始终无法安装成功 2.安装Jenkins wget -q -O – https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add – 打开文件/etc/apt/sources.list添加deb https://pkg.jenkins.io/debian-stable binary/ 然后执行如下命令 sudo apt-get update sudo apt-get install jenkins 参考资料:https://pkg.jenkins.io/debian-stable/ 3.配置 打开域名:8080按照提提操作 4.启动 service jenkins start service jenkins rest…

ubantu下安装Jenkins 2019年9月13日
;

1.注意点 小程序中定时器在页面切换时候并不会中断,后台会持续叠加请求,因此在页面销毁和隐藏时候需要中断循环,此处通过设置一个全局的标志位来处理 2.代码 data: { timerContinue: true }, // 点击左上角返回时候触发 onUnload: function () { this.data.timerContinue = false }, // 按系统home键返回时候触发 onHide: function () { this.data.timerContinue = false }, onShow: function () { this.data.timerContinue = true // 如果在tab对应的页面中,每次进入需要重新启动循环 this.updateEndTime(23,59,59) }, updateEndTime: function (_hour, _minute, _second) {  //当前时间,距1970年1月1日的秒数 //通过返回的小时及分钟生成对应的日期对象 var now = new Date() var end = new Date() end.setHours(_hour) end.setMinutes(_minute) end.setSeconds(_second) //…

小程序中倒计时处理 2019年9月9日
;

1.安装git apt-get -y install git 2.下载Gitea wget -O gitea https://dl.gitea.io/gitea/1.4.0/gitea-1.4.0-linux-amd64 chmod +x gitea //设置执行权限 ./gitea web 备注:以上命令在自己退出登录的时候自动关闭 gitea 如果需要一直在后台开启请看下面的命令 nohup ./gitea web & 3.安装Gitea 域名:3000进入引导安装页面,配置好数据库,及管理员信息。 4.大功告成 ubantu相关知识: apt-get install安装目录是包的维护者确定的,不是用户 apt-get 下载后,软件所在路径是什么? /var/cache/apt/archives 参考链接:https://blog.swing1993.cn/%e5%ae%89%e8%a3%85gitea/

ubantu下安装gitea 2019年9月8日
;

1,问题描述 用户通过分享进入商品详情页,此时小程序底部没有tab切换菜单,同时没有直观的按钮跳转到首页,左上角也没有返回上一页箭头,此时如果用户点击系统的Home返回键会退出小程序 2. 另一个问题 用户从上一步退出后,从小程序的最近使用下面再次进入,依然是刚刚退出的页面,没有直观的办法触达其它页面 3. 解决思路 首先想到通过场景值来做业务判断 4.场景值相关知识 app.js文件中 onShow: function (e) { console.log(e.scene) }, onLaunch: function (e) { console.log(e.scene) }, page页面中获取 onShow: function (e) { let val = wx.getLaunchOptionsSync() console.log(val.scene) }, 经过一番尝试发现,这个场景值只在小程序初次载入时候能获取到,用户如果刚刚打开过小程序,然后又通过别人分享到达商品页,此时的场景值是自己上次载入时候的值,所以这时候场景值并不能作为用户来源的依据 5.换个思路 既然场景值无法用,想到从路由列表入手,分享进入的用户,历史路由里只有唯一的一个当前页路由,这也是没有左上角返回按钮的原因所在,如果路由表长度为1,那么就显示一个跳转到首页的按钮出…

小程序中通过分享链接进入的用户如何有效触达其它页面? 2019年9月4日
;

1.业务描述 通过微信支付开通vip,判断信息更新后再跳转 2.产生问题 通过setTimeout进行间隔一秒发送请求,数据比较,成功更新后通过wx.navigateTo跳转,此时setTimeout依然在后台持续调用 3.解决思路 setTimeout在每次调用后将生成一个标识符,而且每次都不同,所以用一个数组来保存起来,同时在页面离开时候清除所有的定时器 4.代码 data: { oldVal: ”, timeList: [] }, onLoad: function(options) { this.pay() }, // 点击左上角返回箭头时候触发 onUnload: function(options) { for (let i = 0; i < this.data.timeList.length; i++) { clearTimeout(this.data.timeList[i]) } }, // 点击系统Home键返回上一步时候触发 onHide: function(options) { for (let i = 0; i < this.data.timeList.length; i++) { clearTimeout(this.data.timeList[i]) } }, checkIsUpdate: function…

小程序中setTimeout轮询判断数据更新后跳转 2019年9月4日
;

问题来源: 用户使用小程序时若关闭了定位权限,想要重新打开时操作不易,所以要引导去设置里重新打开 解决: 当第一次关闭授权定位后,wx.chooseLocation就会一直调用fail方法,所以当点击打开位置功能时,最好先判断当前是否关闭了定位授权(见wx.getSetting文档详情),再会跳出自定义弹框(showCon),引导前往设置打开定位 wx.chooseLocation({ success: function(e) { //允许打开定位 }, fail: () => { //不允许打开定位 wx.getSetting({ success: (res) => { if (!res.authSetting[‘scope.userLocation’]) { //打开提示框,提示前往设置页面 that.setData({ showCon: true }) } } }) } }) 由于前往设置需要使用button的open-type,因此弹框需要自定义,例如下方,不需要弹框的情况下引用button组件即可(详情见官方文档) //wxml <view wx:if="{{showCon}}" class="modal-mask" bindtap="changeModalCanc…

小程序中引导重新打开定位权限 2019年9月2日
;

一、逻辑运算符 &&(短路与) 特点:只要碰到了false或者等价于false的就短路,只要短路了就不会继续往后执行了。如果短路了,得到造成短路的这个值,如果不短路,得到的是第二个值 console.log( true && true ); // true console.log( 123 && ‘中国’); // 中国 console.log( false && true ); // false console.log( true && false); // false console.log(1 && 0); // 0 console.log( undefined && 0); // undefined console.log(null && 1); // null 二、逻辑运算符 || (短路或) 特点:只要碰到了true或者等价于true的就短路,只要短路了就不会继续往后执行了。如果短路了,得到造成短路的这个值,如果不短路,得到的是第二个值 console.log( true || true ); // true console.log( 123 || ‘中国’); // 123 console.log(…

短路运算 &&和|| 2019年9月2日
;

1、沉没成本陷阱 大卖场为了节约租金成本一般都地处偏远,去一趟不容易。 就像这个Costco,地处上海外环外,去一趟得开小汽车、打出租车、甚至有人不惜多次换乘地铁公交,光路上一来一回就得花起码四五个小时。 这样一来,你就会想,咱汽油费也花了,时间也花了,一定得多买点,才对得起我付出的时间和路费啊,所以就拼命买买买——这就是沉没成本陷阱。 像Costco、山姆会员店、麦德龙这类会员制超市,价格比一般大卖场更便宜,但还有个门槛,是你必须每年花两三百成为会员。这个会员费,也是沉没成本陷阱。 像我一个朋友的爸妈,平时都挺节省的。昨天顶着35度的烈日过去,在Costco挤了一天,最后竟然搬回家一万多块钱的东西,说累也累了、会费也缴了,不买白不买。 我们往往过分执念已经付出的时间、金钱,从而投入更多来值回“已付出的成本”,这是坑,得绕开。 2、货架陈列陷阱 我有个朋友,专门是给Costco、宜家、麦德龙这种大卖场做商品陈列设计的,一个月工资上五万。 为什么他能拿这么高的薪水?因为他的工作对这些大卖场来讲,很值钱。 他的工作的主要目的,就是让你在商场、卖场里面逗留的时间尽量长。逗留时间越长,在里面花钱的可能性就越大。 宜家大家都逛过吧?我每次去逛宜家,都有一种迷路的感觉,会不由自主地顺着它设计的路线,兜来兜去。 眼前和手边,一会出现好看的床品,一会出现晶莹…

沉没成本陷阱 2019年9月1日
;

1.什么是姿态模式 当无GPS信号且下视视觉模块不工作的情况下,飞行器会自动进入姿态模式。姿态模式不使用GPS模块进行定位,仅提供姿态增稳,若GPS卫星信号良好可实现返航。(个人发生两次失控情况均发生在夜晚,视觉模块失效需谨慎)

无人机知识 2019年8月25日
;

1.about:flags 2.打开Developer Tools experiments 3.

chrome开启canvas调试 2019年8月22日
;

1.Canvas 状态的保存和恢复 Canvas的API提供了两个名叫save()和restore()的方法,用于保存及恢复当前Canvas绘图环境的所有属性。其中save()可以保存当前状态,而restore()可以还原之前保存的状态。 这两个方法再绘图中有着重要的作用,比如我们在绘图的时候需要使用多种颜色,颜色需要不时的切换。那么使用save()和restore()方法即可比较方便的实现此功能。 2.理解save()和restore() 对于save()和restore()方法,一开始有一个错误的理解,以为每一步都save()之后restore()就等同于command + z(或者ctrl + z),其实save()保存的只是CanvasRenderingContext2D对象的状态以及对象的所有属性,并不包括这个对象上绘制的图形。 3.Canvas中状态和非状态 在Canvas环境中绘图时,可以利用所谓的绘图堆栈状态。每个状态随时存储Canvas上下文数据。下面是存储在状态堆栈的数据列表。 当前的坐标变换(变换矩阵)信息,比如旋转或平移时使用的rotate()和setTransform()方法 当前剪贴区域 图形上下文对象(CanvasRenderingContext2D)的当前属性值 CanvasRenderingContext2D…

Canvas中的save()和restore()有什么用? 2019年8月21日
;

1.问题描述 阿里云虚拟主机,数据库中的中文信息导入后都成了空的, 2.处理步骤 首先想到的是编码不一致,源数据库是utf8,因此设置设置阿里云数据库,相关操作 show variables like ‘character%’ /*查看编码方式*/ set names ‘utf8’ alter database name character set utf8 相关说明: character_set_client,character_set_connection,这两个是数据库操作导入或者导出解释字符集编码, character_set_results是客户端或者程序显示编码, character_set_database是数据库编码,尽量让这几个编码都统一,常用都设置成utf8编码。 执行set names ‘utf8’会同时设置character_set_client,character_set_connection,character_set_results的编码, 执行alter database name character set utf8;可以设置数据库编码 3,一顿操作后,发现依然无法正常显示,要么就是乱码 4.换个思路 既然目标数据库这么坑爹,那就源数据库导出时候换个编码,更换为gb2132后到处,再次执行导入操作可以正常显示…

阿里云虚拟主机,通过sql文件导入数据库后,包含中文的字段不显示 2019年8月18日