1、利用周末两天的时间,参考小天气的风格,撸了一个天气小程序,【小夭天气】。2、功能十分简单,查看当前地区的天气和搜索其他地区的天气,增加了可以生成图片分享出去。3、上线后发现一个问题,就是极速提供的天气接口对区级市没有区分,例如 上海有宝山区,东北那也有一个。就没有区分。这是一个bug4、其他有什么问题欢迎大家提意见和建议。欢迎大家扫码体验
详情如下
部分代码如下:12345678910<!-- 生成图片 --><view class="saveimage" wx:if="{{canvasPic}}"> <view class="loading" wx:if="{{loading}}"><image src="../images/loading.gif" class="loading"></image></vi ...
12345678910111213function getLocation() { var options = { enableHighAccuracy : true, maximumAge : 1000 } if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(onSuccess, onError, options); } else { alert('您的浏览器不支持地理位置定位'); }}
123456789101112131415//成功时function onSuccess(position) { var longitude = position.coords.longitude; var latitude = position.coords.latitude; var map = ...
Coding
未读1.TCP UDP的区别12345678910111213141516171819202122TCP的优点:可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。TCP的缺点: 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。UDP的优点: 快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击…… UDP的缺点: 不可靠,不稳定 因为UDP没有TCP那些可靠的机制, ...
1、vue响应式原理就是对你数据的变化,vue会有一个响应,去完成某件事。2、vue的响应式原理就是基于vue知道了数据发生了变化,那么vue是如何知道数据发生了变化呢?3、数据劫持 vue.js 采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调1Object.defineProperty()方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个值
4、数据劫持盲区1234561. vue 在实例化的时候会将data数据中的属性全部做数据劫持2. 如果时对象,也会迭代本身属性将全部属性都实现数据劫持3. 当赋值的时候,如果时newVal是对象,也会迭代newVal的属性实现全部属性的数据劫持什么时候会发生盲区: 比如说,data中现有一个obj 的值 list,但是现有list中没有name 这个属性。现在主动 list.name = 1,因为list.name的属性不是 Getter/Setter,所以赋值后不会去发布消息 ...
12345678910111213141516171819202122232425var arr = [1,5,25,7,55,21,45,2,3,64,135,333,7882]function quickSort(arr){ if(arr.length < 2) return arr; //如果长度小于2 直接返回 let left = 0, right = arr.length - 1; while(left < right) { while(arr[right] > a[0] && left < right){ // 找出右边比a[0]小的 right = right - 1 } while(arr[left] <= a[0] && left < right){ // 找出右边比a[0]大的 left++; } if(left == right){ let mid = ...
因为之前想过 如果每天早上微信能够发送天气预报给我,给我老婆多好,然后就动手看网上的教程做了一个可以定时发送天气预报的程序,
最近又想到折腾,做了一个更加详细的版本。但是需要主动操作
部分代码:12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917 ...
1. 回流(reflow)当dom中render树中的节点或者元素的大小,边距,数量发生变化后,导致页面需要重新构建的过程叫做回流。另外如果浏览器获取某些元素属性也会触发回流,例如:offsetTop,offsetLeft等。
2. 重绘(repaint)当dom中元素的属性,例如:颜色,字体样式等发生变化时,只需要更改该元素的时候叫做重绘。
3.回流的成本高于重绘4.回流一定重绘,重绘不一定会回流5.如何优化1.避免单个修改节点样式,尽量一次性修改
2.使用DocumentFragment将需要多次修改的DOM元素缓存,修改好后一次性替换
3.将需要多次修改的DOM元素设置成display:none,修改完成后在改回来。
4.避免读取上述的那些属性
5.将复杂的dom节点脱离文档流。
map
map() 方法创建一个新数组,其结果是该数组都执行一次函数,原函数保持不变。
12345var a = [1,2,3,5,4,8,6,3,2]var newa = a.map(x =>{ return x + 1})newa // [2,3,4,5,9,7,4,3] 对新数组进行加1赋值
forEach
forEach() 方法对数组的每一个元素执行一次提供的函数。
12345var a = [1,2,3,5,4,8,6,3,2]var newa = a.forEach((item,index)=>{ return item +1})//遍历所有值
filter
filter() 方法使指定函数测试数组的每一个元素,并返回一个通过元素的新数组。
12345var a = [1,2,3,5,4,8,6,3,2]var newa = a.filter(x=>{ return x > 1})newa // [2,3,5,4,8,6,3,2] 用于过滤大于1 的
some
some() ...
Coding
未读
在实际情况中我们设置了图片大小,比如我们设置了 400 * 300 但实际的图片大小是 1300 * 1000 那我们怎么获取这个实际的大小呢。
123在原生js 中可以通过 nWidth = document.getElementById('example').naturalWidth,nHeight = document.getElementById('example').naturalHeight;
在JQ 中可以通过封装natural来实现 1234567891011121314151617181920212223 (function($){ var props = ['Width', 'Height'], prop; while (prop = props.pop()) { (function (natural, prop) { $.fn[natural] = (natural in new ...