一、什么是node.js?
1.node.js是一个基于Chrome v8引擎的JavaScript运行环境
2.node.js使用了一个事件驱动、非阻塞式 I/O的模式,使其轻量又高效
node.js功能:
事件驱动
非阻塞I/O模型【异步的输入输出,比如:文件操作、数据库操作等】
二、Node.js文件的运行
1.使用Node.js编译器----终端打个node进入node编译器
2.使用命令运行----node 空格 跟上文件名
三、Node.js文件实时监听改动
1.nodemon
nodemon测试工具的使用:npm -install -g nodemon
四、Node.js版本
1.current【最新的版本】---小白鼠
2.LTS——长期稳定版本
两个版本之间的故事:公司经历过收购和合并
五、Node.js的模块化问题
1.Node采用了common.js模块化
2.应用:
内置模块->可以直接使用:
require()模块引入方式
readFIle同步读
readFilesync异步读
两种转化字符:1.引入路径后面加上字符编码utf-8
2.tostring()
第三方模块->Node.js没有的 类似于插件
在当前文件中引入带有功能的插件
前端第三方模块全部都在一个网站中:www.npmjs.com
使用过程:
1.安装【npm/cnpm/yarn】
切换源:nrm use npm
2.cnpm i request -S/-D
-S 生产环境
-D 开发环境
这个是否存在跨域?
答:不存在,Node.js是运行在服务端的,不是浏览器端,没有同源策略
总结
第三方模块使用? 将来别人项目中使用了你没有用过的东西,怎么办?
1. npm.js 查阅文档
2. 先写单案例测试
3. 记录使用文档,记录自己博客中
自定义模块:自己创建,自己使用;类型:1.函数,2.对象,3.字符串
3.模块化解决的是什么问题?
js中可以引入其他类型文件
4.自定义模块上传实现步骤【公司中应用比较多】
1.创建文件夹,注意命名不要冲突
2.创建package.json文件
npm init /npm init -y
3.创建了index.js,里面封装任意一个功能
4.创建一个npm. js账号
发送一个邮箱连接激活【手动点】
5.保证我们当前的源是npm源
切换源$ nrm use npm
6.登录账号
$npm adduser
7.上传
$npm publish
深拷贝 -> 1. 递归 2. JSON序列化实现
JSON.stringify / JSON.parse
1. 字符串、对象互相转换
2. 拷贝 const newState = JSON.parse(JSON.stringify( state ))
querystring内置模块
1.使用场景
用于处理url上的查找字符串
1. querystring.parse string -> object
2. querystring.stringify object -> string
3. querystring.escape 中文转码
4. querystring.unescape 中文解码
path
1.使用场景
用于处理绝对路径/磁盘路径
const pathUrl = path.join( __dirname, 'aa') //\1911\1-Node.js\day01\code\5-内置模块\aa
const pathUrl = path.resolve( __dirname, 'aa') //\1911\1-Node.js\day01\code\5-内置模块\aa
join、resolve功能一样,在绝对路径后面添加
2.问题:浏览器中全局对象是?Node.js全局变量?
浏览器中全局对象是:window
Node.js的全局变量是:global