如何在我的應用程序中附加並運行這個單獨的javascript?
你顯示的app.js代碼應該工作得很好。關鍵是,你必須讓你的RSSReader.js文件轉換成在出口它想成爲公衆的功能模塊:
所以,RSSReader.js裏面,你會是這樣的:
module.exports = {
someFunction: function() {
// code here
},
someOtherFunction: function() {
// code here
}
};
然後,在你的其他的文件,你可以加載模塊,並使用它就像你有:
var RSSReader = require('./public/javascripts/RSSReader.js');
RSSReader.someFunction();
RssReader.someOtherFunction();
node.js中的模塊文件是here。
此外,將我的app.js中聲明的變量可用於 RSSReader.js?
不,他們不會,除非您明確聲明app.js變量作爲global
對象的屬性。從app.js到另一個模塊共享的通常node.js約定是,您爲RSSReader.js模塊創建了一個初始化方法(您可以稱其爲init
),並將它傳遞給它需要的任何上下文(通常是一個具有某些屬性的對象在它上面)從app.js和RSSReader.js模塊可以存儲該上下文供其使用。
所以,如果你想從app.js到RSSReader.js分享一些變量,你可以通過.init()
方法類似這樣的分享:
RSSReader.js
var data;
module.exports = {
init: function(options) {
data = options;
},
someFunction: function() {
// code here can access the data variable
},
someOtherFunction: function() {
// code here can access the data variable
}
};
app.js
var RSSReader = require('./public/javascripts/RSSReader.js');
RSSReader.init({express: express, db: db});
RSSReader.someFunction();
RssReader.someOtherFunction();
非常好!謝謝你的幫助。我確實能夠通過導出將我的mongo數據庫作爲變量傳遞並加載到init中。非常好的主意,你搖滾。 – Dougyfresh