>  기사  >  웹 프론트엔드  >  이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

青灯夜游
青灯夜游앞으로
2023-01-12 20:28:2020787검색

이 기사에서는 수많은 코드와 다이어그램을 통해 Node.js에 대한 심층적인 분석을 제공할 것입니다. 주요 내용에는 모듈식 처리, 패키지의 기본 적용, Express, 크로스 도메인, Mysql 데이터베이스 운영 등이 포함됩니다. 모두에게 도움이 될 거예요!

이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명). Node.js 소개이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) Node.js란 무엇입니까이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

Node.js는 호출 내장 입니다. ApIChrome V8 엔진의 js 실행 환경을 기반으로 합니다. 이전에 로컬에 흩어져 있던 몇 가지 지식 사항을 요약하여 오늘 통합하여 보내 드리겠습니다. Node.js是一个调用内置ApI并且基于Chrome V8引擎的js运行环境,之前自己在本地总结了一些零散的只知识点,今天整合一下发出来。

官网地址: https://nodejs.org/zh-cn/

이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) Node.js可以做什么이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

①基于 Express 框架(http://www.expressjs.com.cn/),可以快速构建 Web 应用。【相关教程推荐:nodejs视频教程编程教学

②基于 Electron 框架(https://electronjs.org/),可以构建跨平台的桌面应用

③基于restify框架(http://restify.com/),可以快速构建 API 接口项目

④读写和操作数据库、创建实用的命令行工具辅助前端开发、etc…

이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) Node.js的安装이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

下载链接:https://nodejs.org/en/

이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

  • LTS:长期稳定版
  • Current:尝鲜版

查看版本号:node –v

이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

学习路线:JavaScript 基础语法 + Node.js 内置 API 模块(fs、path、http等)+ 第三方 API 模块(express、mysql 等)

이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).4 Node.js的使用이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

命令:node js文件名

이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

终端快捷键

①使用 ↑ 键,可以快速定位到上一次执行的命令

②使用 tab 键,能够快速补全路径

③使用 esc 键,能够快速清空当前已输入的命令

④输入 cls 命令,可以清空终端

二、模块化处理이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 什么是模块化이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

定义:把复杂问题简单化,分成一个个小问题。编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并互相依赖的多个小模块

把代码进行模块化拆分的好处

  • 提高了代码的复用性
  • 提高了代码的可维护性
  • 可以实现按需加载
이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 内置模块이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

定义:由Node.js官方提供,如fs、http、path

이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) fs文件系统模块

(이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명))基本用法
// 引用内部模块
const fs = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;fs&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);

// 文件读取
fs.readFile(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;../files/test-fs.txt&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;utf-8&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (err, results) => {
    if (err) return console.log(err.message);// 错误信息err null
    console.log(results);
})

// 文件写入
fs.writeFile(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;../files/test-fs.txt&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;Node.js&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;utf-8&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (err) => {
    if (err) return console.log(err.message);
    console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;写入文件成功!&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
})

注意点

  • readFile只能读取已经存在的文件
  • writeFile写入内容已经有文件,则创建同名文件,再写入文件
  • readFile需要在writeFile后面读取,不然出错
(이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명))防止动态拼接

이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

  • node 命令自动将当前路径和js脚本文件路径拼接,而不管.day总复习这个路径
  • 我们可以使用绝对路径改善

이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

(이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명))路径问题
  • ./ 表示当前目录 ../ 表示父级目录../..表示祖父目录
  • 动态拼接,首部不能出现./ ../,否则拼接失败 /…/

이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) path内置模块

定义:拼接绝对路径

