zoukankan      html  css  js  c++  java
  • meteor学习-- #一 安装meteor快速使用

    下载安装

    
    curl https://install.meteor.com/ | sh
    
    

    meteor会自动下载mongodb和其他需要依赖的库,不需要手动安装.

    如果是Windows 的用户,请使用 meteor 官方安装包,安装时,如果杀毒软件出现警告,请信任,防止出现无法使用meteor的情况,windows版本检查是否正确安装的方法是在命令提示行内,可以执行 meteor --version,出现您的meteor 版本号即可,这里不推荐使用Windows开发Meteor,因为无法正常打包出APP

    创建项目

    
    meteor create MyApp
    
    

    创建一个APP

    
    meteor create --list 
    
    

    可查看meteor自带的例子,如下:

     
    Paste_Image.png

    创建例子中的项目

    
    meteor create --example examplename
    
    

    即可,例如

    
    meteor ceate --example todos
    
    

    输出如下

    
    todos: created. 
    
    To run your new app:    cd todos    meteor
    
    

    运行 :

    
    cd todos
    
    meteor
    
    

    服务默认运行在 localhost:3000上,

    也可以直接使用命令 meteor run ios 让例子直接运行在模拟器上

     
    Paste_Image.png

    运行效果如下

     
    Paste_Image.png

    路径

    meteor前后端都是用js写的,所以有些文件是前后端公用的

    client 文件夹

    只有前端能用

    server 文件夹

    文件只有后端能访问

    其他

    其他文件夹下的文件前后端都可以访问到

    数据库访问

    在服务器端

    启动服务后 打开另一个窗口进入服务目录下

    运行

    
    meteor mongo
    
    

    即可打开mongodb数据监控

    mongodb会运行在服务端口+1的端口上, 例如 服务在3000端口上运行,则mongodb运行在3001端口

    在客户端

    首先要在js文件中定义好集合变量并且订阅好

    例如

    
    user = new Mnong,collection('user');
    
    

    然后打开网页控制台 运行

    
    user.find()
    
    

    即可访问数据.

    模板和路由

    meteor 用的是handlebars模板

    ** iron 有性能瓶颈 flow:router 更好用 **

    添加iron:router路由库,即可定义路由.

    例如

    
    Router.config(
    
        // 默认会渲染的模板
    
        layoutTemplate: 'appBody',
    
    
    
        // 指定模板找不到时渲染的模板
    
        notFoundTemplate: 'appNotFound',
    
    
    
        // 加载状态时的模板
    
        loadingTemplate: 'appLoading',
    
    
    
        // 等待时的操作
    
        waitOn: function(){
    
            return [Meteor.subscribe('publicLists'), Meteor.subscribe('privateLists')];
    
        }
    
    ).
    
    
    
    
    //route.js定义好路由:
    
    
    
    Router.route('detail',{path:'/u/:_id', name:'detail'});
    
    
    
    Router.route('detail');
    
    //如果不指定路径或者action,则默认找到如参数同名的模板,例如此路由会默认找到detail模板,如果不存在就会渲染在路由配置中指定的notfond页面.
    
    {{#each users}}
    
    
    
    //{{pathFor route='detail'}}
    
    
    
    //此时a标签会取name值为detail的路由,href就是/u/_id的形式,
    
    
    
    //路由path的parmes的key就是对象的同名key,对象不含有这个key的话,a标签就没有href属性
    
    
    
    //同理,{{name}}如果不指定的话也会取对象中的name属性,不存在的话则没有值
    
    {{name}}  {{/each}}
    
    

    发布和订阅:

    server.js中添加如下代码:

    
    //(meteor的所有变量都是全局的[代码块中的除外],所以不加var);
    
    u = new Mongo.Collection("posts");
    
    //发布somePub频道,当有人订阅时返回posts数据库的数据
    
    Meteor.publish('somePub', function() {
    
        return u.find()}
    
    });
    
    

    client.js中:

    
    //即可实现前后端数据相同,否则前端js文件拿不到后端的数据.
    
    Meteor.subscribe('somePub');
    
    
    
  • 相关阅读:
    (64)通信协议之一xml
    (63)通信协议之一json
    (61)C语言预处理命令详解
    (60) 结构体指针、结构体变量嵌套、结构体指针嵌套、函数指针、数组指针、指针数组、typedef 综合运用
    (59)Linux操作系统深入应用
    (58)PHP开发
    (57)Linux驱动开发之三Linux字符设备驱动
    (56)Linux驱动开发之二
    (55)Linux驱动开发之一驱动概述
    (54)LINUX应用编程和网络编程之九Linux网络通信实践
  • 原文地址:https://www.cnblogs.com/mafeng/p/8031846.html
Copyright © 2011-2022 走看看