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

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

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

meteorhacks:npm + meteorhacks:async

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

值得一提的是,因为大部分npm包都是异步调用的,而meteor是同步运行的,因此须要某种方法将异步调用转为同步调用。async就是这样一个meteor包,添加以后,经过Async.runSync方法即可以同步地调用异步方法。web

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

适配node.js代码

若是须要复用的代码仅仅是个别文件、函数、片断等,能够手工修改代码以适配meteor程序。json

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

综上,适配代码的工做包括:框架

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

建立meteor包

这种方法更复杂,可是也更进阶,不只能够封装npm包,也能封装任意node.js代码(固然须要修改、适配),更能建立新的meteor包。异步

建立meteor包的具体方法再也不赘述,参考以下:async

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

参考项目

meteor-submail

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

相关文章
相关标签/搜索