开发微信小程序必需要知道的事

为何是小程序?

为何咱们会开发小程序呢?或许是由于工做须要,或许是源于本身的追求(来自名利的欲望),但我要说——这是一种缘分,很美好的缘分,不少年后还值得庆幸的缘分
  • 小程序目前能够分为三个阶段程序员

    • 一是语音和摇一摇(还有yue pao利器的传说)
    • 二是公众号,也就是这时注定了小程序的出现是历史的必然选择(shihouzhuge),为何这么说呢?由于微信在开放了webview的同时加入了js-sdk的开发工具包,而这就是小程序的前身
    • 三就是当下的微信os,能跑小程序的微信
  • 咱们继续来讲说第二点,有了js-sdk不就能够了吗?不就能够打通微信了吗?还要什么小程序?!但是人家是有梦想的鹅厂啊!!?web

    • 先从技术上说,js-sdk只是为传统网页提供包含微信api的开发工具包,并无解决移动网页遇到的体验不良问题,因此小程序就作了小程序

      • 资源离线存储,提升加载速度
      • 提供更强的开放能力
      • 经过构建组件系统实现对安全性的管控
      • 经过内置实现的组件提升开发速度和下降开发成本
      • 开放入口啊,不像网页只能经过连接打开
      • 加上其余XXX就搞出了比拟原生的体验(chadebushao)
    • 微信的梦想上说segmentfault

      • 做为一个月活超10亿的超级app,人口红利已达天花板,因此如今开始打时长红利的主意,拓展微信的使用场景,拓宽微信的边界
      • 马化腾亲口说过:从消费互联网到产业互联网,随着产业互联网时代的到来,咱们也在“链接产业”上寻求突破,而小程序就是链接产业互联网的“利器”,什么是产业互联网?简单理解就是互联网+的马化腾版,是经过大数据、互联网等技术给B端/产业赋能的东东,这么说是否是就理解了“利器”一说,不只给咱们众多程序员创业的机会,也让他们以最低成本遇上互联网的快车啊
      • 赚钱啊!鹅厂的梦想啊!

作什么样的小程序?

回到上面的引子,为何值得庆幸?由于上面说了——能下降开发成本,能提升用户体验,能褥流量!能让每一个人都有机会搞事情!!!搞什么呢?我也不知道,若是你有好的想法欢迎联系我😄不过,这里分享下个人想法
  • 战线不能长!张小龙说过——"用完即走",其实这不是缘由,只是我调个书袋而已😂但微信确实是这样啊,聊天、朋友圈,好像确实没什么太丧心病狂的一直拉着你不走(好像如今还有看一看?始终记住——鹅厂有梦想!)因此你作的东西要符合人家产品的理念!好吧,说个实际的场景,若是你要在小程序里的创做文章,那别人来一条信息你回不回?不回?你的思绪回不回被打乱?不会?你的心情会不会很烦?不会?👋你赢了,来生再见,因此权衡好你的功能设计,战线越长越容易死
  • 短!平!快! 对应上面。就是快速进入主题,功能点一目了然,功能也尽可能单一,该干什么尽快干什么!例如让用户分享,让用户pay,快!快!快!不犹豫,让用户尽快上车
  • 作矩阵,对应上面,若是你想把app的功能都搬到小程序上,那必定要作功能拆分,作多个小程序造成矩阵,同时矩阵还能造成协力,a给b拉客,b给a拉客,即使b进局子了还有老大哥a

小程序os长什么样?

想种一个小程序总先知道这片土地什么样吧?OK,欢迎来到小程序黑土地。。。

clipboard.png

  • 首先咱们先说说小程序用到的两个线程——渲染线程、脚本线程,与网页开发不一样,这两个线程是分开的,分别运行在不一样的线程中,而网页则是互斥的,也就是说视图和脚本被分开了,在不一样的线程里,这就致使了和普通网页开发一个很大的不一样——没有DOM API,并且也不是运行在浏览器里因此也没有BOM API
  • 咱们再看图还发现小程序总共有三种运行环境,而且!每一个环境两个线程还都不同!因此同窗们啊,在开发工具上行的在真机上不必定行啊!可别太天真了,必定要在真机上验证功能的可行性!
  • 咱们有没有想太小程序为何要费那么大功夫重造轮子?不直接用成熟的web技术?说是体验,其实我以为最主要的是微信想管控一切,不是你想怎样就能够怎样,而是我让你怎样,你才能怎样(至今我还对此很不爽)因此就干掉了灵活的web,别被我带沟里——小程序并非彻底没有了web,实际上你看到的就是web,只是没有暴露出来,而是微信直接经过编译小程序来替你操做了

既然是两个线程,那必然要通讯啊,要协做完成任务,那怎么实现的呢?看下面的通讯模型 微信小程序

clipboard.png

没看到图也能先想到是这个样式😊,这里提示几点api

  • 上图中的Native是指微信客户端
  • 逻辑层发送网络请求也经由Native转发
  • 渲染层是由多个webview组成的,为何?为了提供更好的交互体验呀,这样也更贴近原生体验,同时避免了单个WebView的任务过于繁重,同时致使了小程序的生命周期不容易被理解(下面带你理解)
  • 通讯是有时间成本的,因此在开发中咱们最好使用异步接口

来看下生命周期 浏览器

clipboard.png

  • 其实了解了渲染层是由多个webview组成的就很容易理解生命周期了安全

    • navigatebBack是返回上一个webview,销毁当前的webview
    • navigateTo是打开承载新页面的webview,同时保留老的webview
    • redirectTo是在当前webview里打开新的页面
  • 左下角有两张拼一块儿的图是switchTab的
  • Tabbar页面初始化以后不会被销毁!因此Tabbar页面不会unLoad,更多请参阅图片

有用请点赞🙏
下一篇:微信小程序之登陆态的探索微信

相关文章
相关标签/搜索