声明:本文来自伟哥带你哟哟哟公众号(微信号youyouyouchecknow),授权CSDN转载,如需转载请联系作者。
作者:刘伟,美国微软资深工程师,曾在Office365,Bing部门工作;西雅图创业协会会长;微群日历微信小程序开发者。新手奶爸。业余爱好木工,养鱼,盆景,种葫芦,葡萄。
责编:陈秋歌,关注微信开发等领域,寻求报道或者投稿请发邮件至chenqg#csdn.net。
欢迎加入“CSDN微信开发”群,与作者及更多专家、技术同行进行热点、难点技术交流。请加群主微信「Rachel_qg」,申请入群,务必注明「姓名+公司+职位」。
我开发的小程序“微群日历”1月8日正式开始开发,1月20日提交审核,1月22日被拒,再提,1月24日通过审核正式上线。上线三天,并没有什么太多推广。目前快500位用户登陆,其中50位左右身边朋友,其余多半是因为我挂在“知晓程序”上来的,比我预期的好不少。
因为我在海外,很多坑都是第一次踩,好记性不如烂笔头,我把经历写下来,也希望能帮助到其他在海外想要做小程序的小伙伴。
如果想进行试用,请在微信搜索”微群日历“去得到它。
这里我先讲个小故事,很清晰的记得2年前遇到过一个六七十岁白发苍苍的老美程序员,他虽然退休了,他说今天是他的生日,收到了一个很特别的礼物 Punch Card。
看起来是不是像答题卡?这就是他们那个年代编程用的,拿着一厚沓这个纸给电脑读,运行程序。老大爷拿着问我说你知道上面写的啥么?我心想这是什么鬼,当然脸上却堆出敬仰的笑容,他得意地说:”这上面写着,Happy Birthday,我一眼就认出来了,哼哼”。
听到这话,我心里默默骂了一句。不是我觉得自己是新青年而看轻老大爷,而是我觉得很悲哀,因为20年后多半俺也会这样,一种被时代淘汰的既视感扑面而来。
我们每天学习很多东西,但多无法沉淀。
多年以后,当伟哥和孙子在葡萄架下乘凉的时候,他一定会想起无数个吭哧吭哧搬砖的那个遥远的冬季的夜晚。
——《百年砖工》
技术的潮流跟时尚异曲同工,一波一波的,不断在改变。然而又有些不一样,复古的时尚偶尔会还魂,但古老的技术基本会死硬在了沙滩上。
上面这张图是上次请资深美国表演艺术家,微软Distinguished Engineer,James Whittaker给放的。他说,你只要让开发者爽了,那你也就能爽了。
那么现在来说回小程序。微信小程序就让开发者很爽,完全原生的体验,开发效率提高起码10倍。网上已经很多文章了,我附和几句:
有这三点,就够了。其实再过两年以后,绝大部分人都不会再开发底层App,基本都会往类似React Native走,因为体验上其实并没有这么多差别。再过五年,那时候AI的Converstaion based Application应该会占主导地位,很多任务你已经不需要手机了(一定需要视觉的比如游戏娱乐可能除外),你更不需要App,就像现在的Alexa Skills。比如你看看现在谁还在写MFC?估计很多人都没听过……
那么有人说微信有限制,封闭。的确是有很多限制,比如游戏不能做,否则做个麻将棋牌类,往群里一扔,分分钟秒杀皮皮麻将啊。代码不能超1M,不能外链跳转,不能分享朋友圈,小程序入口只有群分享,搜索和摄像头扫描二维码(注意不是图片识别二维码)。说实话限制不是一般的大啊。但是呢,大家退一步看:
微信玩儿的是阳谋,摆明了就是想补他欠缺的地方,比如群协作,比如线下+线上。不想让你来微信打发时间(玩游戏)。这让我想起了最近亚马逊停掉免费Review的Program。以前亚马逊正儿八经的允许有给样品然后Review的项目,后来据说是中国卖家太多,国人出海卖货也不知道怎么办,简简单单就是花钱冲Review。亚马逊停掉这个Program,就是想让大家回归到做好产品。
张小龙你看得出他是有初心的人,希望大家去做Make the World a Better Place的事情。而不是简简单单抓住用户注意力不放。
如果我所做的,能让世界变得美好一点点,那我也就满足了。
学习小程序,已经有不少教程了,选几个放出来,我就不赘述了。不过网上资料有些多,看着就乱了,有几个我特别比较推荐的拿出来讲讲。
微信官方教程:
关于Framework:码工们都喜欢重用轮子,有些人一上来找Framework,现在也有好几个出来了,我强烈建议是先不要用。一来还都不算成熟,用开源的最怕就是选错Dependency。二来1MB的上限一不注意很容易就到了,交给不可控的framework还是不放心。有人还支持了用NPM的库,那就更要小心了,一个平时网页常用的lodash都要500k,NPM库很容易一下子超标。刚开始的时候,还是先手写吧,熟悉一下,进阶之后再自行决定。
上面那几点差不多可以start了,我基本上就是用这些。还想多学习的,这个上面有不少资料:
https://github.com/justjavac/awesome-wechat-weapp
不过警告一下,很容易看花眼,看多了反而自己就不好做决定,Choice is pain。
首先一个问题是为什么要在海外做小程序?其实没啥别的,就是想做个自己和周围朋友能用的。出了国的才知道,老美的各种东西,比起国内的遍地开花差的便捷得太远了!
比如我做的这个微群日历小程序,一开始就是想解决每次potluck时,大家约时间和汇报到底带什么菜的事情,省的每次去翻记录。另外我们西创会每周也都组织沙龙活动,每次都是通过公众号发布,让大家在meetup报名,但是每次去点的人总不多。过几天大家忘了有什么活动又会来问。另外还有比如约开会时间也要统一半天,一般都用Doodle但是使用体验很差。所以我才做了这个微群日历,能帮助大家提升协作的productivity。
好了,说说干货。在开始之前一定要做好心理准备,因为有些坑对海外党实在太困难了。某种意义上说,我们基本就是外星人。
首先你要注册和备案。
1. 基本要求
2. 再说备案,坐标海外
如果想在海外做运营,服务器放在国内得慢成狗。海外的服务器虽然不需要备案。但是中国政府的规定是备案过的域名必须指向备案过的服务器,并且会定期扫描,如果发现服务器不对,可能会撤销你的备案。
我在网上搜攻略,不少人说只要一个二级域名挂在国内就可以了。这点我还特地问过阿里云的客服,客服说是可以的,二级域名挂在国内并且有不少流量就行。比如你弄个cn.xxx.com可以指向国内。不管怎样,你肯定是需要一个国内的服务器。
我的做法还要简单一点,用了Azure的Global Traffic Manager,根据访问地域不同指向不同服务器,这点我后面还会提到。
3. 特殊资质
之后你就可以开始开发了,但是如果你决定做某些特殊类目,赶紧开始申请特殊资质吧!
特殊类目包括教育、医疗、金融、出行、富媒体、电商、保健等各个方面,动手之前需要仔细了解清楚。
4.SSL证书
微信小程序要求后台网站必须是HTTPS。关于证书以前我也没弄过,原本想直接买个证书了事吧,一年花个几百刀。不过后来一想,这证书每年都还要Renew也挺麻烦。不少公司都因为证书过期出过大事情。于是俺找了一圈,发现了一个好东西:Let’s Encrypt。
Let’s Encrypt是个非盈利组织,有两个最大特点:
我在美国用的Azure Webapp,也有好心人做了插件:
https://www.troyhunt.com/everything-you-need-to-know-about-loading-a-free-lets-encrypt-certificate-into-an-azure-website/。
5. 提升国内外速度——双机
上面提到需要国内服务器备案的事情。如果直接用国内服务器的话,海外访问速度会慢得离谱。比如你随便打开一个小程序,基本是加载都要很长时间,怎么突破?自然是在海外再开一个服务器啦!
我用的Azure Global Traffic Manager(GTM),如果用户来自东亚,我让他访问国内服务器,如果人在美国,则让他访问美国服务器。这样如果ICP扫描的时候,自然会扫到我国内的服务器,备案也就没有问题啦。
这么做的后果是,你需要维护两台服务器,对于小Startup而言,用户原本就还没有那么多,这样完全是徒增烦恼。
一个做法是在国内直接proxy到美国,这样最终还是访问的美国服务器。当然后果是国内访问会巨慢,如果你不在乎国内用户的话倒也无所谓,不过在微信审核的时候确保他们加载什么没有问题,要不小心审核不过噢。
还有一点要注意的是国内的证书问题,如果你跟我一样用let’s encrypt的证书,在申请的时候需要DNS指向当前机器的IP,否则会失败,但是let’s encrypt的机器肯定在国外,怎么办呢?很简单,我就先在GTM disable了美国的指向就行了。不过这里其实有个问题,就是多台机器共用证书。如果机器在附近也倒是罢了,直接nginx做个反向代理。但是现在是跨国怎么办?
一个做法是单独开一个证书服务器,把nginx的/.well-known路径指向证书服务器。这样的坏处是这个证书服务器是你的一个bottle neck。我因为美国用的是azure webapp,本来就有很多限制,所以我目前的做法比较偷懒,两边各自刷新证书。后果是过几个月中国那边的服务器的证书可能没法自动renew了,得手动再做一次。我对证书不是很了解,如果那位比较精通请跟我联系~
6. 提交审核
开发的环境我先跳过,不过如何能这么快做完,我后面会稍微再讲一下。当你吭哧吭哧开发完了,觉得满意的时候,下面就是提交审核了。我的审核周期一般为两天。特别要注意的是,一旦提交审核,不能撤销,也不能覆盖!你即使发现了bug fix了,也只有等审核完再说。所以提交审核要谨慎啊!
于审核的坑那可就是太多了,建议大家先网上查一查。有两个我提出来:
提交的时候你可以选择类目,比如我的微群日历,有类似Doodle的功能。我第一次审核的时候填的日历,被审核人员指出应该是投票,第二次才顺利过关。
大家可以阅读下这篇文章,1个人15天7次被拒的小程序开发历程。
7.小结
好了,一些海外常见的坑就差不多就这些了。其实在国内的话也算是常规的东西了,主要就是:事先一定要做好调查,看看缺什么的东西,尽早补上。备案,资质等。
海外双机的配置,开发,维护。
虽然标题中说16天,其实前后加起来只有12天开发,但实际上因为还有上班时间,满打满算加起来可能5-6天工作时间吧。
因为只有我一个人,所以也做包括产品设计,UX Design,Logo设计等等。我个人对这个速度还是挺满意的,本来就是想练练手。一方面归结于有这么好的小程序一个平台,否则很容易就会花去几个月时间,另一方面当然事先还做过一些调研才动手的,包括备案什么的,因为是断断续续的就没有统计进去了。下面我稍微回顾一下,希望对大家有帮助: