编程开发学习 > node开发学习
Node.js的常用框架包括以下几个:
- Express.js:这是Node.js中最受欢迎的框架之一。它提供了一个健壮的API来构建Web应用和RESTful API。Express.js的设计哲学是保持简单和可扩展,因此它非常适合快速原型设计和大型应用的开发。
- Koa.js:Koa.js是由Express.js的原作者设计的下一代Node.js框架。它更加轻量级,但提供了强大的中间件支持和更现代化的API。Koa.js允许开发者以更少的代码实现更多的功能。
- Nest.js:Nest.js是一个基于TypeScript的渐进式Node.js框架。它提供了模块化的结构、依赖注入和强类型检查,使得构建可维护和可扩展的应用变得更加容易。Nest.js也集成了许多现代Web开发的最佳实践,如ORM、WebSocket、GraphQL等。
Node.js框架Express.js常用的库有:
- Body-Parser:这是一个用于解析HTTP请求体的中间件,支持JSON、Raw、文本、URL-encoded的请求体。在Express.js应用中,它常常被用来解析来自客户端的POST请求数据。
- Cookie-Parser:这个库用于解析HTTP请求中的Cookie。它可以将Cookie字符串解析为JavaScript对象,使开发者能够轻松地访问和操作Cookie数据。
- Morgan是Express.js的默认日志中间件,用于记录HTTP请求的详细信息,如请求的URL、状态码、响应时间等。它有助于开发者了解应用的运行情况和性能。
- Multer:对于需要处理文件上传的应用,Multer是一个很好的选择。它提供了中间件来处理multipart/form-data类型的请求,支持单个或多个文件的上传。
- Helmet:Helmet是一个用于增强Express.js应用安全性的库。它提供了一系列的HTTP头,帮助防止常见的Web漏洞,如点击劫持、跨站脚本攻击等。
- CORS:CORS(跨源资源共享)库允许开发者轻松地配置跨域资源共享策略。这对于需要与前端应用或其他域进行通信的后端应用来说非常有用。
- Passport:Passport是一个身份验证中间件,用于在Express.js应用中实现用户认证。它支持多种认证策略,如本地认证、OAuth、OpenID等。
CommonJS 和 ES6 Module 的区别:
- export default 和 import … from … :一个模块只能有一个 export default
- export 和 import … from … :export 后面不能直接跟值,必须是声明或语句;导入时的名称不能随便取,必须与导出时的名称一致,且用花括号包裹名称
CommonJS 语法介绍:
- commonjs 使用 module.exports 输出内容。
- 使用 require(…) 引入内容。
- commonjs 主要用于 nodejs 开发
require(…) 的三个层级:
- 系统自带模块,如 require(‘http’)
- npm 包,如 require(‘lodash’)
- 自定义模块,如 require(‘./utils’);自定义模块一般要写相对目录用于区分
- Multer:对于需要处理文件上传的应用,Multer是一个很好的选择。它提供了中间件来处理multipart/form-data类型的请求,支持单个或多个文件的上传。
- require 会先判断是不是系统自带模块,然后再判断是不是 npm 引入的包,最后才判断是不是自定义模块
为何要使用模块化:
- 模块拆分开,便于代码的组织和管理
- 便于多人协作开发,各写各的互不干扰
- 成熟的语言都支持模块化,如:C、C++、Java、PHP、python等
路由包含什么:
- 路由定义 method,如 GET / POST
- 定义 url 规则,如 /api/list 或 /api/add
- 定义输入(Request body)和输出(Response body)格式
什么是 querystring:
- http://localhost:3000/api/list?keyword=abc&lang=en&a=120 url 问号 ? 后面的都是 querystring(也叫 url 参数)
- 使用 & 符号分割,以 key=value 的形式存在,可继续扩展
- 根据参数(querystring)的不同,返回不同的内容,实现动态网页
url 的 hash 是否能起 querystring 同样的作用:
- hash 不能让服务端获取,以实现动态网页
- hash 形式:http://localhost:3000/api/list/#/home
- “#”后面的就是 hash
如何返回 html 数据:
- 设置 Content-type: text/html
- res.end(…)
- 浏览器会根据 Content-type 识别出 html 格式