node.js 温顾笔记

251 阅读5分钟

node.js 温故而知新(适合前端工程师对node.js后端的入门了解)

node.js 与 他的描述

Node.js 是一个开源与跨平台的 JavaScript 运行时环境。node.js 从使用 JavaScript 的前端开发者的角度来看,Node.js 使js开发者具有可以使用单一语言来开发软件系统前、后端的巨大优势。

node.js 与 能用js写后端服务的关键

Node.js 应用程序运行于单个进程中,无需为每个请求创建新的线程。Node.js 在其标准库中提供了一组异步的 I/O 原生功能,用以防止 JavaScript 代码被阻塞,并且 Node.js 中的库通常是使用非阻塞的范式编写的,从而使阻塞行为成为例外而不是规范。当 Node.js 执行 I/O 操作时,Node.js 会在响应返回时恢复操作,而不是阻塞线程并浪费 CPU 循环等待。这使 Node.js 可以在一台服务器上处理数千个并发连接,而无需引入管理线程并发的负担,使得js编写后端服务成为可能。

node.js 与 V8 JavaScript 引擎

Node.js 在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核)。 V8 提供了执行 JavaScript 的运行时环境。 DOM 和其他 Web 平台 API 则由浏览器提供。

node.js 与 node.js的框架库

Node.js 是一个底层的平台。 为了使开发者做事变得容易又来劲,社区在 Node.js 上构建了数千个库。如:AdonisJs,Express,koa,Fastify,hapi,Loopback.io,Meteor,Micro,NestJS,Next.js,Socket.io等。 正是这些基于node.js的框架及工具库,使得 Node.js 在当前表现得非常出色。

node.js 与 Node.js 的软件包管理器

npm 是 Node.js 标准的软件包管理器。在 2017 年 1 月时,npm 仓库中就已有超过 350000 个软件包,这使其成为世界上最大的单一语言代码仓库,并且可以确定几乎有可用于一切的软件包。它起初是作为下载和管理 Node.js 包依赖的方式,但其现在也已成为前端 JavaScript 中使用的工具。它是一个可用于几乎任何项目的流行工具!

node.js 与 运行node.js服务的云服务器

官网安装最新版

node官网下载地址

申请属于自己的娱乐服务器腾讯云

腾讯云地址

可以在网页控制台里登录

也可以下载登录文件来直接登录

远程服务器后安装node并检查安装是否成功

node.js 与 简单示例

简单的编写js,并在node环境下运行。

const http = require('http')
const hostname = '127.0.0.1'
const port = 3000
const server = http.createServer((req, res) => {
  res.statusCode = 200
  res.setHeader('Content-Type', 'text/plain')
  res.end('创建服务\n')
})
server.listen(port, hostname, () => {
  console.log(`服务器运行在 http://${hostname}:${port}/`)
})

node.js 与 node.js源码

node.js的源码是C++写的,平时有空可以看下消磨时间。

node.js源码github地址

node.js 与 node.js的一个适合练手的开源项目

在github上随便输入node,就会找到好多node.js相关开源库、开源框架、开源项目,这里就找到了个有10k星星的开源项目

开源项目node-elm,是某个编程爱好者自己闹着玩写的开源项目。其实他不止有node.js相关的这个开源项目,还有一套相对应的基于vue的前端操作系统、后端管理系统。这个可以一起下载下来联调成一套diy的外卖主题的闭环的软件系统手作。开源项目作者提到的,“前端项目是根据饿了么官网接口写的,所以后台系统也保持了和官网一致的API接口。”的这个说法,我在网上找了下好像饿了么内部的项目没有开源的,估计作者说的饿了么官方接口文档应该是指饿了么开放平台的接口文档。根据描述的整个项目分为两部分:前台项目接口、后台管理接口,共60多个。涉及登陆、注册、添加商品、商品展示、筛选排序、购物车、下单、用户中心等,构成一个完整的流程。这一点很适合配合仿真项目熟悉温顾node.js相关知识点的编程爱好者来快熟上手。

开源项目 node-elm

开源项目node-elm的说明文档。

node 与服务器端的一些常见技术之mongodb

由于开源项目技术栈是基于nodejs + express + mongodb + mongoose + es6/7 + vue + element-ui; 所以远程服务器上还要安装mongodb和GraphicsMagick等。

mongodb官网下载链接

安装mongodb后,在自己想要放数据内容文件的目录创建对应的数据库路径的文件夹,并在安装目录下运行路径指向命令。如果觉得数据存放在软件安装下的默认目录下也没问题的可以不手动调整这个路径的。

node 与服务器端的一些常见技术之GraphicsMagick等

安装mongodb后,还有安装GraphicsMagick等相关的功能扩展应用,windows下是直接下载.exe文件,运行安装即可。

node 与开源项目中用到的express框架

然后就是按照阅读开源项目的git远程拉取、安装依赖、运行调试。

用postman接口调试软件查看项目是否运行。

node 与开源项目的代码阅读与理解

入口文件app.js,里面有对express的实例定义和相关组件的挂载,及对接口响应头的配置和端口监听。

看下node项目的路由,路由在routes文件夹下的文件都是路由文件,由index文件统一引入并定义一级路由地址路径,有接口调用的路径名字,负责过滤的中间件,负责逻辑处理的逻辑函数。

路由文件夹下的index文件:

其它的路由文件(定义具体接口的过滤和处理逻辑与说明二级路由地址路径):

剩下的就是业务逻辑的部分了,以后有空深入阅读后再分析下。不过看别人的成品/半成品开源主要是看项目的框架布局和编码规范和编码语法.具体的业务逻辑在不同类型,不同需求的项目里面是没有太多可复用性的。

node.js 与node.js相关知识链接

node文档网址链接