Node.js的初探

针对公司这边使用node的场景,主要是为了进行数据的裁剪,加速首屏的渲染时间;同时避免后端的开发进度影响前端,于是引入node.js这门新的技术。所以决定试node.js,
扩大自己的技术水平。

https://nqdeng.github.io/7-days-nodejs/

这篇文章从最基础的部分介绍了node的概念,包括基本的使用安装方法。node中关于模块的使用方法以及代码的组织和部署。着重从文件操作、网络操作、异步编程等角度详细分析和解读了其中的使用。

【关于文件操作】

node内置了fs模块,针对文件进行操作。通过使用fs.creatReadStream和fs.createWriteStream演示了日常的文件拷贝操作。然后从node中与文件操作有关的api出发,引入了buffer、stream、file system以及path讲述了文件操作中的这些api。然后又介绍了其中的遍历目录的操作。最后讲述了根文件操作最相关的编码问题。整体上介绍了关于文件的操作。

【网络操作】
node有一个很重要的功能,就是能模拟实现服务器的功能,可以用来编写高性能Web服务器。通过内置的http模块,实现一个完整的网络操作流程。包括编写服务器以及客户端的请求。从node提供的和网络操作有关的API出发,逐一介绍每个API的使用。包括http模块来实现服务端和客户端的使用方式。https模块和http很类似,区别在于https需要额外处理SSl证书。涉及到网络操作,一定离不开url地址,node提供了url模块来处理URL的解析、生成以及拼接等工作。以及一些query string操作,用于实现URL参数字符串与参数对象的互相转换。使用zlib模块来实现网络传输中数据的压缩和解压功能。net模块用于创建socket服务器和socket客户端的功能。

【进程管理】
node.js可以控制和管理自身的运营状态和环境,并且可以创建子进程协同工作。这使得node可以将多个程序组合在一起使用完成某些工作。这里主要介绍了通过process对象来控制使用node.js自身的进程;以及使用child_process来创建和控制子进程。

【异步编程】
node.js最大的特点就是事件机制和异步IO,如果想使用这些特定,这就需要开发者按照异步编程的方式书写代码。通过异步实现其中的奥秘。其中异步回调是一个很有意思的话题,可以通过多种方式实现。

最后通过一些功能案例展示了node的强大之处。通过一次次的迭代实现,让人慢慢理解其中的思路。

但是在看完这些内容之后,会有点云里雾里。只知道其中的很多操作和功能,但是没有一个项目功能来支持,对于知识的理解总缺少点直观上的感受。于是在晚上找个一个项目demo,通过node.js来实现爬虫,爬取网页上特定内容的功能。直观并且清晰的展示了node.js的强大之处。


https://zhuanlan.zhihu.com/p/24730075?refer
其中主要使用了node.js的文件操作和网络操作的功能。用到了node的内置fs、http模块以及cheerio模块(用来解析html的)。
基本流程:
A.首页确定所要获取资源的网页地址,并分析网页上资源(图片)的特征。提出出来方便后续处理、操作
B.通过http.get操作,获取到对应url网页中的页面资源。
C.对于获取到的页面资源,通过cherrio进行html文件的解析,然而根据提取出的资源特征(特殊的class)处理生成对应网页资源结构树。
D.根据生成的对应网页资源结构树,拿到对应资源(图片)的src值,并将所有符合特征的图片src存储进一个数组。
E.根据拿到的src数组,通过http.get获取到每个src的图片资源内容。
F.然后调用fs将对应的资源内容写进本地的文件夹里存储起来,这样就实现了爬取网页中特殊内容的需求。

一个简单的爬虫demo,让我对于node的文件操作和网络操作有个一个直观的感受和深刻的理解。
未完待续~



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值