初识Node之Node常见语法操作总结

1.利用typeof区分数据类型

var a;
var b = 12;
var c = 'node.js';
var d = true;
var e = function() {
}
var f = null;
var g = {
    num: 12
}
var arr = [a,b,c,d,e,f,g];
for(var i = 0, max = arr.length; i < max; i++ ){
    console.log(typeof arr[i])
}

输出结果为:

undefined
number
string
boolean
function
object
object

可以看出null 和object都返回了object,这是因为null实际上是一个空对象指针,当一个变量只声明未赋值时都只返回object

2.利用Boolean()转化数据类型

var a;
var b = null;
var c =0;
var d ='';
var e = NaN;
var arr = [a,b,c,d,e];
for(var i=0, max = arr.length;i<max;i++){
    console.log(Boolean(arr[i]))
}

结果如下:

false
false
false
false
false

需要注意的是:空字符串,0,null,undefined,NaN都将转化为false,其他则会转化为true。

3.Node.js尝试路径

例如:某个模块的绝对路径是home/hello/hello.js,在该模块中导入其他模块,写法为require(“me/first”),Node.js会依次使用一下路径

/home/hello/node_modules/me/first
/home/node_modules/me/first
node_modules/me/first

4. 客户端向 http 发送请求

a. http.request 使用 get 方法

首先,我写了一个在请求http相应的页面,打开浏览器输出hello node

var http = require('http');
http.createServer(function(request, response){
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello Wrold\n');
}).listen(5000);
console.log('Server running at http://localhost:5000/');

然后再新建一个文件,http.request 使用 get方法

const http = require('http');
let reqData = '';
http.request({
    'host': '127.0.0.1',
    'port': '5000',
    'method': 'get'}, function(res){
    res.on('data', function(chunk){
        reqData += chunk;
    });
    res.on('end', function() {
        console.log(reqData); 
    });
}).end();

同时运行,结果会在命令行输出 hello node

b. 利用http.get()方法实现同样的效果

const http = require('http');
let reqData = '';
http.get({
    'host': '127.0.0.1',
    'port': '5000'
}, function(res) {
    res.on('data', function(chunk) {
        reqData += chunk;
    });
    res.on('end', function(){
        console.log(reqData);
    })
}).end();

c. 利用response实现

const http = require('http');
let reqData = '';
let option= {
    'host': '127.0.0.1',
    'port': '5000'
};
const req = http.request(option);
req.on('response', function(res) {
    res.on('data', function(chunk) {
        reqData += chunk;
    });
    res.on('end', function() {
        console.log(reqData);
    });
});

5.文件操作

一个文件对象有:
root : 根目录(磁盘名)
dir: 完整目录
base: 路径最后一个部分(肯是文件名或者文件夹名,是文件名时带拓展名)
ext: 拓展名
name: 文件名(不带拓展名)
stats类中方法有:

stats.isFile()
//如果是标准目录就返回true,如果是目录,套接字,符号连接或者设备就返回false
stats.isDirectory()
//如果是目录就返回true
stats.isBlockDevice()
//如果是块设备就返回true,大多数块设备都存放在unix系统下
stats.isCharacterDevice()
//如果是字符设备就返回true
stats.isSymbolicLink()
//如果是符号连接就返回true == fs.1stat()
stats.isFIFO()
如果是FIFO(unix中的一种特殊类型的命令管道)就返回true
stats.isSocket()
//如果是unix套字就返回true

fs.stat()、fs.1stat()、fs.fstat()都将返回文件的一些特征信息,如文件的大小、创建时间和权限。
写文件的两种方式:


var fs = require('fs');
//使用string写入文件
fs.appendFile('message.txt', 'string---data to append!', 'utf8', (err) => {
    if (err) throw err;
    console.log('the data was appended to file')
});

//使用bufffer写入文件
fs.appendFile('message.txt', 'buffer---data to append!', (err) => {
    if (err) throw err;
    console.log('the data was appended to file')
})

使用CSV中的stream来读取、解析和转换CSV文件


var csv = require('CSV');

var generator = csv.generate({ seed: 1, columns: 2, length: 20 });
var parser = csv.parse();
var transformer = csv.transform(function (data) {
    return data.map(function (value) { return value.toUpperCase() });
});
var stringifier = csv.stringify();

generator.on('readable', function () {
    while (data = generator.read()) {
        parser.write(data);
    }
});
//解析生成的额csv文件
parser.on('readable', function () {
    while (data = parser.read()) {
        transformer.write(data);
    }
});
//将CSV文件转换txt文件
transformer.on('readable', function () {
    while (data = transformer.read()) {
        stringifier.write(data);
    }
});

stringifier.on('readable', function () {
    while (data = stringifier.read()) {
        process.stdout.write(data);
    }
});


命令集锦

npm init -y   
//系统使用默认值生成package.json文件
npm install underscore   
//安装js工具库
安装命令 + -S  
//安装包的记录会在package.json的dependencies
安装命令 + -dev  
//安装包的记录会在package.json的devDependencies
url.parse() 
//解析urrl地址,返回url对象
url.format()
//接受一个url对象为参数,返回完整的url地址
url.ressolve(from, to)
//接受base url ,href url 像url解析,返回完整的url
querystring.parse();
//查询字符串反序列化为一个对象;类似ISON.parse()
querysstring.stringify()
//对象反序列化为一个字符串;类似JSON.stringify
util.inspect();
//返回一个对象反序列化为字符串
util.format()
//返回使用占位符格式化的字符串,类似c语言的printf
util.log()
//在控制台输出,类似console.log;带有时间戳
path.join()
//将所有的参数连接起来,返回一个路径
path.extname()
//返回路径参数的扩展名,无扩展时返回空字符串
path.parse()
//将路径解析为一个路径对象
path.format
//接受一个路径对象为参数,返回一个完整的路径地址(路径字符串)
dns.resolve()
//将一个域名解析为一个指定类型的数组
dns.lookup
//返回第一个被发现的ipv4或者ipv6的地址
dns.reverse
//通过ip解析域名
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值