🎜공식 웹사이트 주소🎜: https://nodejs.org/zh-cn/🎜🎜🎜🎜이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) Node.js가 할 수 있는 일🎜🎜🎜①Express 기반 코드>프레임워크(http://www.expressjs.com.cn/) - 웹 애플리케이션을 빠르게 구축할 수 있습니다. [권장 관련 튜토리얼: <a href="https://www.php.cn/course/list/%EC%9D%B4%20%EA%B8%B0%EC%82%AC%EB%8A%94%20Node.js%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%8B%AC%EC%B8%B5%EC%A0%81%EC%9D%B8%20%EC%9D%B4%ED%95%B4%EB%A5%BC%20%EC%A0%9C%EA%B3%B5%ED%95%A0%20%EA%B2%83%EC%9E%85%EB%8B%88%EB%8B%A4.%20(%EA%B7%B8%EB%A6%BC%EA%B3%BC%20%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%A1%9C%20%EC%9E%90%EC%84%B8%ED%95%9C%20%EC%84%A4%EB%AA%85)4.html" target="_blank">nodejs 동영상 튜토리얼🎜, </a><a href="https://www.%20php.cn/course.html" target="_blank" textvalue="프로그래밍 교육">프로그래밍 교육🎜]🎜🎜 ② <code>Electron 프레임워크(https://electronjs.org/)를 기반으로 크로스 플랫폼 데스크톱 애플리케이션 구축 가능🎜🎜 ③ restify 프레임워크(http://restify.com/)를 기반으로 API 인터페이스 프로젝트를 빠르게 구축할 수 있습니다🎜🎜 ④ 읽기, 쓰기 및 운영 데이터베이스, 프런트엔드 개발 등을 지원하는 실용적인 명령줄 도구 만들기...🎜🎜🎜🎜이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) Node.js 설치🎜🎜🎜🎜다운로드 링크: https:// nodejs.org/en/🎜🎜 🎜QQ 스크린샷 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)0이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)0908이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)5이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)09🎜
  • 🎜LTS 🎜: 장기 안정 버전
  • 🎜Current🎜: 얼리 어답터 버전
