Meteor: 如何复用node.js包或代码

Meteor基于Node.js,但是却有自己的包管理系统(atmosphere)以及代码加载机制,且meteor是非异步的,这些都意味着,node.js包(npm package)和代码通常不能直接用于meteor程序。

这里分享三种方法以在meteor中复用node.js包和代码。

meteorhacks:npm + meteorhacks:async

npm+async是复用npm包最便捷的方式。meteor程序添加npm包之后,便可以在packages.json中声明包依赖,在程序中通过Meteor.npmRequire来加载包。

值得一提的是,由于大部分npm包都是异步调用的,而meteor是同步运行的,所以需要某种方法将异步调用转为同步调用。async就是这样一个meteor包,添加之后,通过Async.runSync方法便可以同步地调用异步方法。

具体安装、使用方法以及更多介绍,请参考文档

适配node.js代码

如果需要复用的代码仅仅是个别文件、函数、片段等,可以手工修改代码以适配meteor程序。

需要注意到,node.js的每一个文件都是一个模块,通过module.exports和require进行组织,但是在meteor中,每一个文件都是会被自动加载的(具体顺序参考meteor文档),通过全局变量进行跨文件调用;meteor中不能直接加载npm包;meteor框架是同步运行的(非异步)。

综上,适配代码的工作包括:

  1. 使用meteorhacks:npm来加载npm包
  2. 修改跨文件调用方式,将原来的module.exports=xxx改为暴露全局变量,而调用方,将require(xxx)改为直接引用全局变量
  3. 直接被meteor框架调用的方法,使用meteorhacks:async包,将其从异步调用改为同步调用形式

创建meteor包

这种方法更复杂,但是也更进阶,不仅可以封装npm包,也能封装任意node.js代码(当然需要修改、适配),更能创建新的meteor包。

创建meteor包的具体方法不再赘述,参考如下:

学会创建meteor包之后,只需要按照上述方法适配代码,并封装成meteor包,便可以方便地使用和分享了。

参考项目

meteor-submail

该项目规模很小,便于分析。原始代码在submail-sdk文件夹中,其余代码为对原始代码的适配和封装。

时间: 2024-08-05 05:30:17

Meteor: 如何复用node.js包或代码的相关文章

关于《Node.js 包教不包会》中cookie 与 session的补充

刚开始学node,在看到Lesson 16: <cookie 与 session>中关于在 redis 中存储 session中,直接按照博主的代码是不能运行的,当时很苦恼,挺郁闷的,直接copy都运行不了.... 经过一顿搜索以后才知道,要安装redis! redis的安装可以参考:http://blog.fens.me/linux-redis-install/  中的 2.Redis在Linux Ubuntu中安装 (我是成功安装,并且运行) 还有关于redis的常用命令,可以看一下:ht

node.js教程基础:node.js包管理器

Node.js 包管理器 Node程序包管理器提供了两个主要功能: 1) 它提供了可在search.nodejs.org上搜索的node.js软件包/模块的在线存储库. 2) 它还提供了命令行实用程序,用于安装Node.js软件包,执行版本管理和Node.js软件包的依赖关系管理. 在v0.6.3之后的版本中,npm与Node.js可安装程序捆绑在一起. 您可以通过打开Node.js命令提示符并键入以下命令来检查版本: npm version 使用npm安装模块 以下是安装任何Node.js模块

用Sublime Text 3的HTML-CSS-JS Prettify(需安装node.js)插件格式化代码

用Sublime Text 3的HTML-CSS-JS Prettify(需安装node.js)插件格式化代码 用 Sublime Text 格式化代码(安装 HTML-CSS-JS Prettify 插件)时,格式化时却会提示(默认路径未找到Node.js) 下载安装到Node.js 官网下载 32位版本(据说win x64版有问题)安装. 确认Node.js安装路径鼠标右键HTML/CSS/JS Prettify > Set Plugin Options保证插件路径与Node.js安装路径一

Node.js包管理器Yarn的入门介绍与安装

FAST, RELIABLE, AND SECURE DEPENDENCY MANAGEMENT. 就在昨天, Facebook 发布了新的 node.js 包管理器 Yarn 用以替代 npm .咱虽然是个半桶水的咸鱼前端,不过也得跟上 Javascript 这股潮 (hong) 流 (huang) 的脚步,所以便有了下面这篇文章.大概的浅尝了一下这个自称是又快又可信赖又安全的包管理,所以写的内容不会很详细,更多的可能只是针对这个全新的包管理与 npm 的不同之处来对比.也可能有些地方写得不对

9.Node.js 包管理器npm

npm 是 Node.js  官方提供的包管理工具, 用于 Node.js包的发布.传播.依赖控制 安装 express ==> 流行的基于Node.js的Web开发框架,可以快速地搭建一个完整功能的网站. $ npm install express 包的发布 , 创建符合 npm  规范的 package.json  文件 $ npm init 输入命令后,会生成package.json文件 package name: (byvoidmodule) alan version: (1.0.0)

使用 async Node.js 简化Javascript代码

async Node.js async 是Javascript的扩展库.它可以简化Node.js异步操作的书写,使代码更容易被读懂,而不是面对多层的括号发疯. 我们可以使用Node.js的包管理器npm直接安装它,在shell中输入: 1 2 npm install async 或者 更改package.json: 1 2 3 4 5 6 7 8 9 10 11 12 13 { "name": "application-name", "version&qu

Node.js包的依赖及版本号(转)

原文:  http://www.cnphp6.com/archives/64130 Node.js最重要的一个文件就是package.json,其中的配置参数决定了功能.例如下面就是一个例子 { "name": "test", "version": "1.0.0", "description": "test", "main": "main.js",

Node.js热部署代码,实现修改代码后自动重启服务方便实时调试

写PHP等脚本语言的时候,已经习惯了修改完代码直接打开浏览器去查看最新的效果.而Node.js 只有在第一次引用时才会去解析脚本文件,以后都会直接访问内存,避免重复载入,这种设计虽然有利于提高性能,却不利于开发调试. 在没有使用第三方工具的情况下,通常修改js文件后需要手动CTRL+C终止程序,再重新启动node服务,这显然是一件很繁琐的事情. 于是就出现了很多第三方的管理工具(例如:supervisor.hotnode.forever.pm2等),当文件修改保存后,它能自动重启node服务,帮

Node.js调用C#代码

在Node.js的项目中假如我们想去调用已经用C#写的dll库该怎么办呢?在这种情况下Edge.js是一个不错的选择,Edge.js是一款在GitHub上开源的技术,它允许Node.js和.NET core在同一个进程内相互调用,并且支持Windows,MacOS和Linux.本地可以通过npm直接安装Edge.js,地址:https://www.npmjs.com/package/edge#windows,上面有关于它的详细介绍,里面有好多的使用情况,下文主要简单介绍其中的一种使用方法来让No