nodejs第一天学习
一、nodejs简介
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。
二、node下载
mac电脑就下载pkg,windows下载exe比较容易安装。
测试下是否安装成功。方法:在终端下输入node -v,出现版本提示就是完成了NodeJS的安装。
三、npm下载
由于新版的NodeJS已经集成了npm,所以之前npm也一并安装好了。同样可以使用cmd命令行输入"npm -v"来测试是否成功安装。出现版本提示便OK了。
四、创建一个工程
在电脑任意位置,如桌面、文档等,创建一个文件夹,用来存放nodejs工程。
我选择在文档目录建了一个文件夹叫boxfish_script。
1、在终端中,进入这个文件夹内。
2、npm init(可以不断的回车,其实就是填一些作者啊,描述啊之类的东西)
3、npm install request —save
![Resize icon][1]
[1]:http://7ximqh.com1.z0.glb.clouddn.com/EB2BB25C-C3A9-459B-BB03-86BE26F7267F.png
![Resize icon][2]
[2]:http://7ximqh.com1.z0.glb.clouddn.com/77088BE2-6865-48FB-96EB-2247D690048B.png
![Resize icon][3]
[3]:http://7ximqh.com1.z0.glb.clouddn.com/01C41567-AADF-431C-AFCA-D2467200AED6.png
配置完毕,可以写nodejs代码了!
在文件夹的根目录,也就是我创建的boxfish_script的根目录创建一个js文件。比如叫stu_script.js。
由于mac电脑没能右键,新建一个文件,可以在终端用touch命令创建一个js文件。如果用windows的小伙伴就直接右键创建好了~
![Resize icon][4]
[4]:http://7ximqh.com1.z0.glb.clouddn.com/7EF8FBB9-C72D-48FE-82E3-29238BCCC508.png
运行命令,回车后,看到根目录下出现stu_script.js文件啦。
编辑这个文件,可以用各种各样的文本编辑器,如atom、sublime……等等。这些文本编辑器编辑好内容后需要在终端运行: node stu_script.js查看运行结果。
据说有个软件叫做webstrom,可以直接在软件内RUN!
https://www.jetbrains.com/webstorm/
先说代码吧。把下面的代码粘贴到stu_script.js中,点击保存或快捷键command+s。
var request = require('request');
pay_config_url =
'http://101.201.237.252:8098/payment/gateway/getPaymentConfig.do?version=1.0.0&source=20';
getPayConfigFun();
// 获取支付配置情况
function getPayConfigFun() {
request(pay_config_url, function(error, response, body) {
if (!error && response.statusCode == 200) {
var body = JSON.parse(body);
if (body.returnCode == 200) {
var str = JSON.stringify(body.data);
console.log('返回支付配置的数组为:' + '\n' + str + '\n');
} else {
console.log('返回支付配置异常1' + '\n' + pay_config_url + '\n' + body.returnCode +
'\n');
}
} else {
console.log('返回支付配置异常2' + '\n' + pay_config_url + '\n' + JSON.stringify(
body) +
'\n');
}
})
}
在终端里运行:node stu_script.js
![Resize icon][5]
[5]:http://7ximqh.com1.z0.glb.clouddn.com/B38143A0-E4AB-4176-AA62-B96EE7BFDAA5.png
可以看到返回的内容了!
![Resize icon][6]
[6]:http://7ximqh.com1.z0.glb.clouddn.com/BBA6D5B8-5745-4DEB-8C7D-0AA6531F977B.png
进阶。目的:当返回支付配置成功后,返回给调用处结果。即回调。
var request = require('request');
pay_config_url =
'http://101.201.237.252:8098/payment/gateway/getPaymentConfig.do?version=1.0.0&source=20';
getPayConfigFun(function(data) {
if (data == 1) {
console.log('返回支付配置的数组写入成功' + '\n');
}
});
// 获取支付配置情况
function getPayConfigFun(callback) {
request(pay_config_url, function(error, response, body) {
if (!error && response.statusCode == 200) {
var body = JSON.parse(body);
if (body.returnCode == 200) {
var str = JSON.stringify(body.data);
console.log('返回支付配置的数组为:' + '\n' + str + '\n');
if (callback) {
callback(1);
}
} else {
console.log('返回支付配置异常1' + '\n' + pay_config_url + '\n' + body.returnCode +
'\n');
}
} else {
console.log('返回支付配置异常2' + '\n' + pay_config_url + '\n' + JSON.stringify(
body) +
'\n');
}
})
}
在终端里运行:node stu_script.js。查看终端打印出来的信息。
进阶。想把返回值不论成功或失败都输出到文件中。
var request = require('request');
pay_config_url =
'http://101.201.237.252:8098/payment/gateway/getPaymentConfig.do?version=1.0.0&source=20';
getPayConfigFun(function(data) {
if (data == 1) {
console.log('返回支付配置的数组写入成功' + '\n');
}
});
// 获取支付配置情况
function getPayConfigFun(callback) {
request(pay_config_url, function(error, response, body) {
if (!error && response.statusCode == 200) {
var body = JSON.parse(body);
if (body.returnCode == 200) {
var str = JSON.stringify(body.data);
console.log('返回支付配置的数组为:' + '\n' + str + '\n');
writeToFile('返回支付配置的数组为:' + '\n' + str + '\n');
if (callback) {
callback(1);
}
} else {
console.log('返回支付配置异常1' + '\n' + pay_config_url + '\n' + body.returnCode +
'\n');
writeToFile('返回支付配置异常1' + '\n' + pay_config_url + '\n' + body.returnCode +
'\n');
}
} else {
console.log('返回支付配置异常2' + '\n' + pay_config_url + '\n' + JSON.stringify(
body) +
'\n');
writeToFile('返回支付配置异常2' + '\n' + pay_config_url + '\n' + JSON.stringify(
body) +
'\n');
}
})
}
function writeToFile(data) {
var fs = require('fs');
fs.appendFileSync('message.txt', data + '\n'); // 同步写入
}
在终端里运行:node stu_script.js。可以看到在根目录下出现message.txt文件,里面的内容是打印出来的内容。
![Resize icon][7]
[7]:http://7ximqh.com1.z0.glb.clouddn.com/EF971A01-9361-40B8-A6A2-D3F7CCFCBCF9.png
POST方法示例(为了保密原则json内容不具体写出来了):
var json = {
};
request.post({
url: create_bill_url,
headers: headers,
json: json
}, function(err, httpResponse, body) {
if (!err && httpResponse.statusCode == 200) {
if (body.returnCode == 200) {
console.log(body.data)
writeToFile('创建订单返回值:' + '\n' + body.data + '\n');
} else {
console.log('创建订单异常1' + '\n' + create_bill_url + '\n' + body.data +
'\n');
writeToFile('创建订单异常1' + '\n' + create_bill_url + '\n' + body + '\n');
}
} else {
console.log('创建订单异常2' + '\n' + create_bill_url + '\n' + JSON.stringify(
body) +
'\n');
writeToFile('创建订单异常2' + '\n' + create_bill_url + '\n' + JSON.stringify(
body) +
'\n');
}
})
}