第一章 简单认识NodeJS
1. 简介
-
使用V8引擎开发的js运行环境 -
模块化开发,工程化开发的地基
2.node环境中的5个形参
node环境中,会将单个js文件中的所有代码,通过一个匿名函数包裹,以确保模块的封闭性。
-
参数
-
exports 导出成员的方法(不建议使用),不能重新赋值,会改变指向。 大概可以看成是下面这样。 let export = ?module.exports -
require 引入模块 require('./example.js') 引入相对路径下的 example.js 模块 require('./example') 引入相对路径下的example.js ;如果没有该文件则查找路径下是否有同名目录,如果有则引入该目录中的index.js ;如果没有index.js,则引入相对路径下package.json文件中main属性指定的入口文件;都没有则报错 require('example.js') 引入node_modules 里面的example.js 模块 require('example') 首先查找是否是node内置模块;如果不是则到node_modules里面去查找是否是 第三方模块 -
module 当前模块,他的exports属性,用于导出模块里面的成员 -
__filename__ 带有完整绝对路径的文件名 -
__dirname 目录的绝对路径。等同于path.dirname(__filename) (需要导入path模块)
3. Tips
-
this node环境中的全局作用域下this指向一个空对象 -
global node环境中的global 类似 浏览器环境中的 window对象 -
cjs 表示 CommonJS module。 esm 表示 ES module。NodeJS 使用的CJS标准。 webpack 打包时 ES6模块 会被打包成 CJS标准 以便兼容NodeJS -
nvm nvm管理nodejs版本 nvm常用命令 -
nrm nrm管理npm源 安装nrm npm i nrm -g nrm常用命令 -
cmder 美美的CMD控制台
4. npm包(模块)管理器
-
命令
-
npm init 初始化包描述文件 -
npm init -y 一路yes 生成默认的package.json -
npm config get registry (config可以省略)npm get registry 查询当前 包(模块)下载地址 -
npm config set registry http://... (同上)npm set registry http://... 设置 包(模块)下载地址 -
npm install 包名 缩写npm i 包名 npm install 缩写npm i 不加包名默认会下载 package.json中 dependencies(生产依赖) 属性和devDependencies(开发依赖)属性 中提及的包。
下载完成后会在package.json文件 dependencies 属性 保存下载的包的信息 package-lock.json 记录第三方包的详情(例如下载时快速定位下载地址) -
npm remove 包名 缩写 npm r 包名 -
npm install 工具包 --global 缩写npm i 工具包 -g 全局安装
5. yarn
-
npm和yarn命令对比 npm ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? yarn
npm init ? ? ? ? ? ? ? ? ? ? ? ? ? yarn init
npm init -y ? ? ? ? ? ? ? ? ? ? ? yarn init -y
npm install ? ? ? ? ? ? ? ? ? ? ? yarn
npm install xxx ? ? ? ? ? ? ? ? ? yarn add xxx
npm install --global xxx ? ? ? ? ? yarn global add xxx
npm uninstall xxx ? ? ? ? ? ? ? ? yarn remove xxx
npm install xxx@版本号 ? ? ? ? ? ? yarn add xxx@版本号
npm install xxx --save ? ? ? ? ? ? yarn add xxx
npm install xxx --save-dev ? ? ? ? yarn add xxx --dev
npm update --save ? ? ? ? ? ? ? ? yarn upgrade
npm run ? ? ? ? ? ? ? ? ? ? ? ? ? yarn run
npm run xxx ? ? ? ? ? ? ? ? ? ? ? yarn run xxx yarn太慢
6. cnpm
第二章 node内置模块
所有的模块都需要引入才能使用
1. path
-
路径分隔符
-
path.join() 根据NodeJS的系统环境,返回正确格式的路径地址 let url = path.join('a','b','c') ? ? ? # a\b\c
let baseurl = path.join(__dirname,url) # 当前文件的绝对路径\a\b\c -
path.resolve() 根据相对路径返回绝对路径 let relative_path_to_absolute_path = path.resolve('./a/b/c/example.txt') #文件的绝对路径\a\b\c\example.txt
2. fs 文件系统(file system)
由于Node环境执行的JavaScript代码是服务器端代码,所以,绝大部分需要在服务器运行期反复执行业务逻辑的代码,必须使用异步代码,否则,同步代码在执行时期,服务器将停止响应,因为JavaScript只有一个执行线程。
服务器启动时如果需要读取配置文件,或者结束时需要写入到状态文件时,可以使用同步代码,因为这些代码只在启动和结束时执行一次,不影响服务器正常运行时的异步执行。
文件描述符:File descriptor,简称fd',当应用程序请求内核打开/新建一个文件时,内核会返回一个文件描述符用于对应这个打开/新建的文件,其fd本质上就是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开
原文链接:彻底搞懂文件描述符fd_Linux-IT乾坤技术博客
-
异步
-
fs.open(path[,flags[,mode]],callback(err,fd)) 打开文件
无返回值 -
fs.readFile() 读文件 -
fs.writeFile() 写文件 -
fs.stat() 获取文件信息 -
fs.close() 关闭文件
-
同步
-
Buffer Buffer存储的是二进制机械码,以16进制呈现。一个字节8位,可以存储0~255种状态。如果溢出,则只存储后8位。(用法和数组类似)
-
Buffer.from() 字符串转Buffer数据类型 -
Buffer.toString() Buffer数据类型转字符串 -
Buffer.alloc() 创建一个Buffer对象(不设置fill,则默认填满0) -
Buffer.allocUnsafe() 创建一个Buffer对象(从内存中随机截取一段数据,可能包含敏感数据,也可能使垃圾数据),申请空间速度快。
3. stream 流
4. http
5.crypto
第三章 第三方模块(包)
未完待续。。。。。
|