nodejs的第一天

nodejs第一天学习

一、nodejs简介

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。

二、node下载

http://nodejs.cn/download/

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');

    }
  })
}

五、总结:昨天想让前同事给我个简单的python的demo,他说学nodejs吧。简单。

不知道怎么用api去官网文档查询:http://nodejs.cn/doc/node/

文章里面没有讲为啥要有request包。(其实就当作网络请求需要的包罢了)。还有其他什么包,仍需探索啊。

这里该挖个什么坑呢。因为会的少,所以不知道接下来要往哪儿学了。

有不正确之处,欢迎与我联系zltqzj@163.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容