1.node是什么?
Node 是一个让 JavaScript 运行在服务端的开发平台, 发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。Node对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。 Node用于方便地搭建响应速度快、易于扩展的网络应用。Node 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
1) 什么是 V8?
V8 JavaScript 引擎是 Google 用于其 Chrome 浏览器的底层 JavaScript 引擎。实际上,JavaScript 引擎负责解释并执行代码。Google 使用 V8 创建了一个用 C++ 编写的超快解释器,该解释器拥有另一个独特特征;您可以下载该引擎并将其嵌入任何应用程序。V8 JavaScript 引擎并不仅限于在一个浏览器中运行。因此,Node 实际上会使用 Google 编写的 V8 JavaScript 引擎,并将其重建为可在服务器上使用。
3) 什么是并发?
一段时间内有多个程序在运行到运行完毕之间
4) 什么是进程?
一个软件运行过程中至少要有一个进程对应
5) 什么是线程?
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务
多线程与单线程的效率问题:线程本身由于创建和切换的开销,采用多线程不会提高程序的执行速度,反而会降低速度,但是对于频繁IO操作的程序,多线程可以有效的并发.
6) 同步和异步有什么区别?
同步会阻塞: 循环 script加载src
? 异步不会阻塞代码: 定时器,link加载css,img加载src.
7) 什么是异步的IO.
要有数据的交互 异步的IO 读文件
没有数据的交互 ????异步的非IO ??setTimeout setInterval
var flag = 123; ???//假定条件// 此处省略一万行// 不能确定flag的值是否还为123,断言判断console.assert(flag == 1234,‘flag的值根本不等于123‘);
console.time(‘test‘);for(var i = 0;i < 100000000;i++){}console.timeEnd(‘test‘);
3) 路径
console.log(__dirname); ??//当前文件所在的路径console.log(__filename); ??//当前文件的全部路径
4.node.js中的内置模块
在node中,有一些内置的模块(包),通过require函数引入
内置模块:
- fs 文件系统
- http 创建服务
- path 路径
- querystring 参数模块
- url 地址栏
- 自定义模块
fs 文件系统的模块:
1)读取文件
// fs 文件系统的模块var fs = require("fs"); ?// console.log(fs);// 异步读取文件fs.readFile(‘./08.txt‘,‘utf8‘,function(err,data){ ??//如果编码格式不写,输出的就是一串buffer码 ???// console.log(err); ??//这是错误,但是没有抛出 ???if(err){ ???????throw err; ??//把错误抛出来,有错误可以阻止代码继续往后面走 ???} ???console.log(data)})// 同步// var data = fs.readFileSync("./08.txt",‘utf8‘) ??//同步读完就是函数的返回值// console.log(data);
2)判断文件是否存在
//判断文件是否存在
fs.access(‘./08.txt‘,function(err){ ?????if(err){ ???????throw err; ???} ???// 如果没有抛出错误,文件存在 ???fs.readFile(‘./08.txt‘,‘utf8‘,function(err,data){ ???????if(err) throw err; ???????console.log(data); ???})})fs.access("./abc",function(err){ ???//可以判断文件夹 ???if(err){ ???????throw err; ???} ???console.log(‘hello‘)})
3)写文件
异步写文件var obj = { ???"uname" : "admin", ???"upassword" : "admin" }var arr = [];// su shu arr.push(obj);var obj2 = { ???"uname" : "admin2", ???"upassword" : "admin2" }arr.push(obj2)var str = JSON.stringify(arr);fs.writeFile(‘./data/03.json‘,str,‘utf8‘,function(err){ ??//如果写入成功,这个err为null ???// console.log(err); ???if(err){ ???????throw err; ???//如果错误,将错误抛出 ???} ???console.log(‘文件写入成功‘) ???// 如果文件不存在,会帮你去创建对应的文件,但是不会创建文件夹})
同步写文件fs.writeFileSync(file, data[, options])
4)追加文件
异步的追加文件fs.appendFile(path, data[, options], callback)fs.appendFile("./data/04.json","hello world","utf8",function(err){ ???console.log(err); ???console.log(‘OK‘)})同步的追加文件fs.appendFileSync(path, data[, options])
5)创建文件夹
异步的创建文件夹fs.mkdir("./data02",function(err){ ???console.log(err); ??//node会报错,但是错误都不会抛出,不会影响后续代码的执行 ???console.log(‘OK‘);})同步的创建文件夹fs.mkdirSync(path[, options])
7)读文件夹
异步读文件夹fs.readdir(path[, options], callback)fs.readdir("./data",function(err,data){ ???console.log(err); ???console.log(data); ??//里面的文件以数组的形式表示出来,进行判断,判断是否是文件夹 ???// 如果是文件夹,继续读文件夹,如果是文件,直接读文件,然后展示})同步的读文件夹fs.readdirSync(path[, options])
8)文件夹是否存在
异步判断文件或者文件夹是否存在fs.access(path[, mode], callback) ??能否判断文件夹是否存在fs.access("./data",function(err){ ??//这个方法是可以判断文件和文件夹是否存在 ???console.log(err); ???console.log(‘OK‘);})同步判断文件或者文件夹是否存在fs.accessSync(path[, mode])
9)
fs.stat("./data",function(err,stats){ ???console.log(err); ???// console.log(stats.isDirectory());
// 获取文件的大小;
if(stats.isDirectory()){
console.log(‘是文件夹‘)
}
else{
console.log(‘是文件‘)
}
console.log(stats.size);
// 获取文件最后一次访问的时间;
console.log(stats.atime.toLocaleString());
// 文件创建的时间;
console.log(stats.birthtime.toLocaleString());
// 文件最后一次修改时间;
console.log(stats.mtime.toLocaleString());
// 状态发生变化的时间;
console.log(stats.ctime.toLocaleString())
//判断是否是目录;是返回true;不是返回false;
console.log(stats.isFile())
console.log(stats.isDirectory())})
})
http的模块:
// 引入http的模块var http = require("http");// 创建一个服务var count = 0;http.createServer(function(request,response){ ???count ++; ???console.log(‘hello world‘); ???response.end(count.toString())}).listen(3000)
node.js
原文地址:https://www.cnblogs.com/1234wu/p/10472905.html