/ meteor

meteor

如果没有接触过 meteor,建议不要碰它。

如果没有接触过 meteor,建议不要碰它。

如果没有接触过 meteor,建议不要碰它。

meteor 官方下载脚本没有考虑到国内的网络情况。脚本的默认行为是当 curl 下载失败后,再次运行脚本之前,删除之前下载的临时文件。meteor-install

为了避免每次下载失败循环,将删除临时文件的命令注释掉。

THE FASTEST WAY TO BUILD JAVASCRIPT APPS

Meteor is an open source platform for web, mobile, and desktop.

npm install -g node-gyp node-pre-gyp
cd meteor/path
npm install

详情

  • Meteor 1.4 -> Node 4.4.7+

meteor 下载问题

问题:下载失败
原因:脚本中添加了下载失败后重试的次数限制,并且删除了下载中断的临时文件

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

修改下载脚本

cleanUp() {
  # rm -rf "$TARBALL_FILE"
  rm -rf "$INSTALL_TMPDIR"
}

关于 cdn 域名:

TARBALL_URL 的值 meteorinstall-4168.kxcdn.com

  • meteorinstall-4168.kxcdn.com 速度还可以,就是不稳定,能连接上时,下载速度倒是不错,就是大多数时候无法连接。
  • d3sqy0vbqsdhku.cloudfront.net 速度也不怎么一样
  • 测网速
chmod +x meteor.install.sh
./meteor.install.sh

在安装过程如果断了再次执行

./meteor.install.sh

下载安装完成后,手动删除临时文件

rm ~/.meteor-tarball-tmp

Build apps for any device

Use the same code whether you’re developing for web, iOS, Android, or desktop. Hot push new features without app store approval or forcing users to download a new native app.

Data over the wire

Meteor send data over the wire, rather than HTML

意味着,你的初次请求会下载所有的HTML、CSS、JavaScript、图片。

创建应用

meteor create app
meteor create app --release 1.2.1

meteor npm vs npm

meteor npm 使用的是 meteor 自行下载的 npm。如果你的电脑上之前没有安装过 node 那以后就用这个。

npm 则是全局安装的 npm,以后就可以用 npm 直接操作包。

没有 Ajax 只有 发布/订阅

Meteor 内部数据流是通过发布和订阅实现的,不是传统的 ajax。

  • Server Publish
  • Client Subscribe

当然和第三方应用交流数据时,还是要使用 ajax。

Use PostCSS with Meteor

详情

问题是,Meteor 下如何对 React Inline Styles 应用 PostCSS plugins ?

Collection

Publications that read from collection and the Methods that write to collection.

Publications 向客户端发送数据。
Methods 增删改。

imports/api/tasks.js

import { Mongo } from 'meteor/mongo';
export const Tasks = new Mongo.Collection('tasks');
  • Tasks.insert({ text, createAt: new Date})
  • Tasks.remove(this.props.task._id)
  • Tasks.update(this.props.task._id,{ $set: { checked: !this.props.task.checked }})
  • Tasks.find({}, { sort: { createdAt: -1 } }).fetch()

由于数据只能通过发布/订阅获取,订阅获取的数据是批量的,不能精确获取数据,获取精确数据需要对
已订阅的数据进行过滤

filteredTasks = this.props.tasks.filter(task => !task.checked);

meteor 默认安装的包 insecure 允许客户端直接修改数据库中的数据。当我们在项目中创建了一个叫做
Messages 的 monogo collection,因为 insecure 包的存在,我们可以在客户端直接调用
Messages.insert() 接口直接出入数据到数据库。所以在发布项目之前需要移除 insecure 包。

移除 insecure 包后,所有客户端的修改都会被拒绝。

清空 collection 使用

meteor monogo
db.messages.remove({})

其他命令

show collections
db.messages.find()

升级

升级 Meteor

meteor update

升级 Meteor 附属的包

meteor update tmeasday:check-npm-versions

Methods

Exception while simulating the effect of invoking 'username.test'

文件写在 import 目录下,client 和 server 都要引入,client 侧是 simulat

常用软件包

meteor add accounts-password
meteor add alanning:roles
meteor add nimble:restivus
meteor add simple:rest

less

meteor add less

创建 .less 文件,然后在 client/main.less 中导入。例如:

// Components
@import "{}/imports/ui/components/Nav.less";