我是NodeJS和Express框架的新手。
使用Express的原因是它是最好的NodeJS Web框架之一。
这是我的问题:
我有一个bitcoinTest.js,它在屏幕上打印一些结果。想要在网页上显示它。
的 bitcoinTest.js
var bitcoin = require('bitcoin');
var client = new bitcoin.Client({
host: 'localhost',
port: 8332,
user: 'himanshuy',
pass: 'xxxx'
});
client.getDifficulty(function(err, difficulty) {
if(err) {
return console.error(err);
}
console.log('Difficuly: ' + difficulty);
});
client.getInfo(function(err, info) {
if(err) return console.log(err);
console.log('Info: ', info);
});
server.js
var express = require('express');
var app = express();
app.listen(3000);
app.get('/', function(req, res){
res.send('Hello World');
});
app.get('/getDifficulty', function(req, res){
res.send('Get detail from BitcoinTest file');
});
app.get('/getInfo', function(req, res){
res.send('Get detail from BitcoinTest file');
});
我如何实现最后两条路线并从bitcoinTest.js获取详细信息?
答案 0 :(得分:3)
看起来你的问题不是Express,而是缺乏对Node的理解。首先,我将阅读有关Node模块的信息:
http://nodejs.org/api/modules.html
您可以使用自己编写的内容,只需导出bitcoin.Client
对象并在应用文件中使用它,但除了使用之外,您实际上并没有做任何事情bitcoin.Client
方法,为什么不把它全部放在你的app文件中?所以你的app文件会变成这样:
var http = require('http'),
express = require('express'),
bitcoin = require('bitcoin');
var app = express();
var client = new bitcoin.Client({
host: 'localhost',
port: 8332,
user: 'himanshuy',
pass: 'xxxx'
});
app.get('/', function(req, res){
res.send('Hello World');
});
app.get('/getDifficulty', function(req, res){
client.getDifficulty(function(err, difficulty) {
if(err) {
res.send('Bitcoin error: ' + err);
} else {
res.send('Difficulty: ' + difficulty);
}
});
}
app.get('/getInfo', function(req, res){
client.getInfo(function(err, info) {
if(err) {
res.send('Bitcoin error: ' + err);
} else {
res.send('Info: ' + info);
});
});
http.createServer(app).listen(3000, function(){
console.log('Server started on port 3000');
});
如果您开始添加更多比特币功能(不仅仅是调用bitcoin.Client
)方法,那么创建模块是有意义的。你可以这样:
<强> LIB / bitcoin.js 强>
var bitcoin = require('bitcoin');
module.exports = function(options){
var client = new bitcoin.Client({
host: options.host,
port: options.port,
user: options.user,
pass: options.pass,
});
return {
myMethod1: function(){
// uses client and returns something useful
},
myMethod2: function(){
// uses client and returns something useful
}
}
然后你可以像这样使用它:
var myBitcoin = require('./lib/bitcoin.js')({
host: 'localhost',
port: 8332,
user: 'himanshuy',
pass: 'xxxx'
});
// now you can use your custom methods
myBitcoin.myMethod1(/*whatever*/);
答案 1 :(得分:1)
目前我认为 bitcoinTest 作为一个单独的模块没有多大好处。 如果你想这样做,你必须为比特币程序做另外的包装,然后通过module.exports设置端点。
所以我的建议是单个 server.js
var bitcoin = require('bitcoin');
var client = new bitcoin.Client({ // use nconf to set parameters
host: 'localhost',
port: 8332,
user: 'himanshuy',
pass: 'xxxx'
});
app.get('/', function(req, res){
res.send('Hello World');
});
app.get('/getDifficulty', function(req, res){
client.getDifficulty(function(err, difficulty) {
if(err) {
res.send("ERROR");//log error
} else {
res.send(difficulty);
}
});
});
app.get('/getInfo', function(req, res){
client.getInfo(function(err, info) {
if(err) {
res.send("ERROR"); //log error
} else {
res.send(info);
}
});
};
2注:
希望你觉得它很有用
答案 2 :(得分:0)
var express = require('express');
var bitcoin = require('bitcoin');
var client = new bitcoin.Client({
host: 'localhost',
port: 8332,
user: 'himanshuy',
pass: 'xxxx'
});
var app = express();
app.listen(3000);
app.get('/', function(req, res){
res.send('Hello World');
});
app.get('/getDifficulty', function(req, res){
client.getDifficulty(function(err, difficulty) {
if(err) {
return console.error(err);
}
console.log('Difficuly: ' + difficulty);
res.send(200 {'Difficuly: ' + difficulty});
}
});
app.get('/getInfo', function(req, res){
client.getInfo(function(err, info) {
if(err) return console.log(err);
console.log('Info: ', info);
res.send(200, {'Info: ', info});
}
});
另一位用户打败了我的答案,但他遗漏了明确的需求陈述,我的回答略有不同,所以...... 就像他说的那样,不需要有两个单独的文件。