🎜버전 번호 보기: 노드 –v🎜🎜QQ 스크린샷 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)0이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)0908이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)5이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)5🎜🎜🎜학습 경로: JavaScript 기본 구문 + Node.js 내장 API 모듈(fs, path, http 등) + 타사 API 모듈(express, mysql 등) 🎜🎜🎜
🎜🎜이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).4 Node.js🎜🎜🎜명령 사용: node js 파일 이름🎜🎜QQ 스크린샷 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)0이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)0908이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)5이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)09🎜🎜🎜터미널 단축키🎜:🎜🎜 ①마지막으로 실행한 명령을 빠르게 찾으려면 ↑ 키를 사용하세요🎜🎜 ②탭 키를 사용하면 경로를 빠르게 완성할 수 있습니다🎜🎜 ③esc 키를 사용하세요 키를 누르면 현재 입력된 명령을 빠르게 지울 수 있습니다🎜🎜4cls 명령을 입력하면 터미널을 지울 수 있습니다🎜🎜🎜🎜 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명). 모듈식 처리🎜🎜🎜🎜이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 모듈화란 무엇인가🎜🎜🎜이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)🎜🎜🎜Definition🎜: 복잡한 문제를 단순화하고 더 작은 문제로 나눕니다. 프로그래밍 분야의 모듈화고정된 규칙을 준수하고 대용량 파일을 독립적이고 상호의존하는 여러 으로 분할하는 것을 의미합니다. 작은 모듈🎜🎜🎜코드 모듈화의 이점🎜:🎜<ul> <li>코드 재사용성 향상</li> <li>코드 유지 관리성 향상</li> li><li>주문형 로딩 가능 </li> </ul>🎜<a id="이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)__78">🎜🎜이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 내장 모듈 🎜🎜🎜🎜Definition🎜: Node.js에서 공식 제공(예: <code> fs, http, path) code>🎜<h4><a id="이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)_fs_8이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)">🎜🎜이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) fs 파일 시스템 모듈 🎜</a></h4> <h5><a id="이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)_84">🎜 (이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)) 기본 사용법</a></h5><pre class="brush:js;toolbar:false;">const fs = require(&amp;#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;fs&amp;#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;); const path = require(&amp;#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;path&amp;#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;); const fpath = path.join(__dirname, &amp;#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/../files/test-fs.txt&amp;#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;); fs.readFile(fpath, &amp;#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;utf-8&amp;#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (err, results) =&gt; { console.log(__dirname); console.log(path.basename(fpath, &amp;#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;.txt&amp;#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;)); console.log(path.extname(fpath)); if (err) return console.log(err.message); console.log(results); }) // test-fs // .txt // Node.js</pre> 🎜🎜Notes🎜🎜<ul> <li> <code>readFile은 기존 파일만 읽을 수 있습니다.
  • writeFile 내용을 쓸 파일이 이미 있는 경우, 같은 이름의 파일을 만든 다음 파일에 쓰기
  • readFilewriteFile 다음에 읽어야 합니다. 그렇지 않으면 오류가 발생합니다
  • 🎜(이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)) 동적 접합 방지
    🎜여기에 그림 설명 삽입🎜
    • node 명령은 현재 경로를 js 스크립트 파일 경로접속, <code>.day에 관계없이 항상 이 경로를 검토하세요
    • 절대 경로를 사용하여 개선할 수 있습니다
    🎜 여기에 이미지 설명 삽입🎜
    🎜(이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)) 경로 문제
    • ./ 는 현재 디렉터리 ../ 는 상위 디렉터리 를 의미합니다. ./ ..는 할아버지 디렉터리를 나타냅니다.
    • 동적 접합, 헤더는 ./ ../ 나타날 수 없습니다. 그렇지 않으면 🎜접합이 실패합니다🎜 /…/

    🎜🎜이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 경로 내장 모듈🎜

    🎜🎜Definition🎜: 절대 경로🎜 연결
    • path.join()
    • path.basename()
    • path.extname()
    const fs = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;fs&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    
    const path = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;path&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    
    const fpath = path.join(__dirname, &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/../files/test-fs.txt&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    
    fs.readFile(fpath, &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;utf-8&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (err, results) => {
        console.log(__dirname);
        console.log(path.basename(fpath, &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;.txt&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;));
        console.log(path.extname(fpath));
    
        if (err) return console.log(err.message);
        console.log(results);
    })
    // test-fs
    // .txt
    // Node.js

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) http内置模块

    定义Node.js提供创建web服务器

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    (이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)) 初始化
    // 导入http模块
    const http = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;http&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    
    //创建web服务器实例
    const server = http.createServer();
    
    //绑定request事件,监听客户端请求
    server.on(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;request&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (req, res) => {
        let str = `路径 ${req.url} 方法 ${req.method}`;
        console.log(str);
        // 向客户端发送中文前,设置响应头
        res.setHeader(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;Content-Type&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;text/html;charset=utf-8&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
        res.end(str);
    })
    
    
    //启动服务器
    server.listen(80, () => {
        console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;http://이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)7.0.0.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })
    (이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)) web服务器

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    • 根据浏览器访问的url地址不同,返回相应的绝对路径
    const fs = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;fs&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    const http = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;http&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    const path = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;path&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    const server = http.createServer();
    
    let fpath = &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;;
    server.on(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;request&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (req, res) => {
        if (req.url === &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;) {
            fpath = path.join(__dirname + &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/../files/clock/index.html&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
            console.log(__dirname);
            console.log(fpath);
        }
        else {
            fpath = path.join(__dirname + &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/../files/clock&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9; + req.url);
        }
        fs.readFile(fpath, &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;utf-8&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (err, results) => {
            if (err) res.end(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;404 not find&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
            res.end(results);
        })
    })
    
    server.listen(80, () => {
        console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;http://이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)7.0.0.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })
    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 自定义模块이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    定义:用户自定义的js模块

    //引入本地文件
    const custom = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;./0이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)-node.js的使用&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    注意:自定义模块开头必须有./ …/

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).4 外部模块이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    定义:由第三方提供,使用前需要下载

    //下载外部导入
    const moment = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;moment&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    监听nodemon

    npm i nodemon -g

    代替node使用nodedmon每次修改内容不需要重启服务器,自动监听

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).5 模块化处理이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    模块作用域定义:和函数一致,当前模块定义的方法、变量,只能在当前模块访问,防止变量污染

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    暴露:通过module.exports或者exports暴露出去,使用 require() 方法导入模块时,导入的结果,永远以module.exports 指向的对象为准

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).6 加载机制이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    定义一次加载缓存,从缓存加载 内置模块加载优先级MAX

    三、包的基本应用이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    :概念像node.js的第三方模块,包是基于内置模块封装出来的,提供了更高级、更方便的 API,极大的提高了开发效率

    npm: 包管理工具

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 使用流程이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>
    • npm安装包
    • js导入包
    • 根据开发文档使用包
    // npm i moment
    const moment = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;moment&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    const date = moment().format(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;YYYY-MM-DD HH:mm:ss&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    console.log(date);//이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)0이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)-09-이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)0 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)0:4이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명):이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)4
    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 版本问题이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    包的版本号是以“点分十进制”形式进行定义的,总共有三位数字,例如 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)4.0
    其中每一位数字所代表的的含义如下:

    • 第이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)位数字:大版本

    • 第이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)位数字:功能版本

    • 第이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)位数字:Bug修复版本

      版本号提升的规则:只要前面的版本号增长了,则后面的版本号归零。

    npm i comment@이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)
    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 参数问题이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    • node_modules 文件夹用来存放所有已安装到项目中的包。require() 导入第三方包时,就是从这个目录中查找并加载包。
    • package-lock.json 配置文件用来记录 node_modules 目录下的每一个包的下载信息,例如包的名字、版本号、下载地址等。
    • package.json项目的名称、版本号、描述等、用到了哪些包、开发期间使用的包、部署使用的包
      • devDependencies :开发依赖
      • dependencies :核心依赖
    • 注意:程序员不要手动修改 node_modules 或 package-lock.json 文件中的任何代码,npm 包管理工具会自动维护它们,今后在项目开发中,一定要把 node_modules 文件夹,添加到 .gitignore 忽略文件中
    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).4 npm命令이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>
    //安装包 
    npm i moment
    //安装全局包
    npm i 包名 -g
    //安装包到开发阶段到devDependencies
    npm i 包名 -D
    //安装所有依赖包 
    npm install
    //卸载包 
    npm uninstall moment
    //查看已经安装的局部包
    npm ls
    //查看全局安装的包
    npm ls -g

    查看包命令:https://blog.csdn.net/qq_4이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)664096/article/details/이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)797이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)60

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).5 下载镜像이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    //查看当前npm镜像
    npm config get registry
    //nrm镜像工具,安装为全局镜像
    nrm ls
    //切换镜像
    nrm use taobao

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).6 开发自己的包이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    一个规范的包,它的组成结构,必须符合以下 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 点要求:

    • 包必须以单独的目录而存在
    • 包的顶级目录下要必须包含 package.json 这个包管理配置文件
    • package.json 中必须包含 name,version,main 这三个属性,分别代表包的名字、版本号、包的入口

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    发布包到npm

    • 镜像切换到npm上
    • npm login登录
    • 发布包 npm publish
    • 删除包 npm unpublish 包名 --force

    资源

    • https://www.npmjs.com/ 网站上搜索自己所需要的包
    • https://registry.npmjs.org/ 服务器上下载自己需要的包
    四、Express이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>4.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 简介이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    Express:基于Node.js http进一步封装,更加高级的Web开发框架

    对于前端程序员来说,最常见的两种服务器,分别是:

    • Web 网站服务器:专门对外提供 Web 网页资源的服务器
    • API 接口服务器:专门对外提供 API 接口的服务器
    4.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 基本使用이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>
    //导入包
    const express = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;express&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    //创建服务器
    const app = express();
    
    app.get(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/user&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (req, res) => {
        res.send({ 男: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)8&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, age: 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)8 });
    })
    
    app.post(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/user&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (req, res) => {
        res.send(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;post请求&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })
    
    app.get(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (req, res) => {
        //req.query  ?name=zs&age=이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)8  这种数据
        //http://이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)7.0.0.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)?name=zs&age=이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)8
        console.log(req.query);
    })
    app.post(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/:id&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (req, res) => {
        //动态匹配参数
        console.log(req.params);
    })
    
    //启动服务器
    app.listen(80, () => {
        console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;http://이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)7.0.0.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })
    4.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 托管静态资源이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    定义通过路径暴露文件,省去文件路径的描写

    const express = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;express&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    
    const app = express();
    
    //托管静态资源,不需要访问
    app.use(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/public&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, express.static(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;../files/clock&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;));
    
    app.listen(80, () => {
        console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;http://이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)7.0.0.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })

    推荐VScode插件:postcode

    Express 的中文官网: http://www.expressjs.com.cn/

    4.4 路由이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    定义:客户端与服务器映射关系

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    4.4.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 简单挂载

    //导入包
    const express = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;express&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    //创建服务器
    const app = express();
    
    app.get(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/user&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (req, res) => {
        res.send({ 男: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)8&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, age: 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)8 });
    })
    
    app.post(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/user&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (req, res) => {
        res.send(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;post请求&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })
    //启动服务器
    app.listen(80, () => {
        console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;http://이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)7.0.0.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })

    4.4.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 模块化路由

    为了方便对路由进行模块化的管理,Express 不建议将路由直接挂载到 app 上,而是推荐将路由抽离为单独的模块

    将路由抽离为单独模块的步骤如下:

    • 创建路由模块对应的 .js 文件

    • 调用express.Router()函数创建路由对象

    • 向路由对象上挂载具体的路由

    • 使用 module.exports 向外共享路由对象

    • 使用app.use()函数注册路由模块

    创建路由对象

    const express = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;express&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);//导入包
    
    const router = express.Router();//创建路由对象
    
    //绑定路由规则
    router.get(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/user/list&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (req, res) => {
        res.send(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;user list message&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })
    
    router.post(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/user/add&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (req, res) => {
        res.send(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;user add message&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })
    
    //向外导出路由对象
    module.exports = router;

    使用路由对象

    const express = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;express&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    const app = express();
    
    const router = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;./이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)-模块化路由&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    
    app.use(router);
    
    app.listen(80, () => {
        console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;http://이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)7.0.0.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })
    4.5 中间件이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    中间件:与路由处理函数不同,必须包含next参数

    4.5.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 基本使用

    const express = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;express&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    const app = express();
    //全局中间件的简化形式
    app.use((req, res, next) => {
        console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;正在使用全局中间件&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
        next();
    });
    
    app.get(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;,(req, res) => {
        res.send(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;Get message&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })
    
    
    app.listen(80, () => {
        console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;http://이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)7.0.0.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })

    注意

    • 多个中间件共享req,res,上游设置好,下游的中间件/路由使用

    • 中间件定义先后顺序执行

    • 局部生效的中间件,定义在

      • app.get(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;,中间件,(req, res) => {
            res.send(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;Get message&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
        })
      • 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    • 路由之前调用中间件

    • next()函数不能忘,后面不用写内容

    4.5.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 中间件分类

    (이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명))应用
    const express = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;express&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    const app = express();
    
    //全局中间件
    app.use((req, res, next) => {
        console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;全局中间件&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
        next();
    })
    //局部中间件
    function mw(req, res, next) {
        console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;局部中间件&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
        next();
    }
    
    app.get(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, mw, (req, res) => {
        res.send(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;server is visting&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })
    app.listen(80, () => {
        console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;http://이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)7.0.0.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })
    (이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명))路由

    定义:绑定到 express.Router() 实例上的中间件

    (이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명))错误

    定义捕获项目错误,防止出错,在所有路由之后定义

    const express = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;express&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    const app = express();
    
    
    app.get(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (req, res) => {
        throw new Error(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;服务器出错&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
        res.send(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;server is visting&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })
    
    
    //全局中间件
    app.use((err, req, res, next) => {
        console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;Error!&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9; + err.message);
        res.send(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;Error!&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9; + err.message);
        next();
    })
    
    app.listen(80, () => {
        console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;http://이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)7.0.0.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })
    //Error!服务器出错
    (4)Express 内置

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    const express = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;express&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    const app = express();
    
    // express.json()解析JSON请求体
    app.use(express.json());
    
    //解析application/x-www-
    app.use(express.urlencoded({ extended: false }));
    
    app.post(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/user&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (req, res) => {
        console.log(req.body);
    })
    
    app.post(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/book&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (req, res) => {
        console.log(req.body);
    })
    
    app.listen(80, () => {
        console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;http://이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)7.0.0.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })
    // http://이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)7.0.0.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)
    // { name: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;zs&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, age: 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)8 }
    // [Object: null prototype] { name: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;西游记&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9; }
    (5)第三方
    • npm install body-parse
    • require导入
    • app.use()为全局
    const express = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;express&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    const app = express();
    
    const parser = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;body-parser&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    
    app.use(parser.urlencoded({ extended: false }));
    
    app.post(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/book&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (req, res) => {
        console.log(req.body);
    })
    
    app.listen(80, () => {
        console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;http://이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)7.0.0.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })

    注意:Express 内置的 express.urlencoded 中间件,就是基于 body-parser 这个第三方中间件进一步封装出来的。

    4.6 自定义中间件이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    封装中间件

    const querystring = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;querystring&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    
    function parsebody(req, res, next) {
        let str = &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;;
        req.on(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;data&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (result) => {
            str += result;
        })
        req.on(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;end&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, () => {
            const body = querystring.parse(str);
            req.body = body;
            next();
        })
    }
    
    module.exports = parsebody;

    测试中间件

    const express = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;express&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    const app = express();
    const parsebody = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;./이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)4-自定义中间件&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    
    app.use(parsebody);
    
    app.post(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/user&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (req, res) => {
        res.send(req.body);
        console.log(req.body);
    
    })
    
    app.listen(80, () => {
        console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;http://이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)7.0.0.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })
    4.7 接口이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>
    const express = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;express&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    const app = express();
    
    const router = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;./이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)5-接口问题&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    app.use(router);
    
    app.listen(80, () => {
        console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;http://이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)7.0.0.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    })

    4.7.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) GET接口

    const express = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;express&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    
    const apiRouter = express.Router();
    
    apiRouter.get(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/user&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (req, res) => {
        const query = req.query;
        res.send({
            status: 0,
            msg: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;GET 请求成功&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;,
            data: query
        });
    })
    module.exports = apiRouter;

    4.7.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) POST接口

    apiRouter.use(express.urlencoded({ extended: false }));
    
    apiRouter.post(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;/user&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, (req, res) => {
        const body = req.body;
        res.send({
            status: 0,
            msg: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;POST 请求成功&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;,
            data: body
        });
    })

    4.7.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) PUT接口

    4.7.4 DELETE接口

    4.7.5 区别

    https://blog.csdn.net/qq_4이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)85/article/details/이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)985이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)94

    https://zhuanlan.zhihu.com/p/이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)5454697

    五、跨域이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>5.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) CORS이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    5.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 原理

    概念:由Http响应头构成,决定浏览器是否阻止js代码获取资源,在服务器端配置

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    5.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 响应头

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    //只允许特定的域名访问、*代表全部
        res.setHeader(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;Access-Control-Allow-Origin&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;http://www.baidu.com&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    //配置请求头信息
        res.setHeader(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;Access-Control-Allow-Headers&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;Content-Type,X-Custom-Header&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    //配置请求头方法 * 代表全部
        res.setHeader(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;Access-Control-Allow-Methods&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;GET,POST,DELETE,PUT&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);

    5.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 分类

    (이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명))简单请求
    • 请求方式:GET、POST、HEAD
    • HTTP 头部信息不超过以下几种字段无自定义头部字段、Accept、Accept-Language、Content-Language、DPR、Downlink、Save-Data、Viewport-Width、Width 、Content-Type(只有三个值application/x-www-form-urlencoded、multipart/form-data、text/plain)
    • 客户端与服务器只发送一次请求
    (이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명))预检请求
    • 请求方式:GET、POST、HEAD之外的方式
    • 自定义头部字段
    • OPTION预检,成功后发送带有数据的请求
    5.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) JSONP이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    概念:只支持GET请求

    六、Mysql数据库이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    定义组织存储管理数据仓库

    6.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) SQL命令이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    6.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 查询

    select * from userswhere id>이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) and id <h4>
    <a id="6이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)__89이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)"></a>6.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 插入</h4><pre class="brush:php;toolbar:false">insert into users(username,password) values(이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;jack이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;,이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;666이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;)

    6.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 更新

    update users set password=이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;666666이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;where username=이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;jack이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;

    6.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).4 删除

    delete from users
    where id=9
    6.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) Node.js使用이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    6.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 初始化

    • 导包:npm i mysql
    //引入mysql
    const mysql = require(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;mysql&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
    //建立数据库连接
    const db = mysql.createPool({
        url: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)7.0.0.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;,//数据库IP地址
        user: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;root&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;,//账号
        password: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)456&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;,//密码
        database: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;test_db&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;//操作哪一个数据库
    });

    6.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 查询

    const queryStr = &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;select * from users&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;;
    db.query(queryStr, (err, results) => {
        if (err) return console.log(err.message);
        console.log(results);
    })
    
    PS E:\FED\js\node.js\node.js—资料\day总复习\code> node .\이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)8-mysql操作.js
    [
      RowDataPacket { id: 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명), username: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;zz&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, password: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, status: 0 },
      RowDataPacket { id: 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명), username: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;ls&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, password: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;abc&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, status: 0 },
      RowDataPacket { id: 4, username: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;jony&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, password: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;456&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, status: 0 }
    ]

    6.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 插入

    const user = { username: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;superman&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, password: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;jknad&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9; };
    const insertStr = &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;insert into users set ?&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;;
    db.query(insertStr, user, (err, results) => {
        if (err) return console.log(err.message);
        if (results.affectedRows == 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)) {
            console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;插入数据成功&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
        }
    })
    //插入数据成功

    6.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).4 更新

    const user = { id: 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)0, username: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;super&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;, password: &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)456&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9; };
    const updateStr = &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;update users set ? where id=?&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;;
    db.query(updateStr, [user, user.id], (err, results) => {
        if (err) return console.log(err.message);
        if (results.affectedRows == 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)) {
            console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;更新数据成功&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
        }
    })

    6.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).5 删除

    (이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)) 一般删除
    const deleteStr = &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;delete from users where id=?&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;;
    db.query(deleteStr, 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)0, (err, results) => {
        if (err) return console.log(err.message);
        if (results.affectedRows == 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)) {
            console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;删除成功&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
        }
    })
    (이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)) 标记删除
    const deleteStr = &#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;update users set status=이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) where id=?&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;;
    db.query(deleteStr, 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)0, (err, results) => {
        if (err) return console.log(err.message);
        if (results.affectedRows == 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)) {
            console.log(&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;删除成功&#이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)9;);
        }
    })
    七、前后端的身份认证이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>7.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) Web开发模式이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    7.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 基于服务端渲染的传统 Web 开发模式

    概念:服务端在后台拼接html页面,发送给客户端,不需要ajax

    特点

    • 前端耗时少
    • 有利于SEO
    • 占用服务端资源
    • 不利于前后端分离开发

    7.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 基于前后端分离的新型 Web 开发模式

    概念:后端提供API接口,前端通过ajax调用接口

    特点

    • 开发体验好
    • 用户体验好
    • 减轻服务器渲染压力
    • 不利于SEO

    不谈业务场景而盲目选择使用何种开发模式都是耍流氓

    • 예를 들어 엔터프라이즈 수준 웹사이트의 경우 주요 기능은 복잡한 상호 작용 없이 표시되며 우수한 SEO가 필요하므로 서버 측 렌더링을 사용해야 합니다. 企业级网站,主要功能是展示而没有复杂的交互,并且需要良好的 SEO,则这时我们就需要使用服务器端渲染
    • 而类似后台管理项目交互性比较强,不需要考虑 SEO,那么就可以使用前后端分离的开发模式
    • 另外,具体使用何种开发模式并不是绝对的,为了同时兼顾了首页的渲染速度和前后端分离的开发效率,一些网站采用了首屏服务器端渲染 + 其他页面前后端分离的开发模式
    7.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 身份认证이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    概念:通过不同的手段(验证码、密码、人脸、指纹...),认证客户的身份

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    7.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) Session认证机制이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    7.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) Cookie

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    Cookie:存储在浏览器不超过4KB字符串,键值对形式存储

    • 自动发送
    • 域名独立
    • 过期时限
    • 4KB限制
    • 容易伪造,不建议存放隐私数据

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    7.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) Session

    核心会员卡+pos机认证

    이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    • npm install express-session
    • 백엔드 관리 프로젝트와 유사하게 상호작용은 상대적으로 강력하며 SEO를 고려할 필요가 없습니다. 프론트엔드와 백엔드 분리 개발 모델

    또한 홈페이지의 렌더링 속도와 프론트엔드와 프론트엔드 분리의 개발 효율성, 일부 웹사이트는 첫 번째 화면 서버측 렌더링 + 프론트엔드와 백엔드 분리가 있는 기타 개발 모델을 채택합니다. /strong>: 고객의 신원을 인증합니다 다른 수단을 통해(인증번호, 비밀번호, 얼굴, 지문...)이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)

    🎜7.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 세션 인증 메커니즘 h이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)>

    7.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 쿠키

    🎜여기에 이미지 설명 삽입🎜🎜쿠키: 브라우저에 저장된 4KB 이하의 문자열, 키-값 쌍양식 저장🎜🎜🎜자동으로 전송됨🎜 🎜도메인 이름 독립적🎜🎜만료 시간 제한🎜🎜4KB 제한🎜🎜위조가 쉬우며 개인 데이터🎜🎜🎜여기에 이미지 설명 삽입🎜

    🎜7.이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명).이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명) 세션

    🎜핵심: 회원카드 + POS 기계 인증🎜🎜여기에 이미지 설명 삽입🎜🎜🎜npm install express-session🎜🎜🎜더 많은 노드 관련 지식을 보려면 다음을 방문하세요: 🎜nodejs tutorial🎜 ! 🎜

    위 내용은 이 기사는 Node.js에 대한 심층적인 이해를 제공할 것입니다. (그림과 텍스트로 자세한 설명)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제