nodejs 初探 api试用

概述及安装:

简单的说 Node.js 就是运行在服务端的 JavaScript。

Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。

Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。

下载:https://nodejs.org/en/download/
可以下载源码或二进制发行版本,linux新版本的发行版本已经自带了npm,不用单独安装了,自带目录为:
下载 tar.gz二进制版本后,解压并设置环境变量:
export NODE_HOME=/usr/local/node/0.10.24
export PATH=$NODE_HOME/bin:$PATH
测试,输出node的版本:
node -v
输出使用的npm的版本:
npm -v
正常显示出版本好,即表示安装成功。
使用方式:
1.输入 node 回车,进入交互模式,可以直接输入代码并运行
2.输入 node test.js ,可运行该 js 中的代码

API:

一些常用的api测试如下:

console.log('========内置全局对象:process');
console.log('当前目录: ' + process.cwd());
console.log('当前版本: ' + process.version);
//输出内存使用情况
console.log(process.memoryUsage());
process.on('exit', function(code) {
  // 以下代码永远不会执行
  setTimeout(function() {
    console.log("该代码不会执行");
  }, 0);
  console.log('退出码为:', code);
});

console.log('------http处理web服务,使用server.js和router.js两个模块------');
var server = require("./server");
var router = require("./router");
//server.start(router.route);

console.log('-------fs处理文件-------');
var fs = require("fs");
var file = '/home/conquer/Desktop/ignite';
var data = fs.readFileSync(file);
console.log(data.toString());

fs.readFile(file, function (err, data) {
    if (err) {
	    console.log(err.stack);
	    return console.error(err);
    }
    console.log(data.toString());
});
console.log("文件读取结束!");

console.log('------events处理自定义事件监听处理模型------');
var events = require('events'); 
var emitter = new events.EventEmitter(); 
emitter.on('someEvent', function(arg1, arg2) { 
	console.log('listener1', arg1, arg2); 
}); 
emitter.on('someEvent', function(arg1, arg2) { 
	console.log('listener2', arg1, arg2); 
}); 
emitter.once('connection', function (stream) {
  console.log('Ah, we have our first user!');
});
emitter.emit('someEvent', 'arg1 参数', 'arg2 参数'); // first
emitter.emit('someEvent', 'arg1 参数', 'arg2 参数'); // second
emitter.emit('connection', 'connection 参数', 'connection 参数'); //first
emitter.emit('connection', 'connection 参数', 'connection 参数'); //second  : no action because of [emitter.once]
var callback = function() {
	console.log('aaaaaa');
}
emitter.addListener('addEvent', function(stream) {
	console.log('stream:' + stream);
});
emitter.addListener('addEvent', callback);
emitter.on('addEvent', callback);
console.log("listenerCount:" +events.listenerCount(emitter, 'addEvent'));
//emitter.removeListener('addEvent', callback);
//emitter.removeListener('addEvent', callback);
emitter.removeAllListeners();
emitter.emit('addEvent');
// test error handler
//emitter.emit('error'); 

console.log('------------Buffer(缓冲区)处理二进制数据----------');
buf = new Buffer(26);
for (var i = 0 ; i < 26 ; i++) {
  buf[i] = i + 97;
}
console.log( buf.toString('ascii'));       // 输出: abcdefghijklmnopqrstuvwxyz
console.log( buf.toString('ascii',0,5));   // 输出: abcde
console.log( buf.toString('utf8',0,5));    // 输出: abcde
console.log( buf.toString(undefined,0,5)); // 使用 'utf8' 编码, 并输出: abcde


function say(word) {
  console.log(word);
}
function execute(someFunction, value) {
  someFunction(value);
}
say("Hello");
execute(say, "Hello");

console.log('------ 自带 工具类 :util ------');
var util = require('util'); 
console.log('输出内存使用情况:'+util.inspect(process.memoryUsage()));
console.log(util.isArray([]))
  // true
console.log(util.isArray(new Array))
  // true
console.log(util.isArray({}))

console.log('-------dns模块------');
var dns = require('dns');

dns.lookup('www.github.com', function onLookup(err, address, family) {
   console.log('ip 地址:', address);
   dns.reverse(address, function (err, hostnames) {
   if (err) {
      console.log(err.stack);
   }

   console.log('反向解析 ' + address + ': ' + JSON.stringify(hostnames));
});  
});

console.log('-----net 模块,发送网络请求-----');
var net = require('net');
var client = net.connect({port: 80,host:'www.baidu.com'}, function() {
   console.log('连接到服务器!');  
});
client.on('data', function(data) {
   console.log(data.toString());
   client.end();
});
client.on('end', function() { 
   console.log('断开与服务器的连接');
});

console.log('----path,用于处理路径----');
var path = require("path");
// 格式化路径
console.log('normalization : ' + path.normalize('/test/test1//2slashes/1slash/tab/..'));
// 连接路径
console.log('joint path : ' + path.join('/test', 'test1', '2slashes/1slash', 'tab', '..'));
// 转换为绝对路径
console.log('resolve : ' + path.resolve('main.js'));
// 路径中文件的后缀名
console.log('ext name : ' + path.extname('main.js'));

console.log('---- os,操作系统信息获取接口');
var os = require("os");

// CPU 的字节序
console.log('endianness : ' + os.endianness());

// 操作系统名
console.log('type : ' + os.type());

// 操作系统名
console.log('platform : ' + os.platform());

// 系统内存总量
console.log('total memory : ' + os.totalmem() + " bytes.");

// 操作系统空闲内存量
console.log('free memory : ' + os.freemem() + " bytes.");

server.js

var http = require("http");
var url = require("url");
function start(route) {
  function onRequest(request, response) {
    var pathname = url.parse(request.url).pathname;
    console.log("url: " + pathname);
    route(pathname);
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("Hello World");
    response.end();
  }
  http.createServer(onRequest).listen(8888);
  console.log('Server running at http://127.0.0.1:8888/');
}
//全局设置,对其它模块可见
exports.start = start;

router.js

function route(pathname) {
  console.log("About to route a request for " + pathname);
}
//全局设置,对其它模块可见
exports.route = route;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值