Meteor

作者: happywind | 来源:发表于2016-03-17 15:19 被阅读322次

    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包

    相关文章

      网友评论

          本文标题:Meteor

          本文链接:https://www.haomeiwen.com/subject/yfoqlttx.html