您的位置:首页 > 其它

meteor学习-- #二 安装meteor与快速使用

2015-12-22 15:55 232 查看
下载安装

创建项目
创建一个APP

路径
client 文件夹

server 文件夹

其他

数据库访问
在服务器端

在客户端

模板和路由

发布和订阅

下载安装

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自带的例子,如下:



创建例子中的项目

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 让例子直接运行在模拟器上



运行效果如下



路径

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');
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: