Meteor基於Node.js,可是卻有本身的包管理系統(atmosphere)以及代碼加載機制,且meteor是非異步的,這些都意味着,node.js包(npm package)和代碼一般不能直接用於meteor程序。node
這裏分享三種方法以在meteor中複用node.js包和代碼。git
npm+async是複用npm包最便捷的方式。meteor程序添加npm包以後,即可以在packages.json中聲明包依賴,在程序中經過Meteor.npmRequire來加載包。github
值得一提的是,因爲大部分npm包都是異步調用的,而meteor是同步運行的,因此須要某種方法將異步調用轉爲同步調用。async就是這樣一個meteor包,添加以後,經過Async.runSync方法即可以同步地調用異步方法。web
具體安裝、使用方法以及更多介紹,請參考文檔。npm
若是須要複用的代碼僅僅是個別文件、函數、片斷等,能夠手工修改代碼以適配meteor程序。json
須要注意到,node.js的每個文件都是一個模塊,經過module.exports和require進行組織,可是在meteor中,每個文件都是會被自動加載的(具體順序參考meteor文檔),經過全局變量進行跨文件調用;meteor中不能直接加載npm包;meteor框架是同步運行的(非異步)。app
綜上,適配代碼的工做包括:框架
這種方法更復雜,可是也更進階,不只能夠封裝npm包,也能封裝任意node.js代碼(固然須要修改、適配),更能建立新的meteor包。異步
建立meteor包的具體方法再也不贅述,參考以下:async
學會建立meteor包以後,只須要按照上述方法適配代碼,並封裝成meteor包,即可以方便地使用和分享了。
該項目規模很小,便於分析。原始代碼在submail-sdk文件夾中,其他代碼爲對原始代碼的適配和封裝。