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文件夾中,其他代碼爲對原始代碼的適配和封裝。

相關文章
相關標籤/搜索