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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容