node

由于Node.js平台是在后端运行JavaScript代码,所以,必须首先在本机安装Node环境。 安装Node.js
1.从Node.js官网下载对应平台的安装程序
2.在Windows上安装时务必选择全部组件,包括勾选Add to Path
3.安装完成后,在Windows环境下,请打开命令提示符,然后输入node -v,如果安装正常,你应该看到v7.6.0这样的输出: C:\Users\IEUser>node -vv7.6.0
4. 继续在命令提示符输入node,此刻你将进入Node.js的交互环境。在交互环境下,你可以输入任意JavaScript语句,例如100+200,回车后将得到输出结果。
5.要退出Node.js环境,连按两次Ctrl+C

Node.js的包管理工具(package manager)=> npm
搭建Node.js开发环境:

下载node安装文件 ,根据安装文件提示安装,安装完成后主要的一步配置环境变量 我的计算机—属性—高级属性设置—环境变量–path:node安装路径 打开doc窗口,输入node -v 显示安装node版本号 即为成功。

在node中 想要导出一个模块用 module.exports = 模块名/module.exports ={变量名:模块名}
function greet(name) { console.log(s + ', ' + name + '!');}
module.exports = greet;或者module.exports = {greet:greet}
在另外一个模块中想用其他模块用 require
var greet = require('greet');

CommonJS规范这种模块加载机制被称为CommonJS规范。

在这个规范下,每个.js文件都是一个模块,它们内部各自使用的变量名和函数名都互不冲突,

例如,A.js和B.js都申明了全局变量var s = ‘xxx’,但互不影响。一个模块想要对外暴露变量(函数也是变量),可以用module.exports = A;,一个模块要引用其他模块暴露的变量,用var ref = require(‘A’);就拿到了引用模块的变量。

基本模块:

因为Node.js是运行在服务器端的JavaScript环境,服务器程序和浏览器程序相比,最大的特点是没有浏览器的安全限制了,而且,服务器程序必须能接收网络请求,读写文件,处理二进制内容,所以,

Node.js内置的常用模块就是为了实现基本的服务器功能。
这些模块在浏览器环境中是无法被执行的,因为它们的底层代码是用C/C++在Node.js运行环境中实现的。

process(进程)

代表的是node.js的进程

process === global.process; true
process.version; ‘v5.2.0’
process.platform ‘darwin’
process.arch; ‘x64’
process.cwd(); //返回当前工作目录
process.chdir(‘目标路径’); // 切换当前工作目录

// process.nextTick()将在下一轮事件循环中调用:
process.nextTick(function () {
    console.log('nextTick callback!');
});
console.log('nextTick was set!');

以上代码输出最终结果

nextTick was set!
nextTick callback!

这说明传入process.nextTick()的函数不是立刻执行,而是要等到下一次事件循环。


程序即将退出时的回调函数:

process.on('exit', function (code) {
    console.log('about to exit with code: ' + code);
});
文件系统模块(fs)

fs模块同时提供了同步跟异步方法

异步读取文本文件:
var fs = require('fs');
fs.readFile('filename', 'utf-8', function (err, data) {
if (err) {
console.log(err);
} else {
console.log(data);
}
});

异步读取非文本文件(图片)
var fs = require('fs');
fs.readFile('sample.png', function (err, data) {
if (err) {
console.log(err);
} else {
console.log(data);
console.log(data.length + ' bytes');
}
});

当读取二进制文件时,不传入文件编码时,回调函数的data参数将返回一个Buffer对象。在Node.js中,Buffer对象就是一个包含零个或任意个字节的数组(注意和Array不同)。

同步读取
try {
var data = fs.readFileSync('sample.txt', 'utf-8');
console.log(data);
} catch (err) {
// 出错了
}

写入文件

var fs = require('fs');
var data = 'Hello, Node.js';
fs.writeFile('output.txt', data, function (err) {
if (err) {
console.log(err);
} else {
console.log('ok.');
}
});

