分类 web前端 下的文章

微信小程序开发运行问题

一、微信小程序运行环境

1、完全封闭的环境不等于浏览器环境

2、WXML/WXSS/JS格式

3、WXML 不等于 HTML

4、WXSS 不等于 CSS3

5、JS:支持ES6,ES5,不支持DOM(window,document,event,etc...)

6、不支持WEBGL,包含部分Canvas API

7、封闭的发布渠道:程序需通过官方IDE提交审核

8、腾讯完全控制客户端底层的内部实现

二、微信小程序Canvas游戏限制分析

1、不支持Affine Transform 矩阵设置

2、不支持globalAlpha(忘记淡入淡出)

3、不支持贴图变色(无法创建缓存Canvas对象)

4、不支持图集(无法创建Image对象)

5、不支持BMFont字体

6、不支持剪裁(忘记ScrollView)

7、不支持WebGL,所以不支持任何高级特效

8、严格的模块化,不支持全局变量注入,只支持global下注入

9、不支持项目内文件加载

10、不支持多点触摸

11、不支持文字排版:换行,居中等

12、不支持九宫格、重复填充、网格等渲染模式

13、不支持skew

14、不支持混合模式

15、支持Creator组件:Label,Sprite,Button,Widget,Layout,Animation,其他都不支持

16、官方说法:context只是一个记录方法调用的容器,用于生成记录绘制行为的actions数组。context跟不存在对应关系,一个context生成画布的绘制动作数组可以应用于多个

实际上,context.getActions()后,context中的信息会被清空,如果想重复利用,需要var temp=context.getActions()将操作数组保存下来,才可重复用于wx.drawcanvas;
https://www.bbsmax.com/A/x9J2mKrZz6/

CSS实现分隔线中间带文字的方法,取代fieldset-legend

小小分隔线 单标签实现


小小分隔线 巧用色实现


小小分隔线 inline-block实现


小小分隔线 浮动来实现


———————————小小分隔线 字符来实现————————————


<div class="demo-container demo">
<style type="text/css">
.demo{
    width: 600px;
    margin:10px;
}
.line_01{
    padding: 0 20px 0;
    margin: 20px 0;
    line-height: 1px;
    border-left: 200px solid #ddd;
    border-right: 200px solid #ddd;
    text-align: center;
}
.line_02{
    height: 1px;
    border-top: 1px solid #ddd;
    text-align: center;
}
.line_02 span{
    position: relative;
    top: -12px;
    background: #fff;
    padding: 0 20px;
}
.line_03{
    width:600px;
}
.line_03 b{
    background: #ddd;
    margin-top: 4px;
    display: inline-block;
    width: 180px;
    height: 1px;
    _overflow: hidden;
    vertical-align: middle;
}
.line_03 span{
    display: inline-block;
    width: 220px;
    vertical-align: middle;
text-align: center;
}
.line_04{
    width:600px;
}
.line_04{
    overflow: hidden;
    _zoom: 1;
}
.line_04 b{
    background: #ddd;
    margin-top: 12px;
    float: left;
    width: 26%;
    height: 1px;
    _overflow: hidden;
}
.line_04 span{
    padding: 0 10px;
    width: 32%;
    float: left;
    text-align: center;
}
.line_05{
    letter-spacing: -1px;
    color: #ddd;
}
.line_05 span{
    letter-spacing: 0;
    color: #222;
    margin:0 20px;
}
</style>

<div class="line_01">小小分隔线 单标签实现</div>
<br>
<br>
<div class="line_02"><span>小小分隔线 巧用色实现</span></div>
<br>
<br>
<div class="line_03"><b></b><span>小小分隔线 inline-block实现</span><b></b></div>
<br>
<br>
<div class="line_04"><b></b><span>小小分隔线 浮动来实现</span><b></b></div>
<br>
<br>
<div class="line_05">———————————<span>小小分隔线 字符来实现</span>————————————</div>
<br>
<br>
</div>

DNS预获取 dns-prefetch 提升页面载入速度

DNS Prefetch,即DNS预获取,是前端优化的一部分。一般来说,在前端优化中与 DNS 有关的有两点: 一个是减少DNS的请求次数,另一个就是进行DNS预获取

DNS 作为互联网的基础协议,其解析的速度似乎很容易被网站优化人员忽视。现在大多数新浏览器已经针对DNS解析进行了优化,典型的一次DNS解析需要耗费 20-120 毫秒,减少DNS解析时间和次数是个很好的优化方式。DNS Prefetching 是让具有此属性的域名不需要用户点击链接就在后台解析,而域名解析和内容载入是串行的网络操作,所以这个方式能 减少用户的等待时间,提升用户体验

默认情况下浏览器会对页面中和当前域名(正在浏览网页的域名)不在同一个域的域名进行预获取,并且缓存结果,这就是隐式的 DNS Prefetch。如果想对页面中没有出现的域进行预获取,那么就要使用显示的 DNS Prefetch 了。

目前大多数浏览器已经支持此属性,支持版本如下:

列表项目

  • Safari: 5+
  • Chrome: All
  • Firefox: 3.5+
  • Opera: Unknown
  • IE: 9+ (called “Pre-resolution” on blogs.msdn.com)

其中 Chrome 和 Firefox 3.5+ 内置了 DNS Prefetching 技术并对DNS预解析做了相应优化设置。所以 即使不设置此属性,Chrome 和 Firefox 3.5+ 也能自动在后台进行预解析 。

目前很多大型站点也应用了这一优化,例如:

淘宝:
taobaodnsmeta.png

支付宝:
zhifubaodnsmeta.png

网易:
wangyidnsmeta.png

DNS Prefetch 应该尽量的放在网页的前面,推荐放在 后面。具体使用方法如下:

<meta http-equiv="x-dns-prefetch-control" content="on">
<link rel="dns-prefetch" href="//www.itechzero.com">
<link rel="dns-prefetch" href="//api.share.baidu.com">
<link rel="dns-prefetch" href="//bdimg.share.baidu.com">

需要注意的是,虽然使用 DNS Prefetch 能够加快页面的解析速度,但是也不能滥用,因为有开发者指出 禁用DNS 预读取能节省每月100亿的DNS查询 。

只需要在用户在第一次打开网站时使用DNS Prefetch,没有必要每个页面都使用DNS Prefetch,否则就是重复DNS读取了,反而还无形中增加了DNS查询的次数,效果适得其反。(此处有疑)

如果需要禁止隐式的 DNS Prefetch,可以使用以下的标签:

<meta http-equiv="x-dns-prefetch-control" content="off">

文章主要来源前端优化一(已打不开)

参考:
事半功倍:你应该知道的HTML5五大特性
减少域名DNS解析时间将网页加载速度提升新层次-DNS缓存/预读取/拆分域名
浏览器的加载过程

web跨域

什么是跨域
http://bigdots.github.io/2015/12/23/实现跨域/

跨域请求了什么内容会被阻止
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

谁请求了跨域

谁阻止了跨域
https://lengzzz.com/note/cross-origin-http-request

有什么方法跨域
http://tech.jandou.com/cross-domain.html