文章目录
背景知识
node.js创始人—Ryan Dahl。2009.2首次在自己博客创建Web服务器并提供一个库。5月在GitHub发布最初版本。
事件驱动
在于注册事件后,等待事件触发执行,而不需要依赖自身出现的顺序。充分利用了系统资源,执行代码无需阻塞等待某种操作完成,有限的资源可以用在其他任务。
性能出众
以单进程、单线程模式运行。
单线程
这里指主线程为“单线程”,所有阻塞的部分交给一个线程池处理,然后主线程通过一个队列跟线程池协作。
异步、非阻塞I/O
例如文件操作等许多函数都是异步执行的,
发出I/O调用;执行回调
注意事项:在处理CPU密集型应用、模板渲染、压缩、解压缩、加密、解密等操作都是nodejs的弱项
nodeJS内容
nodeJS自带REPL(交互式运行环境),也可以在浏览器上尝试。
console
console.dir()将一个对象输到控制台
console.time() ; console.timeEnd()输入代码的运行时间
console.trace()输出当前位置栈信息。
包管理
npm init
可生成一个package.json文件,是整个项目的描述文件,通过这个文件可以清楚了解项目的包依赖关系、版本等等信息。
直接命令:npm init -y 或 npm init --yes
npm i < package name >
–save 或 -S可放在dependencies字段中
继续加 -dev 则在开发阶段devDependencies字段中
建议将所有的项目安装包都记录在package.json文件中,我们使用使用时,只需执行npm i 即可,不需要时npm uninstall。
核心模块
http模块
创建Http服务器、客户端
url模块
url地址处理
url.parse():解析一个url地址,返回一个url对象
url.fomate(urlObj):接受一个url对象为参数,返回一个完整url地址
url.resolve(from,to)接受一个base url对象和一个href url 对象,像浏览器一样解析,返回完整地址。
querystring模块
查询字符串处理
querystring.parse():类似JSON.parse()
querystring.stringify():类似JSON.stringify();
常用模块
util模块
util.inspect():返回一个对象反序列化形成的字符串
util.format():返回使用占位符格式化的字符串
util.log():类似console.log()。
path模块
路径处理
path.join():将所有参数连接起来,返回一个路径
path.extname():返回路径参数的拓展名,没有时返回一个空字符串
path.parse():将路径解析为一个路径对象
path.format():接受一个路径对象参数,返回一个完整的路径地址。
dns模块
dns.resolve():将一个域名解析为一个指定类型的数组
dns.lookup():返回第一个被发现的IPv4或者IPv6的地址。
dns.reverse():通过IP解析域名。
文件世界
打开文件
fs.open(path,flags[,mode],callback)
flag值 | 说明 |
---|---|
r | 以读取模式打开文件,文件不存在抛出异常 |
r+ | 以读写模式打开文件,文件不存在抛出异常 |
rs | 以同步方式读取文件 |
rs+ | 以同步方式读取和写入文件 |
w | 以写入模式打开文件,文件不存在就创建 |
wx | 类似w,但文件路径存在则文件写入失败 |
w+ | 以读写模式打开文件,文件不存在就创建 |
wx+ | 类似w+,但文件路径存在则文件读写失败 |
a | 以追加模式打开文件,文件不存在则创建 |
ax | 类似a,但文件路径存在则追加失败 |
关闭文件
fs.close(fd,callback)
读取文件
fs.read()
fs.readFile()
写入文件
fs.writeFile()
fs.appendFile();
其他文件操作(csv、xml、json)
1、首先下载 (npm i csv)
2、解析生成csv文件
3、将csv文件转换为txt文件
目前nodeJS并不支持中文GBK或GB2312之类的编码,需引入第三方模块(iconv或iconv-lite; iconv仅支持Linux)
目前支持:utf-8、ucs2、ascii、binary、base64、hex
网络天地
TCP服务器
使用net模块。
net.createServer()let net = require('net'); let server = net.createServer((socket)=>{ conosle.log('someone connect'); })
监听客户端连接
server.listen()server.listen(8888,()=>{ console.log('server is listening'); })
手动监听写法
server.listen(8888); server.on('listening',()=>{ console.log(