node js学习

发布时间 2023-04-22 22:09:01作者: my日常work

const arrOld = datastr.split(" ")

arrOld.forEach(item => {

})

相对路径会出现路径动态拼接的问题,在node执行的时候拼接路径

相对路径移植性差,需要路径动态拼接

__dirname 表示当前文件所处目录

node_modules 是从当前的node_modules开始找,一直找到上级目录,最后到根目录

 
1. path 使用
 
path.join 系统拼接路径 // 不建议使用 + 进行路径拼接
 
path.basename() // 获取路径最后的完整的文件名,可以传第2个参数,将扩展名移除
 
 
path.extname(path) // 获取路径扩展名
path.resolve(path) // 拼接决定路径
 
exec()方法匹配正则表达式

 

fs.stat() 获取文件meta信息

data.isFile() 判断是否是一个文件

data.isDirectory() 判断是否是一个文件夹

 

Number() 强制类型转换   

`aaaa${data}` 是一个模板字符串

 

2. http模块

设置中文响应乱码  response.setHeader('content-type', 'text/html;charset=utf-8')

 

3. Node 模块化

将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称为模块化

模块内部数据是私有的,不过可以暴露内部数据以便其他模块使用

好处:

1. 减少命名冲突

2. 高复用性

3. 高维护性

 

require导入模块

 

注意事项:

1. 对于自己创建的模块,导入路径一般为相对路径,且不能省略./和../

2. js和json文件导入时可以不用写后缀   优先检测js文件

3. 如果导入其他类型的文件,会以js文件进行处理

4. 如果导入的路径是个文件夹,则会首先检测该文件夹下package.json文件中main属性对应的文件,如果存在则导入,如果文件不存在则报错。

如果main属性不存在,或者package.json不存在,则会尝试导入文件夹下index.js和index.json,如果还是没找到,就会报错

5. 导入node.js 内置模块时,直接require模块的名字即可,无需加./和../

 

 CommonJS规范

module.exports、 exports 以及 require这些都是CommonJS模块规范中的内容,而Node.js是实现了CommonJS模块化规范

javaScript实现了ECMScript

 

三 包管理工具 

yarn和npm包管理工具不同

1. 安装依赖项的算法不同

npm使用的是package-lock.json文件管理依赖项的版本和依赖关系,在安装依赖项时,npm使用深度优先算法来解析依赖项的依赖关系,会导致版本冲突和不稳定性

yarn使用yarn.lock文件管理依赖项的版本和依赖关系,在安装时使用广度优先算法来解析依赖项的依赖关系,确保安装的依赖项版本稳定且与其他依赖项兼容

 

2. yarn的安装速度比npm更快,因为yarn会并行下载多个依赖项,而npm是按照顺序依次下载每个依赖项

 

3. 缓存机制不同

npm将依赖项目缓存在本地.npm目录中,每次npm检查缓存中是否存在相同版本的依赖项,如果存在,使用缓存中的依赖项而不是重新下载

 

yarn也有类似的缓存机制,但是将缓存的依赖项放在本地的yarn-cache目录中。yarn还使用了更加智能的缓存算法,尽可能重复使用已经下载的依赖项,减少了下载的时间和带宽消耗

 

4. 锁定机制不同

npm会生成一个package-lock.json 文件来锁定依赖项的版本和依赖关系。但是这个文件可能会不稳定,导致不同的开发者安装相同的依赖项版本不一致问题。

yarn 使用 yarn.lock文件来锁定依赖项的版本和依赖关系,由yarn自动生成,确保不同开发者安装项目的依赖项版本一致

 

npm的package-lock.json文件只记录了每个依赖项的版本号和依赖关系,而没有记录依赖项所依赖的其他依赖项的版本号和依赖关系,可能导致不同开发者安装相同的依赖项版本不一致问题。

yarn install

yarn run 

npm -y 快速初始化