1. Meteor 包括什么:
命令行工具 meteor Command
编译器 js, coffee, less, jade, sass
运行调试环境 meteor run
部署工具和平台 Galaxy, yourapp.meteor.com
内置移动编译平台
2. Meteor Principles :
Data on the Wire
One Language
Database Everywhere
Latency Compensation
Full Stack Reactivity
Embrace the Ecosystem : 很多Meteor 中的技术并不是自身开发的,但Meteor
Simplicity Equals Productivity
3. 说说我理解的 Meteor :
Meteor 是一个基于Node.js的全栈开发框架,不过也有很多人说Meteor不是框架,是一个跨平台应用解决方案平台,因为它囊括了开发一款应用程序(web or mobile)的所有方面,前端,后端,数据库。
前端使用 Javascript,这是肯定的,不同的是 Meteor 在前端有一个 miniMongo 数据库(这个数据库好像也是用Javascript写的),和后端的MongoDB 数据库通过DDP 协议建立 Socket 长连接,从而达到数据随动的效果。并且在 Meteor 这里UI的渲染,显示的逻辑等都是在前端完成的,可以说是重前端轻后端。
后端使用 Node.js,负责同步和传递客户端数据,还有操作 server 端 DB。
4. Meteor 官方包管理: https://atmospherejs.com/
5. Meteor Code Principles:
----Code in the /server folder only runs on server.
----Code in the /client folder only runs on client.
----Everything else runs on both the client and server
----Please put all of static assets(font, images, etc) to /public directory
6. The sequence of file is loaded ?
first be loading is which file in /lib folder
main.* file is loading after all files be loaded
others file is loading according to a-z
7. Meteor is no MVC
8. --Use camelCase(myVariable) coding, --Use underscores(my_file.js) for file names. --CSS classes which use hyphens(.my-class)
9. if you prefer Coffeescript, Meteor has you covered. $ meteor add coffeescript. you will be good to go!
10. Meteor 的强大之处在于文件的查找。无论你把代码文件放在目录下的任何地方,Meteor 都可以找到它并且正确地进行编译。这意味着你永远都不需要手动编写 JavaScript 或 CSS 文件的调用路径。
11. Spacebars 是 Meteor 附带的一个模版语言. READ GITHUB
12. Meteor 跟踪了项目目录下的所有文件,当检测到其中一个文件发生改变,Meteor 直接重启正在运行的Meteor 服务器,并通知每个客户端重新加载此页面,其实这么说时不准确的。Meteor 的动态代码重载技术(HCR)类似于页面的自动刷新但其session中的变量不变,而如果我们手动刷新页面的话,其实是开启了一个新的session。
13. Meteor 的核心功能就是服务器端和客户端的自动数据同步,我们要仔细了解一下它是如何运作的,以及研究那个让它得以运行的关键技术: Meteor 集合(Collection)。
网络应用有三种基本方式保存数据,各种方式有不同的角色:
--浏览器内存:
像 JavaScript 变量的这些数据会保存在浏览器内存中,意味着他们不是永久性的:它们存在于当前浏览器标签中,当标签关闭后它们会消失。
--浏览器存储:
浏览器也可存储较为永久性的数据,使用 cookies 或本地存储 Local Storage (http://diveinto
html5.info/storage.html)。虽然数据会在不同 session 间保持,但是只是针对于当前用户(包括标签之
间)但不能轻易地共享给其他用户。
--服务器端数据库:
你想永久保存数据并且提供给多个用户的最好方法是数据库(MongoDB 是 Meteor 应用默认的方案)。
不在client/或server/文件夹中代码会在客户端和服务器端运行。所以Posts集合在客户端和服务器端都可
用。但是,在各自环境下所起的作用有很大不同。
在服务器,集合有一个任务就是和 Mongo 数据库联络,读取任何数据变化。 在这种情况下,它可以比对标准的数据库。
在客户端,集合是一个安全拷贝来自于实时一致的数据子集。客户端的集合总是(通常)透明地实时更新数据子集。
$ meteor shell 服务器端shell
$ meteor mongo 数据库控制台
如果你把应用部署到了*.meteor.com 上,你一样可以通过 meteor mongo myApp 的方式进入你应用的 Mongo Shell,而且还可以输入 meteor logs myApp 得到你应用的 log 日志
Meteor 的客户端 Mongo 的技术实现被成为 MiniMongo
在 Meteor 中,find() 返回值是一个游标。游标是一种从动数据源.如果你想输出内容,你可以对游标使用 来把游标转换成数组。Meteor 十分智能地在应用中保持游标状态而避免动不动就把游标变成数组。这就造成了你不会经常在 Meteor代码中看到 fetch() 被调用。
这里我们要提到一个包 autopublish, 我们一直依赖于 autopublish 来让我们的客户端可以镜像般地得到数据库中的所有帖子,也就是说,它简单的把整个Collection分享给所有连接的客户端。最终我们需要做的是仅仅把我们客户端需要看到的帖子传输过来。
首先删除掉 autopublish 包 : $ meteor remove autopublish
建立 server/publications.js 并定义publish() 函数 : Meteor.publish('posts', function(){ return Posts.find() });
在客户端订阅这个发布 $ vi main.js ---> Meteor.subscribe('posts');
安全检验(用户登录权限控制等)已经集成在 Meteor 的 Collection 中,只是在默认情况下它是关闭的。这样的设置可以使你在开始构建 App 的时候更加轻松。我们的 App 不再需要这些辅助了,果断扔掉吧!我们去删除insecure 包(恢复数据安全) $ meteor remove insecure.
audit-argument-checks 包用于增强安全性检验,对post参数做检验,还需要check包