`
xidajiancun
  • 浏览: 492189 次
文章分类
社区版块
存档分类
最新评论

Meteor+AngularJS:超快速Web开发

 
阅读更多
为了更好地描述Meteor和AngularJS为什么值得一谈,我先从个人角度来回顾一下这三年来WEB开发的变化:
三年前,我已经开始尝试前后端分离,后端使用php的轻量业务逻辑框架。但当时前端还没有成熟且广泛流行的业务逻辑框架。所以在做产品开发时我仍然选用drupal等整体开发框架。开发时常常需要在javascript和php间切换,同时还要自己搞定数据库。此时的开发模型图是这样(红色箭头和红色块都表示工作重灾区):
随着对用户体验的追求,我开始把业务逻辑往前端推移,于是马上遇到了前端数据与页面展示绑定的问题,业务逻辑简单时还能用jquery搞定。越来越复杂后,开始尝试使用backbone等前框架来规范数据层和做数据与视图的绑定,用requireJS做模块化和延迟加载。同时异步处理等编程模型也都开始进入实战。后端采用RESTful接口规范。此时的开发模型图是这样:
一年前左右,接触到knockout和AngularJS,感受到数据和视图自动绑定的美妙开发体验后,立即抛弃Backbone。此时的开发已经彻底前后分离、前端业务数据层和视图层分离。接下来又开始陆续使用coffeescript 、jade、less进一步减少代码量。用grunt做自动编译、测试、和检测文件改动自动刷新浏览器。一切都已经比较完美了,除了后端仍然要对数据持久化做不少工作,除了前端要想实时反映数据改变仍然要轮询或者用webSocket连接服务器。这时的开发模型图已经是这样了:
只差一点就完美了,Meteor就是这一点。Meteor是一个基于nodejs、webSocket、mongoDB的整体开发框架,在它的实现中,前后端的数据模型已经几乎没有差别。
意思就是,前端对数据模型进行任何改动,只要调用“save”方法,所有数据就自动存到服务器端的mongoDB中了——终于可以忘了主动发送请求给服务器,终于可以忘了服务器要和前端实现几乎一样的数据模型层
而任何前端“订阅的”后端数据出现改动,前端数据模型也会马上自动得到了更新——终于可以忘了主动轮询,终于可以忘了拿到后端数据再解析成前端模型。除了前后端模型的双向自动绑定,Meteor同时还实现了数据到前端模板的自动更新。
不过,Meteor的模板在处理视图到模型的改动时扩展性不如AngularJS。因此,将AngularJS和meteor结合是最好的选择。到这里,快速Web开发模型终于完成:
除了模型的自动绑定与更新,meteor还提供了大量进一步加速开发的机制。如:
  • 前后端载入文件文件的自动化管理。只要将相应的文件扔到前后端相应的目录中,就会自动载入到页面,或者在后端自动运行。
  • “智能包”管理。Meteor提供了模块的机制,让第三方开发者可以写“智能包”来加强前后端的功能。如,加载了“coffeescript”智能包后。无论前后端用coffeescript写的代码都会自动编译成javascript后再载入。
  • 内置大量“智能包”,有进一步支持开发的包,如“less”、“underscore”、“coffeescript”,还有通用业务逻辑包。如“账户管理”,而且已经集成主流oauth账号登陆。
  • 自动检测文件改动,自动刷新浏览器。
  • 自动化部署。
以下马上来看一个实际开发的例子,制作一个为公司录入应聘人员信息的系统。
需求:
  • 能指派面试官,自动邮件通知。
  • 支持google邮箱登陆。
  • 体验流畅、单页应用。
开始写业务逻辑之前,我们先开始为准备一些开发工具和环境。首先,我要求能用coffescript代替javascript,less代替css。安装完meteor之后,进入项目木文件夹。在命令行中输入如下代码
meteor create myapp
meteor add less
meteor add coffeescript
然后,我想在前端使用jquery,和meteor提供的账户系统来支持google oauth授权。继续输入:
meteor add jquery
meteor add account-ui
meteor add account-google
最后,将angularJS整合进来:在项目文件夹中创建如下目录层级:
client中的内容会全部自动加载到页面上,具体加载顺序请参考官方文档。server中的文件会在应用启动时自动运行。public中文件将作为静态资源供外部访问。
因为AngularJS对数据模型改动的检测是通过“dirty check”的方式(见Angular官方文档)。所以要使用插件来让Meteor数据改动能通知到AngularJS,以此触发视图变化。这个插件就是上图中的angular.meteor。
接下来说用AngularJS的ui-route模块来管理页面路由,将应用变成单页:
加入“使用google账号”登录的功能:
当新增一个应聘者时,给面试官发邮件:
这里应该注意到的是,Meteor对于数据的操作完全是标准的MongoDB语法。剩下的业务逻辑用AngularJS的视图与模型很快就可以实现了,这里不再赘述。
最后看看系统的效果截图,添加新的应聘人信息:
面试结果记录:
总结整个开发过程,可以都看到的是,几乎没有后端开发,只要前端完成,应用基本上就完成了。并且一步就可以使用coffeescript、less等,不再需要自己搭建复杂的开发环境。这样的开发体验,在目前来说,几乎已经到极致了。
当然,要进入真正产品级开发,Meteor还有一些问题要克服,如“支持多种数据库”,“如何部署到集群”,“实时数据增加了服务器负载”等。好在Meteor目前收到的关注已经特别高,并且有了大量的第三方开发者,进入产品级开发的步伐越来越快。我们完全可以期待,这块拼图成熟之后,将给整个web开发新注入一股强大动力。
分享到:
评论

相关推荐

    socially-angular:Meteor和AngularJS应用程序

    在当今的Web开发领域,JavaScript作为前端开发的主导语言,其影响力日益增强。随着框架和技术的不断更新迭代, Meteor 和 AngularJS 这两个强大的工具逐渐成为开发者构建高效、动态的Web应用程序的首选。本篇文章将...

    rafflr:一个抽奖应用程序,旨在帮助人们学习使用 Meteor 和 AngularJs 制作网络移动应用程序

    "rafflr" 是一个抽奖应用程序,它的设计目的是为了教学,让人们能够了解如何使用 Meteor 和 AngularJS 开发网络及移动应用。这个项目不仅提供了实际的抽奖功能,还为学习这两种技术提供了实战平台。 **描述解析:**...

    Angle-3.4-meteor-angular

    在Web开发领域,集成多种技术栈以创建高效、响应式的应用程序已成为常态。"Angle-3.4-meteor-angular"项目正是这样的一个集成,它结合了AngularJS(Angular 1.x版本)与Meteor框架,为开发者提供了构建全栈Web应用的...

    meteor-angular-strap:(用于 Bootstrap 3 的 AngularJS 1.2+ 原生指令。)为meteorjs 重新打包

    在当今的Web开发领域,Meteor和AngularJS是两种非常流行的开源框架。Meteor是一个全栈JavaScript平台,它提供了实时的双向数据绑定,使得Web应用的开发变得高效而便捷。而AngularJS则是Google维护的一个前端MVC框架...

    meteor-angular-leaderboard:使用AngularJS的流星排行榜

    这个项目展示了如何将流行的JavaScript框架AngularJS与全栈Web开发框架Meteor结合,来创建实时、交互式的Web应用。 【描述】提到这个应用“已经很老且过时”,这暗示了该代码可能基于较早版本的AngularJS(可能1.x...

    socially:AngularJS + Meteor 应用程序。 以下教程来自http

    AngularJS是一个前端MVC(Model-View-Controller)框架,而Meteor则是一个全栈的JavaScript开发框架,它们的组合能让你快速构建实时的Web应用。 ### AngularJS:前端的力量 AngularJS的核心特性包括双向数据绑定、...

    getting-started-with-meteor-js:Meteor.js 入门

    Meteor.js 是一个全栈JavaScript框架,专为快速开发实时Web应用程序而设计。它结合了数据库、服务器、客户端和部署工具,让开发者可以高效地构建功能丰富的应用。在"getting-started-with-meteor-js"这个资源中,...

    meteor-textAngular:textAngular 的流星包包装。 https

    Meteor是全栈JavaScript开发框架,它将数据库、服务器、客户端和实时同步功能融合在一起,使得开发Web应用更加高效。当我们需要在Meteor应用中集成一个富文本编辑器时,`meteor-textAngular`这个包就派上了用场。 `...

    ngmeteor-leaderboard:使用 ngMeteoer 将前端移植到 AngularJS 的 Meteor 排行榜示例

    2. **Meteor**:Meteor 是一个全栈的 JavaScript 开发框架,用于快速构建实时的 Web 应用。它提供了数据库同步、实时更新和跨平台的能力。 3. **ngMeteoer**:这是 AngularJS 和 Meteor 之间的桥梁,允许在 ...

    meteor-yandex-map:(用于使用 Yandex 地图的 AngularJS 指令)为meteorjs 重新打包

    在现代Web开发中,地图服务已经成为不可或缺的一部分,而Meteor.js作为全栈JavaScript开发框架,结合AngularJS的强大视图层,可以创建出高效、动态的Web应用。当我们需要在Meteor应用中集成地图功能时,"meteor-...

    meteor-simple-todos-angular:https

    在当今的Web开发领域,JavaScript已经成为构建交互式Web应用程序的重要工具。本项目“meteor-simple-todos-angular:https”正是一个利用JavaScript框架Meteor和AngularJS开发的简单待办事项应用,同时结合了HTTPS...

    Meteor的离子组件。没有角度!_JavaScript_HTML_下载.zip

    在现代Web开发中,Meteor和Ionic都是备受开发者青睐的框架,它们各自具有独特的优点。在这个压缩包“Meteor的离子组件。没有角度!_JavaScript_HTML_下载.zip”中,我们重点探讨的是如何在不使用Angular的情况下,...

    8x8Helper:基于Web的8x8像素图形编辑器

    Meteor是一个全栈JavaScript开发框架,它允许开发者快速构建实时的、双向数据绑定的Web应用。通过Meteor,开发者可以使用JavaScript编写服务器端、客户端以及数据库代码,实现了前后端一体化,大大提高了开发效率。...

    meteor-ng-cordova

    1. **集成开发环境**:meteor-ng-cordova提供了一个预配置的开发环境,集成了Meteor、AngularJS和Cordova,开发者可以快速启动项目,而无需手动配置这些组件。 2. **数据实时同步**:利用Meteor的数据实时性,应用...

    meteor-smart-table:用于智能表的流星包

    在现代Web开发中,数据展示和管理是不可或缺的一部分,尤其是在处理大量结构化数据时。"meteor-smart-table" 是一个专为 Meteor 框架设计的智能表格包,它结合了 AngularJS 的强大功能,提供了灵活、高效的表格解决...

    meteor-Ionic-cn-:用 meteor Ionic 做的 app

    而Ionic,则是一个基于AngularJS和Web技术的开源移动应用框架,专注于UI交互和组件设计。它利用HTML5、CSS3和JavaScript来构建原生感观的移动应用,同时支持多种平台,如Android和iOS。Ionic提供了丰富的预定义组件...

    angular-meteor-collectionfs-example

    AngularJS是Google开发的一款强大的前端JavaScript框架,用于构建单页应用(SPA),而Meteor则是一个全栈的JavaScript开发框架,它将前后端无缝集成,简化了Web应用的开发流程。CollectionFS(简称CFS)是Meteor社区...

    AngularMeteor:测试应用程序角流星的东西

    **AngularMeteor:构建混合型Web应用的利器** AngularMeteor 是一个强大的框架,它结合了...同时,这也是一个实践AngularJS和Meteor协同工作的绝佳平台,你可以深入研究它们如何无缝对接,从而提升你的Web开发技能。

    socially_meteor

    通过深入研究"Socially Meteor"项目,开发者不仅可以掌握AngularJS和Meteor的基本用法,还能了解到如何在实际项目中整合这两者,构建出高效、实时的Web应用。这个项目提供的源代码和资源链接为学习者提供了一个宝贵...

    meteor-ng-datepicker:路易斯·法扎蒂(Luis Farzati)的bootstrap daterangepicker的成角度的包装纸,包装后用于流星

    在Web开发中,日期选择器是一个常见的组件,它允许用户方便地选取日期或日期范围。本文将深入探讨一个由Luis Farzati创建并为Meteor框架定制的组件——meteor-ng-datepicker。这个组件是基于Dan Grossman开发的...

Global site tag (gtag.js) - Google Analytics