我已经在模块化我的代码上做了一些阅读,并决定将一些函数导出到一个单独的文件中,并在调用后将它们包含在我的主函数中。
所以我有两个文件,body {
background-color: white;
}
.container{
width: 1200px;
height: 800px;
backround-color: #FAEBD7;
}
#header{
height: 50px;
background-color: darkblue;
}
#title{
text-align: center;
color: white;
font-size: 30px;
padding-top: 5px;
}
#leftside{
width: 300px;
float: left;
height: 550px;
border: 1px solid darkblue;
padding-top: 20px;
padding-left: 5px;
padding-right: 5px;
margin-top: 50px;
}
#info{
color: darkred;
}
#info2{
color: darkred;
}
#showTable {
width: 500px;
float: left;
margin-top: 50px;
margin-left: 100px;
}
和index.js
。
在我的weather.js
文件中,我有:
"使用严格&#34 ;;
weather.js
然后在我的exports.sometest = sometest;
function sometest() {
request('http://api.openweathermap.org/data/2.5/weather?&appid=' + process.env.weather_api_key + '', (error, response, body) => {
return body;
});
}
文件中,我将其index.js
包括在内。
那么如何在我创建的函数中使用我返回的数据呢?并且有人可以向我解释它是如何工作的,我在范围和语法等方面有点困惑
谢谢。
答案 0 :(得分:0)
我认为您没有正确导出模块,并在那里添加了一些额外的问题。
您在weather.js
中导出模块的方式是:
module.exports = function sometest() {
request('http://api.openweathermap.org/data/2.5/weather?&appid=' + process.env.weather_api_key + '', (error, response, body) => {
return body;
});
}
你在index.js中包含它的方式还可以。
你必须记住天气正在返回一个函数,所以你需要执行它。但除此之外,您正在执行异步操作,并且在那里您提供了一个回调,以便在响应可用时调用。 所以,我会这样做: index.js
const testing = require("../../../lib/weather")(callback) // callback is a function that will be executed when request in weather is done;
weather.js
module.exports = function(callback) {
request('http://api.openweathermap.org/data/2.5/weather?&appid=' + process.env.weather_api_key + '', (error, response, body) => {
callback(body);
});
}
那么,这里发生了什么。在weather.js中,您将返回一个函数。该函数执行异步请求,并在请求完成时执行index.js提供的回调 在index.js中,您需要该文件,并添加额外的括号来执行weather返回的函数,除了执行异步请求响应时提供的回调。
答案 1 :(得分:0)
我将首先详细介绍,然后我们将努力回答您的问题。 它完全与CommonJS标准有关。使用模块时,CommonJS标准指定以下三个组件:
到目前为止,您应该已经收集到我们总是需要该模块,如果我们使用方法2(暴露某些功能),这就是它的样子:
//weather.js is the name of the file
exports.sometest = function() {
request('http://api.openweathermap.org/data/2.5/weather?&appid=' + process.env.weather_api_key + '', (error, response, body) => {
return body;
};
然后在你的索引文件中我们将像这样访问这个函数:
const testing = require('../../../lib/weather.js');
// access the method from the 'testing' object
testing.sometest;
如果要公开完整模块:
// weather.js
module.exports = function sometest() {
request('http://api.openweathermap.org/data/2.5/weather?&appid=' + process.env.weather_api_key + '', (error, response, body) => {
return body;
});
};
在index.js中,它看起来像这样:
const testing = require("../../../lib/weather");
weatherTest = testing();
希望这有帮助。