Node.js基础语法
什么是 Node.js?
node.js是⼀个可以让JavaScript可以运⾏在服务端的平台,是为了实时web开发应⽤的平台,可以作为服务器向⽤户提供服务。Node.js是⽤单线程,异步式I/O和事件驱动,依赖于Chrome的V8引擎进⾏代码解释的javascript运⾏环境,V8引擎执⾏Javascript的速度⾮常快,性能⾮常好。;
并且Node.js 不运⾏在浏览器中,所以也就不存在 JavaScript 的浏览器兼容性问题,你可以放⼼地使⽤ JavaScript 语⾔的所有特性。
1:**下载安装node以及node环境**:见之前博客有详细node安装以及
环境配置
2:在nodejs中⽂件修改需要重启服务:这要开发⽐较慢,
安装⾃启动⼯具**supervisor**
cnpm install –g supervisor
安装完成之后启动⽂件使⽤ supervisor 项⽬名称.js
3:nodejs 可以⾃动node_modules⽂件下的⽂件:
如果node_modules⽂件下有⽂件夹可在cd进⼊这个⽂件
使⽤命令npm init –yes 安装当前⽂件的package.json⽂件,
直接请求require(“名字”);
4:nodejs 第三⽅包的安装和package.json 项⽬⽂件
创建 node项⽬之后先使⽤命令进⼊项⽬⽂件,
安装项⽬的配置⽂件package.json⽂件。
使⽤命令 npm init /cnpm init
或者 npm init –yes/cnpm init –yes (这种表⽰严格模式命名)
创建node.js应⽤
node的HTTP模块(⽤来搭建http请求和客户端)
(在使⽤node.js创建应⽤时,如果不记得某个⽅法的参数,删掉左边的括号,然后再补上就会出现参数提⽰)
三步:
1:引⼊ required 模块:我们可以使⽤ require 指令来载⼊ Node.js 模块。
var http = require("http");
2:创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
}).listen(端⼝号);
3:接收请求与响应请求 服务器很容易创建,客户端可以使⽤浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。
基本样式:
var http=require('http');//引⼊
res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
// 设置http头部状态⽂件类型字符集
(如果不设置charset=UTF-8,⽹页就会出现乱码)
res.write("我是node js"); //发送响应数据
}).listen(8100);//设置监听端⼝号
console.log("192.168.0.253:8100");
写完之后在终端输⼊
node server.js 启动服务器·
解析服务器路径使⽤URL模块
url 模块
⾸先,我们需要先引⼊url 模块
var url=require('url');
然后使⽤⽅法:
url.parse()
解析url地址。
案例:
path.query//可以得到路径上⾯的值
var http=require('http');
var url=require('url');
if (req.url != "/favicon.ico") {
let path = url.parse(req.url, true);
// url.parse()参数1位解析的路径参数2:可以将地址上的值解析出来
let query = path.query;
res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
res.write("解析路径传值:" + JSON.stringify(query));
//将路径上⾯的值传到页⾯上⾯,因为query是⼀个对象,
要传到页⾯上⾯,需要转成字符串
}
}).listen(8100);
console.log("192.168.0.253:8100");
Commonjs
Commonjs规范的提出,弥补javascript没有标准的缺陷,提供⼀个类似后端语⾔的标准库,也就是说commonjs是模块化的标
准,nodejs就是commonjs模块化的实现
在nodejs中将公共的功能抽离为单独的js⽂件作为模块,在外部是没有办法访问的(类似后端的私有的属性和⽅法);要想使⽤模块,就必须在模块⾥⾯通过exports或者ports暴露属性或者⽅法。在需要的模块使⽤require引⼊模块。
Node.js 提供了 exports 和 require 两个对象,其中 exports 是模块公开的接⼝,require ⽤于从外部获取⼀个模块的接⼝,即所获取模块的 exports 对象。
javascript的特性案例:
function Hello() {
var name;
this.setName = function(thyName) {
name = thyName;
};
this.sayHello = function() {
console.log('Hello ' + name);
};
};
//main.js
var Hello = require('./hello'); //然后使⽤require获取模块接⼝
hello = new Hello();
hello.setName('BYVoid');
hello.sayHello();
nodejs 中的fs模块⽂件系统的使⽤
Node.js内置的fs模块就是⽂件系统模块,负责读写⽂件。
Node 导⼊⽂件系统模块(fs)语法如下所⽰:
var fs = require("fs")
Node.js ⽂件系统(fs 模块)模块中的⽅法均有异步和同步版本,例如读取⽂件内容的函数有异步的 fs.readFile() 和同步的fs.readFileSync()。
异步的⽅法函数最后⼀个参数为回调函数,回调函数的第⼀个参数包含了错误信息(error)。
打开⽂件
在异步模式下打开⽂件的语法格式:
fs.open(path, flags[, mode], callback)
参数
参数使⽤说明如下:
path - ⽂件的路径。
flags - ⽂件打开的⾏为。
mode - 设置⽂件模式(权限),⽂件创建默认权限为 0666(可读,可写)。
callback - 回调函数,带有两个参数如:callback(err, fd)。
案例:
var fs = require("fs");
// 异步打开⽂件
console.log("准备打开⽂件!");
fs.open('', 'r+', function(err, fd) {
if (err) {
(err);
}
console.log("⽂件打开成功!");
});
以上代码执⾏结果如下:
$ node file.js
准备打开⽂件!
⽂件打开成功!
获取⽂件信息
通过异步模式获取⽂件信息的语法格式:
fs.stat(path, callback)
path - ⽂件路径。
callback - 回调函数,带有两个参数如:(err, stats), stats 是 fs.Stats 对象。
写⼊⽂件
异步模式下写⼊⽂件的语法格式:
fs.writeFile(file, data[, options], callback)
writeFile 直接打开⽂件默认是 w 模式,所以如果⽂件存在,该⽅法写⼊的内容会覆盖旧的⽂件内容。
参数使⽤说明如下:
file - ⽂件名或⽂件描述符。
data - 要写⼊⽂件的数据,可以是 String(字符串) 或 Buffer(缓冲) 对象。
options - 该参数是⼀个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 'w'
callback - 回调函数,回调函数只包含错误信息参数(err),在写⼊失败时返回。
读取⽂件
以下为异步模式下读取⽂件的语法格式:
该⽅法使⽤了⽂件描述符来读取⽂件。
参数使⽤说明如下:
fd - 通过 fs.open() ⽅法返回的⽂件描述符。
buffer - 数据写⼊的缓冲区。
offset - 缓冲区写⼊的写⼊偏移量。
length - 要从⽂件中读取的字节数。
position - ⽂件读取的起始位置,如果 position 的值为 null,则会从当前⽂件指针的位置读取。
callback - 回调函数,有三个参数err, bytesRead, buffer,err 为错误信息, bytesRead 表⽰读取的字节数,buffer 为缓冲区对象。
关闭⽂件
异步模式下关闭⽂件的语法格式:
fs.close(fd, callback)
该⽅法使⽤了⽂件描述符来读取⽂件。
参数使⽤说明如下:
fd - 通过 fs.open() ⽅法返回的⽂件描述符。
callback - 回调函数,没有参数。
截取⽂件
以下为异步模式下截取⽂件的语法格式:
fs.ftruncate(fd, len, callback)
该⽅法使⽤了⽂件描述符来读取⽂件。
参数:
fd - 通过 fs.open() ⽅法返回的⽂件描述符。
len - ⽂件内容截取的长度。
callback - 回调函数,没有参数。
删除⽂件
删除⽂件的语法格式:
fs.unlink(path, callback)
参数
path - ⽂件路径。
callback - 回调函数,没有参数
创建⽬录
以下为创建⽬录的语法格式:
fs.mkdir(path[, options], callback)
参数
path - ⽂件路径。
options 参数可以是:
recursive - 是否以递归的⽅式创建⽬录,默认为 false。
mode - 设置⽬录权限,默认为 0777。
callback - 回调函数,没有参数。
读取⽬录
读取⽬录的语法格式:
参数
path - ⽂件路径。
callback - 回调函数,回调函数带有两个参数err, files,err 为错误信息,files 为⽬录下的⽂件数组列表。
删除⽬录
删除⽬录的语法格式:
参数:
path - ⽂件路径。
callback - 回调函数,没有参数。
Node.js Buffer(缓冲区)
JavaScript 语⾔⾃⾝只有字符串数据类型,没有⼆进制数据类型。
但在处理像TCP流或⽂件流时,必须使⽤到⼆进制数据。因此在 Node.js中,定义了⼀个 Buffer 类,该类⽤来创建⼀个专门存放⼆进制数据的缓存区。
在 Node.js 中,Buffer 类是随 Node 内核⼀起发布的核⼼库。Buffer 库为 Node.js 带来了⼀种存储原始数据的⽅法,可以让 Node.js 处理⼆进制数据,每当需要在 Node.js 中处理I/O操作中移动的数据时,就有可能使⽤ Buffer 库。原始数据存储在 Buffer 类的实例中。⼀个 Buffer 类似于⼀个整数数组,但它对应于 V8 堆内存之外的⼀块原始内存
Buffer 与字符编码
Buffer 实例⼀般⽤于表⽰编码字符的序列,⽐如 UTF-8 、 UCS2 、 Base64 、或⼗六进制编码的数据。 通过使⽤显式的字符编码,就可以在 Buffer 实例与普通的 JavaScript 字符串之间进⾏相互转换。
const buf = Buffer.from('runoob', 'ascii');
// 输出 72756e6f6f62
console.String('hex'));
// 输出 cnVub29i
console.String('base64'));
创建 Buffer 类
Buffer 提供了以下 API 来创建 Buffer 类:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论