Node.js
一、Node.js1、是一个基于 Chrome V8 JavaScript 引擎构建的 JavaScript 运行时环境。简单来说Node.js 让 JavaScript 可以在服务器端运行而不仅仅局限于浏览器中。2、js可以基于Node.js 写后端逻辑二、安装Node.js1、安装教程https://www.runoob.com/nodejs/nodejs-install-setup.html2、安装成功使用node -v校验是否成功三、Node.js的使用1、在node.js环境中执行js代码在对应的js文件中打开终端运行node js文件名四、fs读、写文件1、是 Node.js 里的一个内置模块全称是File System意思是文件系统2、它的作用是用 JavaScript 操作文件和文件夹读取文件写入文件创建文件删除文件创建文件夹判断文件是否存在3、使用方式const fs require(fs);1读取文件const fs require(fs); fs.readFile(./test.txt, utf8, function (err, data) { if (err) { console.log(读取文件失败); console.log(err); return; } console.log(读取文件成功); console.log(data); });2写入文件const fs require(fs); fs.writeFile(./test.txt, 你好 Node.js, utf8, function (err) { if (err) { console.log(写入文件失败); console.log(err); return; } console.log(写入文件成功); });3__dirname是 Node.js 里的一个特殊变量表示当前文件所在的文件夹的绝对路径path.join相当于const fs require(fs); const path require(path); const filePath path.join(__dirname, test.txt); fs.readFile(filePath, utf8, function (err, data) { if (err) { console.log(读取失败); console.log(err); return; } console.log(data); });五、http1、是 Node.js 里的一个内置模块用来创建HTTP 服务。2、服务器代码const http require(http); const server http.createServer(function (req, res) { console.log(请求地址, req.url); console.log(请求方式, req.method); res.setHeader(Content-Type, text/html; charsetutf-8);//防止中文乱码 res.end(请求成功);//将内容响应给客户端 }); server.listen(3000, function () { console.log(服务器启动成功http://localhost:3000); });3、根据不同的url返回不同的html内容const http require(http); const server http.createServer((req, res) { res.setHeader(Content-Type, text/html; charsetutf-8); if (req.url /) { res.end(首页); } else if (req.url /login) { res.end(登录页); } else { res.end(404); } }); server.listen(3000, () { console.log(服务器启动成功http://localhost:3000); });六、模块化Nodejs遵循了CommonJS模块化规范CommonJS规定了模块的特性和各模块之间如何相互依赖。1、把代码拆成多个文件用的时候再引入。2、Node.js 模块主要分为3 类1 内置模块Node.js 自带的模块不需要安装直接require使用。const fs require(fs);const path require(path);const http require(http);2自定义模块自己写的 JS 文件然后用require引入。3第三方模块包https://www.npmjs.com/别人写好的模块需要先用npm安装再使用。常见第三方模块express Web服务器框架mysql 操作 MySQL 数据库axios 发送请求dayjs 处理时间比如安装express npm install expressconst express require(express); const app express(); app.get(/, (req, res) { res.send(首页); }); app.listen(3000, () { console.log(服务器启动成功); });3、module是 Node.js 里每个 JS 文件自带的一个对象。1module 表示当前这个模块也就是当前这个 JS 文件2console.log(module);4、Node.js 模块化作用域1每一个 JS 文件都是一个独立的模块。模块里面的变量、函数默认只能在当前文件里使用。2想给别的文件用必须导出//test.js文件 const name 张三; function sayHello() { console.log(你好); } //导出给别的文件使用 module.exports { name, sayHello, }; //index.js文件 const obj require(./test);//引入test.js文件 console.log(obj.name); obj.sayHello();3module.exports等同于exports同一个文件同一用法尽量不要同时用无论用module.exports还是exportsrequire模块的时候得到的是module.exports指向的对象5、Node.js 项目里初次装包一般会多出这几个东西1node_modules 真正安装的包package.json 项目说明书记录你用了哪些包——npm init -y生成 package.json文件package-lock.json 锁定包版本保证大家安装一致2npm i会自动安装最新的包可通过指定具体版本——npm i dayjs1.11.10npm i -g 全局包3装包后它里面会多一个dependencies记录安装了哪些包核心依赖包dependencies开发阶段与上线都要用到的包安装到dependencies默认开发依赖包devDependencies只在开发阶段用的包安装到devDependencies——npm i 包名 --save-dev缩写npm i 包名 -D4npm uninstall卸载包5包下载慢默认国外的镜像要切换到国内淘宝镜像nrm切换下包镜像源6i5ting_toc 是一个可以把Markdown 文件转换成 HTML 页面的 npm 工具它常用于把.md笔记生成一个带目录的网页npm i i5ting_toc -g //下载包i5ting_toc -f 文件名.md //转换7模块的加载机制Node.js 模块加载顺序1. 内置模块直接加载2. 自定义模块用 ./ 或 ../ 找文件3. 第三方模块去 node_modules 找4. 加载过的模块会缓存不会重复执行自定义模块加载先文件后目录文件.js.json.node目录package.json - main找不到再找index.jsindex.jsonindex.node