看看纠结的我,有三种声音在心里:
(1)微软,苹果和亚马逊的面经:http://www.ituring.com.cn/article/60138, 是否要找个更好的公司跳槽?
(2)在APP Store 和 Google Play上 走过弯路的应用开发者,http://www.csdn.net/article/2013-07-18/2816269-The-successes-and-horrors-of-Android 他是一名电影制作者,也开发出了自己的应用,如何做APP呢?
文中提到的:
Appcelerator支持以下几种技术:
- 面向消息的架构(Message Oriented Architecture)
- Web Expression Language
- Widget Framework
- 继承服务平台Integrated Services Platform
Appcelerator应用的语言——Web Expression Language,是一种对HTML的扩展,它采用直观、声明的方法来构建动态的web应用。
现在代码工具越来越牛逼了,这不有一个叫LiveCode的开发环境:
LiveCode:让每个人都能开发APP的开发平台: http://www.csdn.net/article/2013-11-06/2817411-LiveCode-RunRev-IDE
LiveCode是一款RunRev公司推出的强大的图形化开发环境,其强大之处在于可以让一个不会编程的人在很短的时间内就能开发出原生的、能够运行于PC、服务器、移动设备上的应用程序。
(3)微信公众号平台、易信公众号平台、百度轻应用平台、新浪微博等开放平台的火热推出,基于这些大平台的微App崛起也为数以万计的移动互联网开发者提供了创业史上最好的时期,而我能够在上面做些啥呢?在平台上做APP?如何做呢?
http://www.csdn.net/article/2013-10-31/2817352-discount-of-schedule-MDCC-1-day-left
http://www.csdn.net/article/2013-10-30/2817339-weixin
百度的轻应用开发初探:http://blog.csdn.net/gaoqiv0447/article/details/12104023
所谓轻应用是指 HTML 5 Web APP + 即搜即用,百度世界大会上所讲的:“移动搜索+轻应用”是满足海量中长尾需求的最佳模式,可以有效解决应用开发和用户需求的对接。
一般意义上的HTML5应用的特点:
○ 不需要下载,直接可以使用
○ 不需要安装,即不占用手机存储空间
○ 多平台兼容
目前百度轻应用有三个途径开发,AppBuilder、SiteApp、Clouda。
AppBuilder是一个App模板,用户只需要灌入内容,生成的应用基本没有吸引力,意义不大,是为App开发小白准备的。
SiteApp是为了让传统的PC网站转化为应用,本质上也是一种自动化生成工具,可以快速的把大型网站转为移动应用,虽然相比AppBuilder要灵活方便,但是需求固定,只适用于少数场景。
Clouda才是百度为开发者提供的轻应用开发框架,灵活有意义。
Clouda是简单,可依赖的实时Javascript框架。对一个想开发移动webapp的开发者来说,可以使用clouda开发框架,实现一个功能和体验与native app齐平的轻应用。
一般公司开发一款APP,服务器使用Java,客户端用Android,服务器和客户端交互的时候,仍然需要将Java对象序列化为json数据,客户端接收到在进行反序列化。
Clouda开发方式更加彻底,完全不需要纠结于此,彻底的打通了服务器和客户端,不需要再书写接口文档,不需要生成接口代码,服务器和客户端代码本身就在一起编写,这也就是百度所说的云端统一,实际就是服务器和客户端统一,好像现在大家都喜欢把服务器称为“云”,可能听起来更拉风吧。
从Clouda的github项目sumeru所采用的协议MIT来说,在这个协议控制下的开源程序基本没有法律风险,使用者可以修改、再发布、商业化等等都不需要知会百度。
Clouda框架实现了MVC架构,应用代码结构清晰条理,作为最重要的枢纽,Controller,三个主要时态分工明确,onload()函数中用来执行数据的订阅,是MVC中Controller和Model建立联系的过程;这个函数中的代码如果开启了Server渲染,则很可能会在Server端执行,这也就是为什么Clouda框架开发的应用冷启动速度优于一般的HTML5应用,因为在onload()函数中,服务器执行了部分js代码,使得客户端节省了这部分代码在服务器上执行的时间。
onrender()函数负责对View的渲染和转场,是MVC中Controller和View建立联系的过程;
onready()函数负责在View渲染完成后,完成事件的绑定、DOM操作等业务逻辑,其中的代码都是运行在客户端的,所以可以使用前端js中的变量和函数,比如window, document等。在百度技术交流会上童遥大牛也解释过,他们正在做服务器端执行剩下部分js代码的工作,我的理解是dorender()代码中的js部分,所以如果真的实现的话,应用的冷启动速度会进一步提升。当然这个技术是在用空间换时间,服务器执行了js代码,渲染了HTML,结果会一起发送给客户端,相比原来的页面,HTML内容应该更多。
下面是todolist例子中的代码片段:
- App.todos = sumeru.controller.create(function(env, session){
- // 第一时态:Controller需要使用的数据都在这个时态加载,订阅发布数据
- env.onload = funtion(){
- return [getMsgs]; // 这里返回一个fuction
- };
- // 第一时态讲解:如果您开启了Server端渲染,那么在onload函数中需确保onload中,没有使用前端的js中的变量或函数,比如window,document,Localstorage等
- // 第二时态:负责对View的渲染和转场
- env.onrender = function(doRender){
- doRender('todos', ['push', 'left']);
- // 第一个参数定义了Controller和view视图的绑定
- };
- // 第三时态:在View渲染完成后,事件绑定、DOM操作等业务逻辑在此时态中完成
- // 每段逻辑使用session.event包装,从而建立事件和视图Block的对应关系
- evn.onready = function(){
- };
■ 为什么相比于普通的HTML5 Web App,Clouda框架开发的应用可以实现即搜即用?
从上面的说明可以看出由于数据绑定在onload函数中运行,而Server渲染是默认开启的,也就是这段代码是可以在Server端运行的,所以搜索引擎的网络爬虫是可以再次运行这段代码,获取到应用内的数据,而传统的数据只有在客户端才可以访问,如果搜索引擎要抓出应用内的数据,那就意味着他必须重建环境,在服务器端运行客户端程序,现在看来只有在搜索服务器上搭建移动端虚拟机,例如android虚拟机、iphone虚拟机,好像目前还没听到有公司使用这样的方式抓取内容。
■ Clouda框架中没有UI部分
Clouda框架更偏向于数据层,没有UI部分,用户可以使用网络上通用的UI框架,比如jQuery mobile, Kendo UI, Sencha touch等。
传统从来都会短期消失,习惯也不会一天改变,对于新兴的优秀技术,只要先进,能加快研发进度,实现效果,最终一定会成为一股潮流,至于是否能成功还有很多因素,希望百度能够坚持下去,有大公司支持的开源项目生命力会更顽强,有百度的大力宣传,才会有更多的开发者知道Clouda。
之后希望从更加技术的角度讨论Clouda平台开发。