本期推荐的Meteor 是一个用于开发现代 Web 和移动应用程序的全栈 JavaScript 平台
Meteor 是一个用于开发现代 Web 和移动应用程序的全栈 JavaScript 平台。Meteor 包括一组用于构建连接客户端反应式应用程序的关键技术、一个构建工具以及一组来自 Node.js 和一般 JavaScript 社区的精选包。
Meteor特性
- Meteor 允许您在所有环境中使用一种语言JavaScript 进行开发:应用程序服务器、Web 浏览器和移动设备。
- Meteor 使用网络上的数据,这意味着服务器发送数据,而不是 HTML,然后客户端呈现它。
- Meteor拥抱生态系统,以谨慎和深思熟虑的方式为您带来极其活跃的 JavaScript 社区中最好的部分。
- Meteor 提供全栈响应性,让您的 UI 以最少的开发工作无缝反映世界的真实状态。
安装
先决条件和有用信息
- 如果您使用的是 Mac M1(Arm64 版本),则需要安装 Rosetta 2,因为 Meteor 使用它来运行 MongoDB。在此处查看如何安装
- Meteor 适用于 Node.js 版本 >= 10 和 <= 14,对于 Windows,您需要安装 Node.js 才能运行 npm 安装程序(提示:您可以使用nvm来管理节点版本)。
- Meteor 支持 Windows 7/Windows Server 2008 R2 及更高版本。
- 禁用防病毒软件(Windows Defender 等)将提高性能。
- 为了兼容性,Linux 二进制文件是用 CentOS 6.4 i386/amd64 构建的。
- iOS 开发需要最新的 Xcode。
从您的终端运行以下命令之一安装最新的官方 Meteor 版本。
对于 Linux 和 OS X:
curl https://install.meteor.com/ | sh
对于 Windows(需要 Node.js):
npm install -g meteor
故障排除
如果您的用户没有安装全局二进制文件的权限,而您需要使用 sudo,则需要在上述命令后附加–unsafe-perm :
sudo npm install -g meteor --unsafe-perm
我们强烈反对使用具有 root 权限的 Node.js 或 Meteor。如果您知道自己在做什么,请仅使用 sudo 运行上述命令。
路径管理
默认情况下,Meteor 安装程序将其安装路径(默认情况下,~/.meteor/)添加到您的 PATH 中,方法是根据需要更新您的.bashrc、.bash_profile或.zshrc。要禁用此行为,请运行以下命令安装 Meteor:
npm install -g meteor --ignore-meteor-setup-exec-path
(或通过设置环境变量
npm_config_ignore_meteor_setup_exec_path=true)
Apple M1 上的旧版本
对于 Apple M1 计算机,如果您需要运行旧版本的 Meteor(2.5.1 之前),您可以附加 Rosetta 前缀如下:
arch -x86_64 npm install -g meteor
或在 Applications 文件夹中选择 Terminal,按 CMD(⌘)+I 并选中“Open using Rosetta”选项。
在 Docker 中运行 Meteor
您还可以使用 Docker 容器在 CI 甚至本地开发工具链中运行 Meteor。
我们确实提供了基于 meteor/meteor-base ubuntu 的 Docker 映像,它与 Node.JS 和 Meteor 预先捆绑在一起,并以本地用户(而不是 root)身份运行。
卸载流星
如果您使用 npm 安装 Meteor,则可以通过运行以下命令将其删除: meteor-installer uninstall
如果您使用 curl 安装 Meteor,则可以通过运行以下命令将其删除: rm -rf ~/.meteor sudo rm /usr/local/bin/meteor
Meteor 的基于密码的帐户 API 的文档。
该accounts-password软件包包含一个完整的基于密码的身份验证系统。除了基本的基于用户名和密码的登录过程外,它还支持基于电子邮件的登录,包括地址验证和密码恢复电子邮件。
Meteor 服务器使用 bcrypt算法存储密码。如果服务器的数据库遭到破坏,这有助于防止令人尴尬的密码泄露。
要为您的应用程序添加密码支持,请在终端中运行以下命令:
meteor add accounts-password
在客户端,此函数在成功完成后以新创建的用户身份登录。在服务器上,它返回新创建的用户 ID。
在客户端上,您必须传递password至少一个username或email- 足够的信息,以便用户稍后能够再次登录。如果现有用户的用户名或电子邮件仅大小写不同,createUser则会失败。回调error.reason将是’Username already exists.’或’Email already exists.’在后一种情况下,用户可以登录或重置他们的密码。
在服务器上,您不需要指定password,但用户在获得密码之前将无法登录(例如,使用 设置Accounts.setPassword)。要在服务器上创建一个没有密码的帐户并仍然让用户选择自己的密码,请createUser使用email选项调用,然后调用
Accounts.sendEnrollmentEmail. 这将向用户发送一封电子邮件,其中包含设置初始密码的链接。
HTTP
HTTP在客户端和服务器上提供 HTTP 请求 API。要使用这些功能,请通过在终端中运行将 HTTP 包添加到您的项目中:
meteor add http
在服务器上,此函数可以同步或异步运行。如果省略回调,它将同步运行,并在请求成功完成后返回结果。如果请求不成功,则会引发错误。这在从 Meteor 方法中进行服务器到服务器的 HTTP API 调用时很有用,因为该方法可以根据同步 HTTP 调用的结果成功或失败。在这种情况下,请考虑使用 this.unblock()允许同一连接上的其他方法同时运行。
在客户端,此函数必须通过传递回调来异步使用。请注意,某些浏览器OPTIONS在发送您的请求之前首先发送请求(以 确定 CORS 标头)。
支持 HTTP 和 HTTPS 协议。参数必须是一个绝对 URL,包括服务器上的url协议和主机名,但可以相对于客户端上的当前主机。该query选项替换 的查询字符串url。在 URL 中指定的参数params 将附加到任何查询字符串。例如,使用urlof’/path?query’和 paramsof { foo: ‘bar’ },最终 URL 将是’/path?query&foo=bar’。
Meteor.methods({
checkTwitter(userId) {
check(userId, String);
this.unblock();
try {
const result = HTTP.call('GET', 'http://api.twitter.com/xyz', {
params: { user: userId }
});
return true;
} catch (e) {
// Got a network error, timeout, or HTTP error in the 400 or 500 range.
return false;
}
}
});
异步 HTTP 调用示例:
HTTP.call('POST', 'http://api.twitter.com/xyz', {
data: { some: 'json', stuff: 1 }
}, (error, result) => {
if (!error) {
Session.set('twizzled', true);
}
});
日志记录
该logging软件包为您提供了一种标准化的方式来记录和在控制台中显示来自应用程序的各种消息。额外的好处是,它会向您显示触发日志的位置以及其他数据,这在调试期间有助于快速定位消息的来源。
从安装包开始:
meteor add logging
然后,您可以在代码中的任何位置导入该实用程序,如下所示:
import { Log } from 'meteor/logging'
然后,您可以通过以下方式之一调用日志记录函数:
Log('starting up') // or Log.info('starting up')
Log.error('error message')
Log.warn('warning')
Log.debug('this will show only in development')
除了传入字符串之外,您还可以传入对象。这几乎没有例外和相关的特殊功能。首先在对象的根目录中不允许使用以下键:
'time', 'timeInexact', 'level', 'file', 'line', 'program', 'originApp', 'satellite', 'stderr'
另一方面,还有message和app,它们也是保留的,但它们会以更突出的方式显示:
Log.info({message: 'warning', app: 'DESKTOP', error: { property1: 'foo', property2: 'bar', property3: { foo: 'bar' }} })
将变成:
E20200519-17:57:41.655(9) [DESKTOP] (main.js:36) warning {"error":{"property1":"foo","property2":"bar","property3":{"foo":"bar"}}}
每个日志的显示是彩色编码的。信息是blue,警告是magenta,调试是green,错误是red。
—END—
开源协议:MIT License