Node.js与前端开发|【青训营笔记】

93 阅读5分钟

这是我参与「第四届青训营 」笔记创作活动的第11天

今天是Node.js课程,这篇文章用来分享我的前端node.js笔记。

Node.js:运行环境--基于Chrome V8 引擎的
V8引擎负责解析和执行JavaScript代码
内置API使用运行环境提供的特殊接口,只能在所属的运行环境中使用;
浏览器是JavaScript的前端运行环境,Node.js 是JavaScript的后端运行环境;
Node.js中无法调用BOM,DOM等浏览器的API;

终端命令的使用

1.使用上箭头,可以快速定位到上一次执行的命令
2.使用tab键,能够快速补全路径(输入首字母或多个字母)
3.使用 esc键,能够快速清空当前已输入的命令
4.输入 cls命令,可以清空终端(clear)也行

文件系统模块

  • 1.fs const fs=require("fs") 读取指定文件内容
    fs.readFile(path[,options],callback)
    path:表示文件的路径
    options:可选参数,表示以什么编码格式来读取文件
    callback:文件读取完成口,通过回调函数拿到读取的结果
  • 2.fs.writeFile()用来向指定的文件中写入内容
    fs.writeFile(file,data[,options],callback)
    file:指定一个文件路径的字符串,表示文件的存放路径
    data:表示要写入的文件内容
    余下两个与fs.readFile()相同

path路径模块---用来解决路径问题;

路径问题 __dirname 代表当前文件所处的目录 要想使用path模块需要先导入 const path=require('path')

  • 1.path.join()用来将多个路径片段拼接成一个完整的路径字符串
    const pathStr=path.join('/a','/b/c','../','./d','e')
    console.log(pathStr) //输出 \a\b\d\e
    注意 '../'会抵消前面的一层路径 且只有'../'会

  • 2.path.basename()方法,用来从路径字符串中,将文件名解析出来
    path.basename(path[,ext])
    path 表示一个路径的字符串
    ext 表示文件扩展名

  • 3.path.extname ()获取文件拓展名


模块化的基本概念和规范
  • 1.规范:对代码进行模块化的拆分和组合时,需遵守的规则
  • 2.分类:
    • (1)内置模块---由官方提供:fs,path,http
    • (2)自定义模块---用户创建的每个js文件
    • (3)第三方模块---要下载的
  • 3.加载模块
    • (1)const fs=require('fs')
    • (2) const custom=require('./custom.js')
    • (3)const moment =require('moment')

使用require加载模块时会执行模块中的代码

module 使用require()方法导入模块时,结果永远以module.expotrs指向的对象为准。
exports对象:由于module.exports单词写起来比较复杂,为了简化向外
共享成员的代码,在默认情况下,exports和module.exports指向同一个对象。
最终共享的结果还是以module.exports指向的为准。


npm和包
第三方模块又叫做包

  • npm install(npm i)+包的完整名称----下载包 初次装包后,在项目文件夹多一个叫做node_modules的文件夹和 package-lcok.json的文件

    • node_modules文件夹用来存放所有一安装到项目中的包。require()导入第三方包是就是从这个目录中查找并加载包
    • package-lock.json配置文件用来记录node_modules目录下的每一个包的下载信息:名字版本号,下载地址;

程序员不要手动修改这两个文件中的任何代码,npm包管理工具会自动维护它们 安装指定版本的包可以通过@符号指定具体的版本

  • npm i moment@2.22.2 包的语义化版本规划
    • 第一位:大版本
    • 第二位:功能版本
    • 第三位:bug修复版本

大版本更新后面版本号清零

项目上传到GitHub时,要将node_modules添加到.gitignore文件夹,以免将其上传了

利用 npm init -y 快速创建一个package.json文件 上述的命令只能在英文的目录下成功运行!所以项目文件夹的名称一定要使用英文命名且不能出现空格。 npm install 命令安装包的时候,npm包管理工具会自动把包的名称和版本号,记录到package.json中

  • 一次性安装所有的包(删除node_modules 文件后) npm install (npm i) npm包管理工具会先读取package.json中的dependencies节点 读取到记录的所有依赖包名称和版本号之后,npm包管理工具会把这些包一次性下载到项目中

  • 卸载包 npm uninstall 包名称 执行此命令后会将package.json中dependencies的包记录删除

  • npm i 包名 -D(npm install 包名 --save-dev) 安装包到devdependencies节点 判断包应该安装到那个节点---下载时查看包的文档提示

包的分类:项目包,全局包

项目包--
1.开发依赖包(devDependencies,只在开发期间使用)
2.核心依赖包(开发和项目上线之后都会用到)

全局包:

i5ting_toc 是一个可以把md文档转成HTML页面的小工具,使用步骤如下 首先将其装为全局包 i5ting_toc -f 要转换的md文件路径 -o (-o表示自动在浏览器打开)

  • 规范的包的结构

    • 1.包必须以单独的目录而存在
    • 2.包的顶级目录下要必须包含package.json这个包管理配置文件
    • 3.package.json中必须包含name,version,main三个属性分别代表包的名字,版本号,包的入口
  • 发布包 npm publish

  • 删除包 npm unpublish 包名 --force 只能删除72小时的包,24小时不能重复发布

使用require()加载自定义模块时,必须指定以./或../开头的路径标识符。在加载自定义模块时, 如果没有指定这样的路径标识符,node会把它当作内置模块或第三方模块进行加载。

请求模块时,加载顺序如下:按确切文件名--补全js--补全json--补全node--加载失败,终端报错

第三方模块加载,如果没有找到对应的第三方模块,则会一层层向上搜索直到盘符根目录

目录当作模块标识符:

  • 1.在被加载的目录下查找一个叫做package.json的文件,并寻找main属性,作为require加载的入口
  • 2.如果目录里没有package.json文件,或者main入口不存在或无法解析,则Node.js会试图加载目录下的index.js文件
  • 3.如果以上两步都失败了,则Node.js会在终端打印错误消息,报告模块的缺失:Error:Cannot find module 'xxx'