node基础

2022-04-12  本文已影响0人  Zindex

node.js

node.js是基于v8引擎的JavaScript运行环境

终端快捷键

使用↑键可以快速定位到上一次执行的命令
使用tab键能够快速补全路径
使用esc键可以快速清空当前已输入命令
输入cls可以清空当前窗口

fs( file system )文件系统模块

fs模块,nodejs用来操作文件的模块

fs.readFile() 读取指定文件中的内容

fs.readFile(path[,options],callback)
const fs = require('fs')
fs.readFile('./files/1.txt','utf8',function(err,dataStr){
    if(err) return err
    console.log(dataStr)
})

如果读取成功err为null,如果读取失败,err的值为错误对象,dataStr的值为undefined

fs.writeFile() 写入文件或创建文件

fs.writeFile(fileName,data[,options],callback)

注意点:

  1. 重复使用writeFile会覆盖文件内容
  2. writeFile方法只能创建文件,不能创建文件夹

fs模块路径动态拼接问题:

在node执行路径命令时候,./ 和 ../ 是根据node执行时所在的位置开始执行的,很容易会导致从执行位置开始找文件。
解决此方法可以使用绝对路径

__dirname 基于当前文件所处的目录

在node执行路径命令时候,./ 和 ../ 是根据node执行时所在的位置开始执行的,使用 __dirname 就可以基于当前nodejs文件的路径开始找, __dirname就是当前文件的绝对路径。
多数情况下,使用 __dirname 之后依靠的就是绝对路径,如果使用+号拼接基本不会再跟 ./ 和 ../,如果使用path.join就可以用 ./和../

path 模块

path模块,nodejs用来处理路径的模块。

const path = require('path')

path.join() 路径拼接

path.join([...paths])

参数 ...paths :代表任意多个路径片段

返回值为string类型,例子:

const path = require('path')
const pathStr = path.join('/a','/b/c','../','./d','e')
console.log(pathStr)    //会输出a\b\d\e

path.basename() 获取路径最后一部分

path.basename(path[,ext])

参数path:表示一个路径的字符串
参数ext:表示文件拓展名,传入拓展名之后返回值就不带拓展名
返回值:表示路径中的最后一部分

const path = require('path')
let fpath = '/a/b/c/index.html'
let fullName = path.basename(fpath)
console.log(fullName) //返回index.html

let  notExt = path.basename(fpath,'html')
console.log(notExt)     //返回index

path.extname() 获取路径中的文件拓展名

path.extname(path)

参数path:表示一个路径的字符串
返回值:<string>文件的拓展名部分(带.)

http 模块

http 模块是nodejs官方提供的、用来创建web服务器的模块。通过http模块提供的 http.createServer() 方法,就可以创建服务器应用

创建基本服务器

创建基本服务器四个步骤:

  1. 引入http模块
const http = require('http')
  1. 调用http模块里的createServer方法
const server = http.createServer()
  1. 为服务器实例绑定request事件
server.on('request',(req,res)=>{
    回调函数执行内容
})
  1. 调用服务器实例的listen方法,参数1为端口号,纯Number类型,参数2为回调函数
server.listen(80,()=>{
    启动成功后执行的回调函数
})

req 请求对象

server.on('request',(req,res)=>{
    回调函数执行内容
})

服务器绑定事件中,回调函数的req对象拥有着许多包含 发出请求的客户端 的属性,例如

req.url     请求所需要的的url是什么(只包含后面的路径)
req.method 请求对象所使用的方法

res 响应对象

服务器绑定事件中,回调函数的req对象拥有着许多 服务器相关 的属性与方法,例如

res.end() 向客户端发送指定的内容,并结束这次请求的处理过程

res 响应头设置

响应头可以设置字符编码解决中文乱码问题

res.setHeader('Content-Type','text/html;charset=utf-8')

模块化

模块化加载

使用 require() 方法即可,加载内置模块和第三方模块直接写名字,加载自定义模块需要写上路径

module对象

每个模块都有一个module对象,里面有着很多属性,例如path、filename、exports

module.exports 向外共享模块作用域

modeule.exports.username = 'zs'
module.exports.sayHello = ()=>{
    console.log('hello')
}

exports 对象

由于 module.exports 单词写起来比较复杂,为了简化,node 提供了 exports 对象。
默认情况下exports 和 module.exports 指向同一个对象。
最终结果以 module.exports 为准

module.exports = {
    gender: 'man',
    age: 22
}
exports.username = 'zs'

最终另一个文件导入得到的是 module.exports 的东西.
为了防止混乱,尽量不要在一个模块中同时使用exports 和 module.exports

ComonJS模块化规范

  1. 每个模块内部,module变量代表当前模块。
  2. module变量是一个对象,它的exports/module.exports属性是对外接口
  3. require()方法用于加载模块。加载某个模块,其实是加载该模块的module.exports属性。

npm

npm 包共享平台,官网 [npmjs.com]。
Node Package Manager ,npm包管理工具,nodejs安装的时候会一起安装到电脑上

npm项目初始化

npm init -y

执行此命令,会生成一个package.json配置文件。
注意:命令只能在英文且没有空格的目录下成功运行

npm 国内镜像

查询当前下载包的地址和切换下载包的地址

npm config get registry 
npm config set registry=https://registry.npmmirror.com/    

或者使用nrm工具,安装-查询所有可用镜像源-切换为淘宝镜像源

nrm i nrm -g
nrm ls
nrm use taobao

npm 安装包命令

npm install 包的完整名称

简写形式

npm i 包的完整名称

安装指定版本的包,在包名后面接@然后写上版本号

npm i moment@2.22.2

安装包,并只在开发环境用到(记录到开发依赖上)

npm install 包名 --save-dev
//或简写形式,包名与杠D顺序可调换
npm i 包名 -D

安装全局包,运行环境下使用的包

npm install 包名 -g
npm i 包名 -g

引用包

const 包的名称 = require('包的名称')

通常,引用包的时候用的变量接收的那个变量名,通常和包同名

卸载包

npm uninstall 具体包的名字

npm uninstall moment

npm 自动创建的文件

初次安装包后,目录下会多出一个 node_modules 文件夹和 package-lock.json 文件,其中

package.json

dependencies 依赖节点

packagejson文件的此属性会记录该项目依赖哪些第三方npm包和版本号。

devDependencies 开发依赖节点

此属性会记录哪些包只在项目开发阶段会用到,在项目上线后不会用到的。

当我们拿到一个剔除了node_modules文件夹的项目时候,通常使用 npm install 命令(或npm i)安装所有denpendencies和devDependencies节点里记录的所有包

创建npm包

一个合格的npm包必须满足这几个条件

  1. 包必须以单独的目录而存在
  2. 包的顶级目录下必须包含 package.json
  3. package.json 中必须包含name,version,main。分别代表包的名字、版本号、包的入口

发布npm包的相关指令

登录到npm和发布包

npm login
npm publish

删除72小时内已发布的包

npm unpublish 包名 --force

模块加载机制

上一篇下一篇

猜你喜欢

热点阅读