认识node.js
- node.js是一个开源、跨平台的JavaScript运行时环境
- 运行时环境:一个时浏览器,最早的时候只认识HTML css,后续谷歌推出了v8引擎,提升了识别JS的能力;另外一个就是node,它是基于V8引擎,给我们提供了一个JS的运行环境。
- node选择了JS,不是JS选择了node;
node.js和浏览器的差别:
浏览器:BOM + DOM + ES;可以有模块化开发,可以用非模块化开发。
* DOM:浏览器提供的能力;
* BOM:html提供的能力;
* ES:JS语言的一个规范;
node.js:运行JS时直接运行;必须是模块化开发(CommonJS模块化语法);除了ES6模块化语法,其他ES6新特性都支持使用。
* 不需要放在html文档中,所以没有DOM;
* 直接在系统中运行,BOM也就没有了;
* 只剩下ES规范
node.js 基本命令行常用操作
* 返回上一级:输入命令 cd ..;
* 查询当前目录内的子目录:dir;
* 进入对应目录:cd 文件夹名称;
* 清屏:cls clear;
利用node执行js代码:
打开cmd(需要运行的js文件所在的目录),输入命令 node 文件名;
(也可以直接打开cmd,输入命令node,直接回车,进入一个线程,相当于在浏览器的控制台,可以在内部书写js代码;但是没有提示,书写的代码没办法保存。)
node的模块化:
所有的东西都是模块,分为自定义模块(自己写的),内置模块(nodejs提供的),第三方模块(别人写好上传到npm的,需要下载到本地使用)。
导出:node中每一个JS文件都自带一个module,
语法1:module.exports.属性名 = 属性值;(在默认对象内添加属性,导出的还是一个对象)
语法2:module.exports = 新值;(重新给默认对象赋值,导出的就是新值)
node中每一个js文件都自带一个exports这个变量,内部存储指向module.exports这个对象的地址;
语法3:exports.属性名 = 属性值;(在默认对象内添加一个属性,导出还是一个对象)
导入:node中每一个js文件都自带一个require;
语法:require('地址');返回值:返回这个导入文件的exports这个。
几个常用的内置模块:
1,内置模块fs:node提供的操作文件/文件夹的能力;
* 异步读取文件:fs.readFile('文件路径','配置项','回调函数')
文件路径:必须传;
配置项:选填(一般填 utf-8);
回调函数:必须填;
fs.readFile('./index.txt', 'utf-8', function (err, data){err: 如果读取失败, 会给一个 err,data: 读取成功,文件的内容})
* 同步读取文件:let data = fs.readFileSync('./index.txt', 'utf-8')
* 异步写入:fs.writeFile('./index123.txt', '你好', function (data) { console.log('写入完成')});
如果按照第一个参数找到文件,就去书写这个文件的内容(覆盖),如果按照第一个参数没有找到文件,就在指定位置新建一个文件,新建文件的值就是第二个参数。
2,内置模块path:node给我们提供的操作路径相关的内容。
常用的方法:join([路径片段1, 路径片段2, 路径片段3])
parse('路径')
rseolve('路径','文件名')
3,内置模块url:node给我们提供帮助解析url地址信息。
url.parse('url地址',是否深度解析(布尔值,true为深度解析,默认为false))
4,内置模块http:node给我们提供开启一个服务器的;
* 创建一个服务器:const server = http.createServer(function(req,res){})
req:表明前端的请求报文;
res:后端返回给前端的响应报文;
* 给服务器配置一个端口号(0~65535);server.listen((8080),()=>{})