iOS开发初探小程序(上)

楼主本人是一枚iOS程序媛,团队内部分享本人选题是小程序研究,所以以一个iOS开发的视角记录一下探究历程,如果有误,欢迎大佬们评论区指正。

首先附上小程序项目官方搭建步骤:
https://developers.weixin.qq.com/miniprogram/introduction/qcloud.html

搭建项目时所用的账号可以自己申请一个,使用未开通过其他公号服务的邮箱就能申请了,一个个人账号目前只能开发一款小程序,开发设置里配置域名(域名必须要用创建项目时所用的APPID账号下的域名,也就是说如果你想玩一下某个demo,必须要把demo里请求的域名添加进你自己的账号域名设置里)
这里写图片描述
小程序:上图是小程序的后台服务器配置,必须要事先配置好服务器,否则在程序中是无法正常请求的。自己玩的话域名其实可以抓取一个数据源来尝试一下。一个小程序同时只能有一个 WebSocket连接,并且同时也只能有5个网络请求连接。请求的服务器地址必须是HTTPS协议的,看了后台服务器地址配置,上传和下载文件的服务器也是单独设置。小程序不支持H5页面跳转也不支持cookie。

iOS :苹果规定从2017年1月起App内的网络链接强制使用HTTPS协议的,iOS 可以设置网络请求数的。通过参数maxConcurrentOperationCount 来设置请求数,但是也不是任意设置的,在2G网络一次只能维持1个链接,3G是2个,在WiFi和4G网络环境下是不限链接数的,这里说明下并不是并发链接数越多越好,越多占用带宽越高,请求时间反而会延迟。

这里数据回调处理比较类似。(小程序有点类似block)
这里写图片描述

2.本地持久化存储/数据层
小程序:同一个微信用户,同一个小程序 storage 上限为 10MB,用来存储数据和文件。

数据:看官方的API目前只支持”key-data”的简单键值存储以及set/get/remove/clear数据操作,还不支持数据库。

文件:在文件存储方面,小程序是默认都是临时路径,本次程序运行期间可以正常读取,退出程序后就删除。所以如果要持久存储,需要再调用wx.saveFile放到本地存储,下次打开程序还能正常访问到。

iOS:为每一个App创建一个沙盒,沙河有3个文件夹Document/Library/tmp,根据这个文件夹的命名大概就可以猜出它们不同用途。iOS 这边存储方案就种类繁多,品种丰富。Core Data、SQLite、NSUserDefaul、keychain、plist、archive根据自己的需求选取数据存储方案。这里只是简单说明一下iOS 持久化存储,其实它是非常庞大的一个点,iOS是一个小型的操作系统,存储和文件操作是有一套完整的方案。

3.业务层/UI层
在小程序中一个完整的页面page是由.js/.json/.wxml/.wxss这四个文件组成,每个界面.js .wxml是必选项其它两项选填。iOS并没有这样的强制规定,一个界面可以完全在一个UIViewController里面完成,复杂的页面iOS也是可以通过类似的文件拆分使得结构更加清晰明了。

.js:脚本逻辑文件
.js文件类似iOS中的UIViewController,iOS中一个完整界面可以只有一个UIViewController,在UIViewController中实现了页面的大部分逻辑代码,页面的代码布局,属性初始化,生命周期函数,回调函数,事件处理,自定义方法等。小程序中也有同样结构数据,生命周期,控件绑定事件,自定义方法。这样可以提高代码的可维护性和可读性。
页面代码布局规范

看到上面对比,发现两者还是很相似的,这样对比看还是有助我们了解小程序。简单看生命周期函数,是不是很眼熟,大概都是与iOS一一对应的…..
生命周期

.json 配置文件
一个小程序只有一个总的app.json公共配置,在.json文件中可以配置导航栏的样式,tarBar的配置,刷新控件,网络超时时间等。其它的page中创建的.json文件只能配置导航栏的样式,其它都继承app.json里面的公共配置(类似iOS的基类)。自定义创建的所有.js的文件页面都需要添加到app.json中,同时,减少页面也需要把相对应的文件路径从 pages 数组里删除。不添加编译器也不会报错,但是你会发现跳转到某个页面一直不成功一直显示不出来,这个时候就要检查一下有没有在app.json中添加该文件了。
另:json文件里面不能写注释
这里写图片描述
这里写图片描述
这里写图片描述
app.json官方配置文档:
https://developers.weixin.qq.com/miniprogram/dev/framework/config.html

.wxml 页面结构 wxss 页面组件样式
这个.wxml可以想象成在UIViewController里面放一些控件,比如这个页面有多少图片,按钮,以及控件之间的层级关系,绑定事件等,类似于iOS中的View层。但是呢,在.wxml里面不能设置图片的大小,圆角,位置等属性。这时候.wsxx的作用就体现出来了,.wxss主要是用来描述.wxml组件的样式。

举个例子:在App 中应用广泛的UITableView在小程序中是怎么实现的
这里写图片描述
小程序实现UITableView

小程序提供了很多UI组件,基本可以满足大部分界面需求。这些组件基本都能在iOS中找到相对应的。在小程序中这些组件是有一些共同属性,同时每个组件又有自己一些独有的属性。跟在iOS 中很多UI控件都继承同一个大类UIView是一样的道理的。
组件列表
附上各个组件的属性地址:
https://developers.weixin.qq.com/miniprogram/dev/component/
总结
以上是小程序入门篇,有了这些,一个小程序的小框架就出来了,再根据不同的UI组合就能弄一个简单的demo玩一玩,想要深入开发就得多写多敲熟能生巧。小程序是个小而美的东西,某些方面可以渲染的跟native一样,也提供了消息通知和本地存储的能力,完全可以替代一些对native要求不是很高的App。但从微信限定的10M内存,页面层级不能超过5层来说,小程序也不适合太过深度的用户体验。有空再深入研究,中篇和下篇敬请期待~

猜你喜欢

转载自blog.csdn.net/nefertari_yinc/article/details/80227596
今日推荐