Demo了解Meteor实战



通过Demo了解Meteor7大技术原则


Database Everywhere已经讲完了。你们只要知道这个跟传统的LAMP或者是Ajax都已经是十分不同了,因为所有东西都在本地来完成的。



One language


server端和client端,都是跑的js,各自跑在不同的地方??丛创肽忝蔷椭懒?,有的js是放在client里面的;有的是放在server目录里边。server目录里面的文件是不会放在client端去执行的;client的文件也不会跑到server端去执行。但是,如果你的文件是设在这两个目录之外,这个的定义就会出现在client端和server端都有。


0.png


也幸亏都有,否则的话怎么在服务器端和浏览器端怎么都有list。在这里敲lists,马上就有反应。


1.png


如果,我们假设这个实在server端运行的话。


2.png


client端没有这个定义,那么你一定会出一个错误。因为你这个list找不到了。client端没有这么一个变量出现。包括这个todos都一样,把这个放到server端,在client端就没有了。


3.png


也幸亏它们两个都有,所以呢在内存中会形成这两个object。然后才能实现像我们刚才那种DDP的传输。让它加一个就加一个,让它减一个就减一个。这都是由于这个原因才能实现的。
那么好处显而易见,那么假设不是用meteor,而是用其它的架构在写这样的一个app,你所有的这种变量,比如lists、todos。


这些你就必须定义两次。前端用JavaScript定义一次;后端用Python也好,用ruby也好,用java、c#,这些语言都得再定义一遍。因为这些东西毕竟是两个不同的语言,不同的运行环境。
但是在meteor的好处就是,我这个文件是共用的。这个collection文件在编译之后,在server和client端,都有。


4.png


所以这些东西你就只写一次就行了。当你这个变量有所变化的时候,你不需要去改两次,这个是一个很好的地方,因为我们写软件的时候,经?;岱⑸岸斯こ淌呛秃蠖斯こ淌π鞯氖焙蚧岢龅愣砦?。以致于一方改了,另一方却没改。



Database Everywhere


就是说我们的前端和后端都有数据库。这里需要说的是,我们学习meteor是需要有mongoDB的学习的,需要你会mongoDB的。这并不是要求你很擅长mongoDB,但是你至少要会一些简单的操作。比如像这样。


5.png


以及一些非关系型数据库的基本概念,这些是一定要知道的,至少能够增删改查。至于不需要知道的,比如服务器的管理、数据的备份,怎么做index等等?这些东西都属性高级要求,现在不是非得要知道这些才能学meteor。所以呢,要了解,但是要适可而止。我们只需要学到这门课程要用到的东西就可以了。以后在实际做project的时候,可能会遇到问题,遇到什么问题就再解决什么问题。


我们继续说这个Data Everywhere,客户端肯定有数据库,这个是不用多说的。前端的数据库是server端的数据库的一个子集。浏览器不可能把数据库的所有内容都搬到本地的数据库,订阅和发布就是解决了这个问题。


6.png


client端是要通过订阅这个函数,向server端请求说,我需要订阅哪些类型的数据。以这个todos为例,比如我们点击这个language,我们只需要订阅这个language页面上有的内容就行了。


7.png


如果你打开,这个科学家的页面,这个时候就需要向server端订阅这个科学家页面的数据了,如果它不是的话,server端也不用交给client端。


8.png


所以这个就是我们刚开始将的这个结构了。


9.png


它的代码呢!就是这个。


90.png


前端也有对应的js文件。


91.png


或许这个代码你现在看不明白,但是我们以后会详细讲到。这两边的内容是对应的,有这边的subscript,就会有那边的publicLists。


92.png


如果你进入到某一个页面的时候,这里就subscript todos。


93.png


todos是一个表的名字,然后后面就是条件,我只需要找哪一个todos的东西就可以了。


94.png


如果,我们现在在这个页面。


95.png


它后面有一个id,就是这个:


96.png


这个实际上就是运行在这里的。


97.png


Subscript问server要,server就是执行这个todos,参数就是这个从前端传过来的参数。


98.png


然后就检查一下,没问题。就去todos server的表里面去find,搜索到id等于刚才传过来的值。


99.png


搜索到的这些东西会被传到client端。也就是后来会出现的一大堆added。


990.png


也就是说,在任何时候,在前端保存了我现在需要演示的这部分的东西的数据,向server端订阅,server端根据你的订阅要求,把你需要显示的数据,通过DDP送到你的前端的数据库里面;然后你的前端数据库就有了,有了以后就会显示到页面上来。



【本文由麦子学院独家原创,转载请注明出处并保留原文链接】

logo
? 2012-2016 葡京国际首页 www.ybxiongdi.com
蜀ICP备13014270号-4 Version 5.0.0 release20160127

秋招大聚惠,豪华礼包你领了吗?

客服热线 400-862-8862

回到顶部