这篇文章将围绕下面几个方面:javascript
从开发模式(过程)上对比Android和小程序,比较两种”模式”的异同css
从实现功能上对比,主要是看看微信小程序的局限html
本身的一些见解,微信的优点前端
开发过程上的对比java
在我看来,开发一款app,须要作的主要是界面布局以及交互处理,而后是后面的业务逻辑处理。虽然平台不一样,可是任务都是趋同的。下面从这两个大的方面进行对比一下。web
小程序json
微信把这个小程序框架称为“MINA”,并声称:小程序
MINA(MINA IS NOT APP) 是在微信中开发小程序的框架。微信小程序
MINA的目标是经过尽量简单、高效的方式让开发者能够在微信中开发具备原生APP体验的服务。api
MINA提供了本身的视图层描述语言WXML和WXSS,以及基于JavaScript的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,可让开发者能够方便的聚焦于数据与逻辑上。
我的以为第三点说得特别好。大概说清楚了开发者要干什么。大概就是以写Web的方式写好前端,而后经过双向数据绑定技术和业务端交互,业务端经过javascript代码实现业务处理,必要时调用微信接口完成一些处理。
一些生命周期函数
这里所说的生命周期函数是指的整个应用以及每一个页面的声明周期函数,在Android中,对应着App、Activity类,而在小程序中,对应着App和Page两个函数对象(注意,javascript是基于原型和构造器的,而java是基于类的,因此这里就形成了一些写法的不一样)。以App为例,下面是一个代码实例:
App({ onLaunch: function () { console.log('App Launch') }, onShow: function () { console.log('App Show') }, onHide: function () { console.log('App Hide') } })
每一个小程序起起来时就会有一个App实例,同理每一个页面打开也会有一个Page实例(这个连接打开往下滑还有生命周期函数的图解),咱们只须要在这个实例中添加本身的逻辑便可,惟一不一样的是这是在javascript这种语言上写的(java和javascript的区别就像是雷锋和雷峰塔,因此这里形式上的不一样仍是蛮大的)。
视图层代码
前面说了,写视图层的体验有点像Web前端,主要是写多了Android,习惯性地会把界面的样式以及交互放在一起写(事实上就是你在xml上作的工做),而在Web端,须要html和css文件来共同完成。在小程序里面,对应的是WXML(WeiXin Markup Language)和WXSS(WeiXin Style Sheets),注意虽然模式和web很像,可是在形式上算是微信本身开发的一套(因此你须要使用他们本身的标签)。具体来说,你须要作两件事:
在WXML中经过组件(微信所提供的标签)构建页面结构,而且在其中完成数据绑定和事件绑定
在WXSS中完成样式的定义,用以控制WXML中组件的样式。WXSS具备CSS大部分特性,同时也有部分扩充。
基本上,视图层很像在写Web端。不过你也看到了,和Android比起来,限制因素在于微信给你提供了组件,而后你最多改改样式,更多的像自定义组件什么的就不可能了。
逻辑层代码
不一样于Android有一堆的组件(Activity、Service..)来支撑逻辑层,小程序就一个Page()函数(相似与App()函数,在框架里面填逻辑),因此显得很简单。基本上,数据经过双向绑定进行传递和刷新的,而后在page内能够完成一些交互处理,更多的能力(访问网络、存储)是经过微信的API完成的,这些api以wx.开头,目前来看,不是太多,因此能够很快看完,固然也意味着其实能够完成的工做还着实有限,这个后面说。
工程组织
总体来讲,小程序的工程组织仍是蛮清晰的,MINA程序包含一个描述总体程序的app和多个描述各自页面的page,一个MINA程序主体部分由三个文件组成,必须放在项目的根目录,是app.js,app.json,app.wxss,分别用做生命周期函数、配置文件和样式文件,一个MINA页面由四个文件组成,是.js,.wxml,.json,.wxss,分别用做生命周期函数、布局文件、配置文件和样式文件,他们须要经过同名且放在同名文件夹下(方便框架经过名字路由)。比起Android来,套路应该是固定而简单得多。
Android
再回头看看Android开发,忽然以为能够玩的简直是太多了…下面简单描述一下,确定是不全的。
一些生命周期函数
App、Activity是确定的,其实套路和小程序仍是差很少的。只不过组织形式是类而不是函数对象。以前说了,这是由于Js和Java语言特性形成的。
视图层代码
一般来说,Android的界面在.xml文件中定义,其实仔细想一想就会发现,在文件中,咱们是同时定义了布局,和交互逻辑的,这是由于本质上这些.xml声明都是View类的子类,咱们经过重写View的声明周期方法来完成了对齐的样式(onDraw以及LaoutParams)、以及交互的定义(各类on..listener)。因此在.xml中更像是对这些对象进行一系列实例化。至于双向数据绑定,Android也开始支持了
逻辑层代码
这一层仍是要复杂得多..放到后面对比来讲吧。
工程组织
…..不想说了,一方面写法多,一方面相对于小程序也蛮复杂的。
下篇内容(待续)
从实现功能上对比,主要是看看微信小程序的局限
本身的一些见解,微信的优点
「H5程序俱乐部」是一个专一微信小程序学习交流的微信公众号
天天发布微信小程序设计/开发/运维知识,小程序最新资讯
「H5程序俱乐部」微信号:wxappclub 或者 微信扫一扫关注