writeFile()的参数依次为文件名、数据和回调函数。如果传入的数据是String,默认按UTF-8编码写入文本文件,如果传入的参数是Buffer,则写入的是二进制文件。回调函数由于只关心成功与否,因此只需要一个err参数。
和readFile()类似,writeFile()也有一个同步方法,叫writeFileSync()

var fs = require('fs');
var data = 'Hello, Node.js';
fs.writeFileSync('output.txt', data);

如果我们要获取文件大小,创建时间等信息,可以使用fs.stat(),它返回一个Stat对象,能告诉我们文件或目录的详细信息:

var fs = require('fs');
fs.stat('sample.txt', function (err, stat) {
if (err) {
console.log(err);
} else {
// 是否是文件:
console.log('isFile: ' + stat.isFile());
// 是否是目录:
console.log('isDirectory: ' + stat.isDirectory());
if (stat.isFile()) {
// 文件大小:
console.log('size: ' + stat.size);
// 创建时间, Date对象:
console.log('birth time: ' + stat.birthtime);
// 修改时间, Date对象:
console.log('modified time: ' + stat.mtime);
}
}
});

以上代码输出结果:

isFile: true
isDirectory: false
size: 181
birth time: Fri Dec 11 2015 09:43:41 GMT+0800 (CST)
modified time: Fri Dec 11 2015 12:09:00 GMT+0800 (CST)

stream模块
stream是Node.js提供的又一个仅在服务区端可用的模块,目的是支持“流”这种数据结构。
流的特点:
流的特点是数据是有序的,而且必须依次读取,或者依次写入,不能像Array那样随机定位。

响应流事件:

1.data事件表示流的数据已经可以读取了
2.end事件表示这个流已经到末尾了
3.error事件表示没有数据可以读取了


下面是一个从文件流读取文本内容的示例:
var fs = require('fs');
// 打开一个流
var rs = fs.createReadStream('sample.txt', 'utf-8');
var str = “”;
rs.on('data', function (chunk) {
str+=chunk;
console.log('DATA:')
console.log(chunk);
});
rs.on('end', function () {
console.log('END');
});
rs.on('error', function (err) {
console.log('ERROR: ' + err);
});

以流的形式写入文件:

var fs = require(‘fs’);
var ws1 = fs.createWriteStream(‘output1.txt’, ‘utf-8’);
ws1.write(‘使用Stream写入文本数据…\n’);
ws1.write(‘END.’);
ws1.end();

var ws2 = fs.createWriteStream(‘output2.txt’);
ws2.write(new Buffer(‘使用Stream写入二进制数据…\n’, ‘utf-8’));
ws2.write(new Buffer(‘END.’, ‘utf-8’));
ws2.end();

瀑布流:
所有的数据自动从Readable流进入Writable流,这种操作叫pipe(瀑布流)
var rs = fs.createReadStream('sample.txt');
var ws = fs.createWriteStream('copied.txt');
rs.pipe(ws);

stream


crypto算法
HASH加密解密的算法

web开发

用Node.js开发Web服务器端,有三个显著的优势:

  1. 后端语言也是JavaScript,以前掌握了前端JavaScript的开发人员,现在可以同时编写后端代码;
  2. 前后端统一使用JavaScript,就没有切换语言的障碍了;
  3. 速度快,非常快!这得益于Node.js天生是异步的。
express模块:
 它对Node.js的http进行了封装
 eg:
      var express = require('express');
      var app = express();
      app.get('/', function (req, res) {
        res.send('Hello World!');
      });
     app.listen(3000, function () {
        console.log('Example app listening on port 3000!');
    });
koa 1.0
    koa 1.0使用基于ES6的generator实现异步
var koa = require('koa');
var app = koa();

app.use('/test', function *() {
    yield doReadFile1();
    var data = yield doReadFile2();
    this.body = data;
});

app.listen(3000);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值