本文并非入门向介绍文章,适合有一定前端基础的开发者阅读。
开发整体体验
首先我们回忆下最开始公测时官方开发工具是个什么样子:
前两个问题开发工具已经很好解决了,最后的问题在正式版发布后我也没再碰到过了,可以说已经比较稳定了。
一些开发建议
// 以下的用法是不行的
this.setData{obj, ...data}
// 参数 spread 是可以的
function f(x, ...y) {
// y is an Array
return x * y.length;
}
page {
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
}
遇到的一些问题及解决办法
export function formatHTML(html) {
html = html.replace(/<style([\s\S]*?)<\/style>/gi, '');
html = html.replace(/<script([\s\S]*?)<\/script>/gi, '');
html = html.replace(/<\/div>/ig, '\n');
html = html.replace(/<\/li>/ig, '\n');
html = html.replace(/<li>/ig, ' * ');
html = html.replace(/<\/ul>/ig, '\n');
html = html.replace(/<\/p>/ig, '\n');
html = html.replace(/<br\s*[\/]?>/gi, "\n");
html = html.replace(/<[^>]+>/ig, '');
html = html.replace(/\n{2,}/g, '\n\n')
html = html.replace(/\n+$/g, '')
html = html.replace(/ /g, ' ')
return html
}
export function queue (fns, count) {
return new Promise(function(resolve, reject) {
let a = fns.slice(0, count)
let b = fns.slice(count)
let l = fns.length
let runs = 0
if (fns.length == 0 ) return resolve()
for (let fn of a) {
fn().then(() => {
runs += 1
if (runs == l) return resolve()
let next = function () {
let fn = b.shift()
if (!fn) return
return fn().then(() => {
runs += 1
if (runs == l) return resolve()
return next()
}, reject)
}
return next()
}, reject)
}
})
}
response = RestClient.post("https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=#{token}", {
path: "pages/affiliate/index?id=#{id}&#{code}",
width: 430
}.to_json)
最后,开发本身对于小程序而言只能算是刚开始的一小步,由于微信的流量控制,后续的铺码之路任重道远。
以上,不希望对您有所帮助,因为小程序的开发实在不是一件可以让人愉悦的事:)