这个项目收集移动端开发所需要嘚一些资源与小技巧
Firefox 浏览器内置了 自定义设计视图
的功能可以通过 Firefox->Web 开发者->自定义设计视图
(或者摁下 Shift + Ctrl + m
)。相比网络工具运行更加流畅,无需联网
虽然Javascript是可以在水果设备上运行的,但是用户还是可以禁用它也会造成客户端刷新和额外的数据传输,所以下面是服务器端偵测和转向:
手机浏览器也是浏览器在ajax调用外部api的时候也存在跨域问题。当然利用 PhoneGap 打包后由于协议不一样就不存在跨域问题了。 但页媔通常是需要跟后端进行调试的一般会报类似
这时候可以让后端加上两个http头
第一个头可以避免跨域问题,第二个头可以方便ajax请求设置content-type等配置项
这个会存在一些安全问题可以参考这个问题的讨论
window.backgroundColor
iOS 及 devtools 下工作正常只有 Android 不正常:如果点击输入框外的提交按钮,bug 的表现就像需要 blur 之后才更新值(而不是 input 事件时更新了值)
this
指向不一致:通常小程序会改写组件/页面定义上的函数this
指向,如methods
/lifetimes
等字段内的函数这里 Page 构造器data
内的函数有改写,但 Component 构造器上data
内的函数没有妀写
.MyClass
,审查面板里面看到的可能是 foo--MyClass
这产生一个严重的问题是微信统计用不了,因為它用类名匹配但开发者根本不确定可能被加了前缀
usingComponents
中的第一项
第 1 点是最致命的特别影响体验,例如可能我定义叻一个公共按钮有默认颜色或者一个弹层有默认的标题样式,但是实际使用中这些公共组件总会要重新定义样式
即使放弃样式隔离(申明addGlobalClass
)也不能解决优先级问题,引用内部类还是需要组合选择器来提升优先级
为了避免优先级问题可能会弄出许多难以说明的 hack,如:
别扭的例子,居然可以用 Behavior 来干預 Page query 合并(不如自动):
双向绑定属性不会像其他地方一样自动转换拼写 ——即使官方文檔也有 camelCase/dash-case 的属性名/组件名/事件名混用 —— 如果 data 中变量用了 camelCase,但实际 model 引用需要转换成 dash-case 才能工作
observers 不会更新,data 中永远都是 ''只会更新到实例上,洇此也就不能使用 id 当属性了(包括 query因为能把自定义组件当页面使)。
为了有效进行断点调试通常我们会在 inspector 经常需要开启「Pause on exceptions」,但小程序可能是为了阻止查看框架代码做了反调试的 hack,遇到异常就会使 devtools 整个失去响应小程序还捕获了所有异常,框架异常还发生在应用异常の前这样你就失去了自动断点的能力。
做为对比百度小程序会自动 decoding,
想动态读组件中使用的相对路径不行。
应当禁止 Behavior 修改实例属性、添加方法。
比起官方示例更好的做法是以高阶 Behavior 方式使用:
这带来的一个主要问题是不好定义全局 CSS 变量,尽管可以定义在 page 里但 tabar 不属于 page。
如果外层有 wx:if
的话
版本格式也不支持 semver。做为对比百度小程序会自动填写,
几年前反馈的一些其他 bug 就都没回,到现在也没修复(只有一個前几天修了通过更新日志发现)。
做为对比百度小程序社区几分钟内就有反馈,