完整的 Meteor NPM 集成

2023-12-24 06:15
文章标签 npm 集成 完整 meteor

本文主要是介绍完整的 Meteor NPM 集成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Meteor中,你只能使用包内的模块。你不能直接将模块与流星应用一起使用。此软件包解决了该问题

文章目录

  • 源码下载地址
  • 安装
  • 定义软件包
  • 使用软件包
  • 在 Meteor 方法中使用 npm 模块的示例
  • 应用程序接口
  • 异步实用程序
  • Async.runSync(函数)
  • Meteor.sync(函数)
  • Async.wrap(函数)
  • Async.wrap(对象,函数名称)
  • Async.wrap(对象,函数名称列表)

源码下载地址

点击这里下载源码

安装

meteor add meteorhacks:npm

然后启动您的应用并按照说明进行操作。

定义软件包

初始化 npm 支持后,你的应用内将有一个称为文件名的文件名。在该文件中定义包,如下所示。

{"redis": "0.8.2","github": "0.1.8"
}

您必须为 npm 模块定义一个绝对版本号

如果需要从特定提交安装 npm 模块,请使用以下语法:

{"googleapis": "https://github.com/bradvogel/google-api-nodejs-client/archive/d945dabf416d58177b0c14da64e0d6038f0cc47b.tar.gz"
}

以上内容可以使用 github 版本生成。你要用的是版本,而不是.<commit hash>.tar.gzarchive/<version number>.tar.gz

使用软件包

你可以使用 method 访问服务器端的 npm 模块,并随心所欲地使用它。 大多数 npm 模块都提供带有回调或承诺的异步 API。所以,你不能直接在Meteor上使用它们。正因为如此,这个软件包附带了一组方便的异步实用程序,让你的生活更轻松。

在 Meteor 方法中使用 npm 模块的示例

if (Meteor.isClient) {getGists = function getGists(user, callback) {Meteor.call('getGists', user, callback);}
}if (Meteor.isServer) {Meteor.methods({'getGists': function getGists(user) {var GithubApi = Meteor.npmRequire('github');var github = new GithubApi({version: "3.0.0"});var gists = Async.runSync(function(done) {github.gists.getFromUser({user: 'arunoda'}, function(err, data) {done(null, data);});});return gists.result;}});
}

应用程序接口

仅在服务器端可用

Meteor.npmRequire(npmModule名称)
此方法加载您在文件中指定的 NPM 模块。

var Github = Meteor.npmRequire('github');

Meteor.require(npmModule名称)
同上。但已弃用。

异步实用程序

仅在服务器端可用 Async Utitlies 可以通过
meteorhacks:async 作为单独的软件包提供

Meteor API 是同步执行的。大多数 NodeJS 模块都是异步工作的。 因此,我们需要一种方法来弥补差距。Async Utilities 来拯救你。

Async.runSync(函数)

Async.runSync()暂停执行,直到调用 callback,如下所示。done()

var response = Async.runSync(function(done) {setTimeout(function() { done(null, 1001);}, 100);
});console.log(response.result); // 1001

done()callback 需要 2 个参数。 和对象。您可以将它们作为 的返回值获取,如上例中的响应所示。errorresultAsync.runSync()
返回值是一个对象,它有 2 个字段。 和。error result

Meteor.sync(函数)

相同,但已弃用。Async.runSync

Async.wrap(函数)

包装一个异步函数,并允许它在 Meteor 中运行,没有回调。


//declare a simple async function
function delayedMessage(delay, message, callback) {setTimeout(function() {callback(null, message);}, delay);
}//wrapping
var wrappedDelayedMessage = Async.wrap(delayedMessge);//usage
Meteor.methods({'delayedEcho': function(message) {var response = wrappedDelayedMessage(500, message);return response;}
});

如果回调有结果,它将从包装的函数返回。如果出现错误,则会抛出。

Async.wrap(function)与 非常相似。
Meteor._wrapAsync

Async.wrap(对象,函数名称)

与 非常相似,, 但此 API 可用于包装对象的实例方法。Async.wrap(function)

var github = new GithubApi({version: "3.0.0"
});//wrapping github.user.getFrom
var wrappedGetFrom = Async.wrap(github.user, 'getFrom');

Async.wrap(对象,函数名称列表)

与 非常相似,, 但此 API 可用于包装对象的多个实例方法。Async.wrap(object, functionName)

var github = new GithubApi({version: "3.0.0"
});//wrapping github.user.getFrom and github.user.getEmails
var wrappedGithubUser = Async.wrap(github.user, ['getFrom', 'getEmails']);//usage
var profile = wrappedGithubUser.getFrom('arunoda');
var emails = wrappedGithubUser.getEmails();

这篇关于完整的 Meteor NPM 集成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/530804

相关文章

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

springboot2.1.3 hystrix集成及hystrix-dashboard监控详解

《springboot2.1.3hystrix集成及hystrix-dashboard监控详解》Hystrix是Netflix开源的微服务容错工具,通过线程池隔离和熔断机制防止服务崩溃,支持降级、监... 目录Hystrix是Netflix开源技术www.chinasem.cn栈中的又一员猛将Hystrix熔

C++ vector越界问题的完整解决方案

《C++vector越界问题的完整解决方案》在C++开发中,std::vector作为最常用的动态数组容器,其便捷性与性能优势使其成为处理可变长度数据的首选,然而,数组越界访问始终是威胁程序稳定性的... 目录引言一、vector越界的底层原理与危害1.1 越界访问的本质原因1.2 越界访问的实际危害二、基

MyBatis-Plus 与 Spring Boot 集成原理实战示例

《MyBatis-Plus与SpringBoot集成原理实战示例》MyBatis-Plus通过自动配置与核心组件集成SpringBoot实现零配置,提供分页、逻辑删除等插件化功能,增强MyBa... 目录 一、MyBATis-Plus 简介 二、集成方式(Spring Boot)1. 引入依赖 三、核心机制

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

Java高效实现Word转PDF的完整指南

《Java高效实现Word转PDF的完整指南》这篇文章主要为大家详细介绍了如何用Spire.DocforJava库实现Word到PDF文档的快速转换,并解析其转换选项的灵活配置技巧,希望对大家有所帮助... 目录方法一:三步实现核心功能方法二:高级选项配置性能优化建议方法补充ASPose 实现方案Libre

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除

SpringBoot集成P6Spy的实现示例

《SpringBoot集成P6Spy的实现示例》本文主要介绍了SpringBoot集成P6Spy的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录本节目标P6Spy简介抛出问题集成P6Spy1. SpringBoot三板斧之加入依赖2. 修改

使用Python提取PDF大纲(书签)的完整指南

《使用Python提取PDF大纲(书签)的完整指南》PDF大纲(Outline)​​是PDF文档中的导航结构,通常显示在阅读器的侧边栏中,方便用户快速跳转到文档的不同部分,大纲通常以层级结构组织,包含... 目录一、PDF大纲简介二、准备工作所需工具常见安装问题三、代码实现完整代码核心功能解析四、使用效果控

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.