流星撞击全栈之《Meteor实战》@阿狸不歌

图1 Meteor 实战封面

       广义的Web全栈,一般包含后端开发、前端开发、界面设计、产品设计、数据库、各种移动客户端开发等等,狭义的Web全栈则至少包含后端开发、前端开发、数据库。全栈的难度在于要求你掌握前后端的多种技能、可能要学会多种语言,比如大家都很典型的全栈概念LAMP(Linux+Apache+Mysql/MariaDB+PHP/Python/Perl),前端要用Javascript自不必说,后端或用PHP、或用Python/Perl,数据库你还得会SQL,要想一个人掌握这么多技术和语言,还是颇有些难度的,即使掌握了,在实际开发中,你的脑袋还要在各种不同语言之间来回切换,既增加了脑力负担,有提升了出错机率,实在是一件让人郁闷😒 的事情。

      不过继Node.JS和MongoDB诞生之后,一个新的全栈概念MEAN诞生了,从此世界发生了不小的变化。所谓MEAN是一个强大的JavaScript全栈解决方案,它由四大组件组成:数据库MongoDB、Web服务器框架Express、Web客户端框架Angular,以及服务器平台Node.js。这些组件由不同的团队开发,由开发人员和倡导者组成的社区推动各个模块的开发,并为其创建相关文档。如果你是一名Javascript程序员,那么对于“Javascript全栈开发”这个概念想必不会太陌生,即便没有亲自尝试过,也应该有所耳闻。图灵出版的《MEAN Web开发》、《MEAN实践》《Node与Express开发》、《JavaScript快速全栈开发》都介绍了Javascript全栈开发的理念。MEAN的主要优势在于其以JavaScript为主要的编程语言。用一门语言就搞定前后端、数据库,光想想就是一件令人兴奋的事情😄 ! 


      当然,学习正统的MEAN开发,你还是要分别去学习MongoDB、Express、Angular和Node.JS的,有没有更加简单(偷懒)的方式呢,想什么呢 🔨  ! 答案是:还真的有 —— 那就是 Meteor 🌠 (Web界的流星),按照《Meteor实战》的说法,Meteor仍然是基于MEAN栈的,或者说是属于泛MEAN阵营的(即泛指那些运行于Node.js之上并使用NoSQL数据库的任何框架。MEAN栈架构图见图2)。只是Meteor建构了一个捆绑的更为紧密的生态系统,而不仅仅是服务器进程和库(框架)的组合。

简单地说,Meteor是完全使用JavaScript创建富Web应用程序的开源平台。它在同一个框架下捆绑并提供所有必需的组件。它由以下几部分组成:Node.js、MongoDB、实际的应用程序代码,以及一个强大的CLI工具。

图2 MEAN栈架构图

      如果使用Meteor,你可以马上从零开始(当然,必要的Javascript基础还是要有的,具体请参阅本书第一章)创建Web应用程序,如果你阅读了本书第二章,你就会发现建立一个包括响应式用户界面、用户账户管理、和一个进行透明性响应式编程的Web程序可以做到如何之快!只要照着例子使用Meteor的CLI(命令行工具),你甚至无需知道怎样安装或配置任何服务器软件(Meteor已经帮你搞定了所有基础设施方面的工作)。比如在传统的MEAN栈里,用户认证和登录这部分工作,你是得在前端用Angular写,服务端用Express + Node.JS 来写,最后用户数据在MongoDB上的存取你也得写,而Meteor把这些繁琐工作已经打包好了,你要做的就是敲敲它的命令行。有国外程序员做一图(见图3)比较正统MEAN栈与Meteor(Comparing Meteor.js and the MEAN stack),犹如装满零件的购物车🛒 与超跑 🚗  的区别,还是颇为形象的。

图3 Meteor超跑

本书的第二部分(3-10章)进一步通过实战性的例子详细介绍了Meteor的主要组成部分(见图4)。

图4 Meteor主要构成图

       第3章介绍的是Meteor自有的Blaze库,是Meteor以前默认的前端库,需要指出的是,Meteor并没有把前端UI绑死在自己的Blaze库上,实际上,在官网上就有Meteor用三种不同前端库(Blaze、Angular.JS、React)做Todo List的教程。另外,还有一个需要透露的秘密就是,在最新的Meteor官方指南当中,Blaze只是一笔带过、Angular的介绍还停留在1.x阶段、而着墨最多的则是React,鉴于最近两年React的火爆,各中缘由恐怕不言自明。

        一个完整的Web应用毫无疑问要涉及数据的增、删、查、改(CRUD),第四章介绍的就是Meteor如何进行CRUD,由于Meteor的数据库使用的是MongoDB,所以其数据建模的思想还是与传统的SQL数据库有很大区别的,如果要做复杂一些的应用,就需要深入了解一些MongoDB的知识,具体可以参见《MongoDB权威指南》、《MongoDB实战》、《深入学习MongoDB》等书。

        第5章介绍了Meteor的重头之一——响应式编程,利用Meteor数据库无处不在的原则,并使用只存在于客户端的本地集合。这样做的好处在于,你对数据/表单的更改变化在界面上直接反应出来,不用等到数据提交到后台再被取回前端再渲染,实际上就消除了等待数据往返后端的时间,在用户体验上自然能得到更好的效果。

        生产环境中的Web应用肯定离不开用户注册和登录,以及认证(authentication)和授权(authorization),并且要更细粒度的方式来定义用户权限,这些工作如果是自己开发,那都是很繁琐的事情,而且安全性 🔐 还是个问题。而Meteor已经帮你把这件事给做好了,你几乎不需要再写任何代码。当然,你也可以不自建用户名和密码系统。使用常见的社交账户登录到你的应用可以降低注册的门槛,这种方式我们称为OAuth(Open Authorization),Meteor集成了诸如微博、脸书、GitHub、推特、谷歌等账号登录的API,你只要敲下“meteor add accounts-facebook”这样类型的指令就够了。

      结合用户认证和授权,Meteor就可以轻松的根据用户权限和系统配置来实现用户数据的发布和订阅,比如通过文档字段(比如用户/所有者ID)来安全地限制所发布的数据,或者确保客户端提供的所有数据在使用前都进行了验证。

      第8章介绍的是Meteor的路由、第9章是Meteor的包管理,这些内容在各种前端框架中都比较常见,所以不再赘述。


      关于Meteor的下载、开发和部署,个人建议可以使用docker来帮助我们,有一个很好用的开源工具meteor-up,使用 docker 来运行 Meteor 和 MongoDB,并且可以方便的把本地 Meteor 部署到云服务上。只要你有一些docker的基础,借助meteor-up来实现不是一件难事。


       总结,Meteor的主要优点如下:

1、容易学习,与正统MEAN栈相比,新开发人员不必对松耦合的前端库和后端框架进行深入地研究,就可以实现一些应用。对JavaScript有些基本的了解就足够开始

2、大部分应用可以在客户端上运行,好处是:服务器的负载会较小,用户界面的响应很快,用户体验比较好。

3、代码可重用,由于Meteor的同构(Javascript)性质,同样的代码可以在浏览器中、服务器上甚至是移动设备上运行。

4、强大的命令行工具,Meteor提供了开箱即用软件包管理和构建管理工具,覆盖了整个构建过程,从收集和编译源文件到文件精简、源映射、解决依赖关系等等,让你把心思用在业务逻辑上。


      如果你需要一个快速的应用原型开发工具 🔧 ,那么Meteor一定是一个优秀的选择 ☑️ 。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容