持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情
系列介绍
该系列主要是介绍一些nodejs相关的基础知识,没有什么特别难的知识点,都是一些比较基础知识点。大家学习起来,也会比较容易理解和接收。
这些知识点,也是以前自己学习nodejs的时候,学习过的知识点。有些知识点,可能是由于学习的时间比较久了,也有可能是平时工作中用到的机会比较少,也差不多快把它们都忘记掉了。现在把它们都写下来,写成文章,一方面是记录下自己以前学习的nodejs知识点,一方面也是复习巩固自己以前学习的nodejs知识点。不要学着学着,就把以前的知识点都忘光了。
nodejs介绍
从nodejs摘抄过来的node介绍:
Node.js 是一个开源和跨平台的 JavaScript 运行时环境。 它几乎是任何类型项目的流行工具!
Node.js 在浏览器之外运行 V8 JavaScript 引擎(Google Chrome 的内核)。 这使得 Node.js 的性能非常好。
Node.js 应用程序在单个进程中运行,无需为每个请求创建新的线程。 Node.js 在其标准库中提供了一组异步的 I/O 原语,以防止 JavaScript 代码阻塞,通常,Node.js 中的库是使用非阻塞范式编写的,使得阻塞行为成为异常而不是常态。
当 Node.js 执行 I/O 操作时(比如从网络读取、访问数据库或文件系统),Node.js 将在响应返回时恢复操作(而不是阻塞线程和浪费 CPU 周期等待)。
这允许 Node.js 使用单个服务器处理数千个并发连接,而不会引入管理线程并发(这可能是错误的重要来源)的负担。
Node.js 具有独特的优势,因为数百万为浏览器编写 JavaScript 的前端开发者现在无需学习完全不同的语言,就可以编写除客户端代码之外的服务器端代码。
在 Node.js 中,可以毫无问题地使用新的 ECMAScript 标准,因为你不必等待所有用户更新他们的浏览器,你负责通过更改 Node.js 版本来决定使用哪个 ECMAScript 版本,你还可以通过运行带有标志的 Node.js 来启用特定的实验性功能。
我们可以从介绍里面看到,nodejs还是挺棒的。
nodejs遵循的是commomjs规范,所以使用nodejs的时候,需要按照commomjs规范来编写代码。
环境安装
实现之前,你首先需要安装nodejs环境。因为我们写的代码需要在node环境上运行,如果你没有,那么文件会运行不了。
以下是nodejs的安装地址,如果你没有安装的话,可以先把它安装上。安装了可以忽略这一步,跳到下面一步。
前言
由于url模块的介绍和使用 篇幅过长,所以把它分成上篇和下篇。
在上一篇url模块的介绍和使用-上篇里,我们介绍了url模块,以及url模块的一个方法parse,用来解析url地址的请求参数。
接下来,在下篇里,我们继续介绍url模块的另外两个方法。
format
format方法,把一个url的实例对象,序列化为一个字符串。你可以简单理解为就是parse解析的逆向过程
我们先创建一个index.js文件,在里面引入url模块
const url = require('url')
定义一个url地址
let urlStr = 'http://hao123.com/user?id=1&name=tony'
调用parse方法,解析这个地址
let parseUlr = url.parse(urlStr)
把解析后的结果打印出来
console.log('parseUlr',parseUlr);
到cmd里,用node运行这个js文件,查看打印结果
可以看到,字符串被解析成一个url对象。
接下来,我们再调用format方法,并把结果打印出来,看下会得到什么结果。
console.log('format',url.format(parseUlr));
到cmd里,用node运行这个js文件,查看打印结果
我们可以看到,url对象,又再次被序列化为字符串了。
resolve
url.resolve(from,to)
- from:要替换或者拼接的地址
- to:要替换或者拼接的字符串
url模块的resolve方法,主要是用来切换锚点或者拼接锚点。
这么说有点不容易理解,下面通过例子来讲解一下。
先创建一个index2.js文件,在里面引入url模块
const url = require('url')
定义一个url地址,该地址只有协议和域名,没有路由。
我们调用resolve方法,传递一个字符串进去。
console.log(url.resolve('http://hao123.com/','one'));
在cmd里,用node运行js文件,查看打印结果
我们可以看到,one被拼接到url地址上了。
我们接着定义一个路由地址,没有协议和域名,调用resolve方法,看下会得到什么
console.log(url.resolve('/one/tow','three'));
在cmd里,用node运行js文件,查看打印结果
我们可以看到,最后面一个路由地址,被替换了。
如果带上协议和域名,执行结果会不会不一样呢?
让我们来试下
console.log(url.resolve('http://hao123.com/one/two','three'));
在cmd里,用node运行js文件,查看打印结果
我们可以看到,和上面的结果是一样,说明和协议与域名没有太大关系。
小结
url模块有3个方法:
- parse:用来解析url地址
- format:把url对象序列化为字符串
- resolve: 拼接url的锚点或者切换锚点
我们平时常用的是parse方法,一般用parse方法来解析url地址,拿到url地址上的请求参数。
最后,放上自己比较喜欢的一句诗句:
千淘万漉虽辛苦,吹尽狂沙始到金 - 唐 刘禹锡《浪淘沙》