最近 Facebook React 团队释出了 React Native, 用来构建 Mobile Native 应用. 非常给力的口号即是标题所指: Learn Once, Use Anywhere.
我突然觉得, 他们正好把我思想的口号给用去了( 不过我没想到这么美的词 ), 因为我已经在更早的时候就决定要讲一讲 Ionic 了, 这个口号也同样是: Learn Once, Use Anywhere, 但是, 加了一句, For AngularJS.
开始 Ionic 之前, 我们要先回顾下历史.
Web 领域从 1995 年第一个真正的网站建立到 2015 年, 发展的飞起. 整体而言, 我认为经历了以下发展阶段:
我认为, 前后端分离是必然的趋势, 切看我的分析.
Web 刚兴起的时候, 它真的只是 "Web", 它只管浏览器的渲染, 大家头疼的只是各家浏览器的兼容性问题. 于是乎, jQuery, Bootstrap 等和它们的组件们层出不穷, 来解决这类问题.
随着 Web3.0 的到来( 我参考 <文明之光> 发明的词, 意指移动端 Web 的起步 ), 我们发现, 现在的问题不是浏览器的问题了, 而是伴随着各种各样的屏幕, 以及各种各样的嵌入Web. 而且, 最擅长构建界面的 Web 技术还没有打入 APP 阵营.
我们以前的经验似乎都不够用了, 但是, 我们发现, 如果不把浏览器当浏览器, 而把它们当作数据处理层( 这要求浏览器拥有很高的计算能力, 以前这不可想像, 而但是, 一个 iPhone5 的手机处理能力超过几年前的一个 PC ), 服务器只提供数据( 目前最流行的方案即 Restful API ), 如此, 我们就可以解决 Web3.0 下的主要的问题:
通过这样的革新, Web 技术自然而然渗入到原生 App 的领域. 其优势在于:
既然如此, 是时候影响到原有的 Web 开发技术了:
在 Web3.0 的发展下, 传统的 MVC 框架, 会转变为前后端分离的开发方式. 这样, 你就可以学一次, 到处用.
AngularJS 是一个类似于 Rails 的全栈式的前端框架, 它拥有自己的路由, 控制器, 作用域, 和组件, 非常适合作为前端的全栈基础框架. 而 Ionic 正是基于它而完成一个框架:
Ionic 的技术构成为:
Ionic 工作流非常简单:
ionic start myapp [template]
ionic platform add ios
ionic build ios
ionic emulate ios
一些国内的例子:
就在最近, Ionic 上线了 LiveReload 功能, 你可以在模拟器与测试机器( 没错, 是你的手机 )上, 得到实时的代码刷新功能.( 此刻, 我想, 真正的 iOS 工程师还在编译他们的 xcode 吧.)
如果你就是工程师, 马上去试试吧: http://ionicframework.com/getting-started/
在这个领域, Ionic 的野心就跟 Web2.0 时代的集大成者 Rails 一样大, 都想建立整个开发流的生态环境.
一旦你的团队计划一并开发 APP, Web APP, 以及网站, 那么, 最佳的选择即是一套前后端分离的技术栈, 它可能是这样:
现在, 我们可以不再使用传统的 MVC 框架的 Web 开发工作流, 而只需要关心前后端分离后的工作流:
你既不需要学习传统的 MVC 中的 复杂的 form 处理流程, 也不用关心 session, cache 等在 Web3.0 不存在的问题, 只需要关注好前后端分离之后的问题即可:
最后, 使用 AngularJS 与 Ionic, 运用同一种思想开发 APP 与网站, 这就是:
Learn Once, Use Anywhere.