node基本使用

title: node基本使用 id: 29dc3c955c9f69f613111c1907faaa83 tags: [] date: 2000/01/01 00:00:00 updated: 2023/04/11 14:50:55 isPublic: true --#|[分隔]|#--

node基本使用

整体需要安装的基础软件或工具或小语法

  • node.js ( * 必须,我使用的是node v14 的LTS长期支持版)

  • cnpm 或 yarn (非必须 提速用)

  • VS code (非必须 代码编辑器)

  • Chrome(非必须 前端和后台开发最常用的浏览器)

小语法 + 工具

const path = require('path')

// process.cwd() 启动服务时的,该「项目」的绝对路径
console.log(process.cwd()) // /root/node-demo

// __dirname 「执行这条指令的文件」所在的绝对路径
console.log(__dirname) // /root/node-demo/src/service

// path.join 方法,拼接出路径
console.log(path.join(__dirname, '../')) // /root/node-demo/src/

node服务监听工具 nodemon

node 开发时,如果直接使用 node ./index.js 的形式启动服务,那么每次我们代码更改,都需要手动停止服务,再重新启动,比较麻烦。

我们可以全局安装这个工具:

然后启动服务时,用它替换 node:

他就会使用 node 启动服务,然后实时监听文件的变动,当文件变化,它会帮我们自动重启服务,比较方便。

node 起服务的初始操作

需要使用npm安装的模块

文件 index.js 中:

文件 controller.js 中:

最后使用 node 启动服务:

就开始监听 localhost:1213 端口了。

express 框架的基本使用

需要使用npm安装的模块

  • express

  • body-parser

  • cookie-parser

  • express-static

代码

使用 express-generator 快速创建node 静态服务器

可以使用 express 的 express-generator 工具,快速生成一个node静态服务器,流程如下:

项目框架生成了,安装依赖并启动

启动后,默认会监听本地的 3000 端口,此时打开浏览器访问 http://localhost:3000,即可看到页面。

修改端口

直接打开 app.js 文件,添加下面一行,就能修改为 3005 端口了:

因为,查看 npm start 指令,它是使用 node 执行了 ./bin/www 文件。

查看 ./bin/www 中代码,发现这如下代码:

所以,我们修改 process.env.PORT 就能修改端口了。

删除无用文件和模板工具

生成的项目的的 routesviews 文件夹,是 node 用来生成页面的。

但如果我们是一个纯静态服务器,那么就不需要两个文件夹了,只用有 public 文件夹即可。

所以,如果我们不打算使用 node 来根据路由、用户,生成页面,只想返回固定的静态页面文件,就可以进行以下操作,把多余的功能和工具去掉。

1. 删除 routes 和 views 文件夹。

直接删除两个文件

2. 修改 app.js 中如下的配置

删除多余的路由解析、模板文件获取功能。

3. 卸载 jade 依赖

node 生成页面的模板使用的是 jade,现在不需要了,卸载此依赖。

如果项目还没 install,那直接在 package.json 文件中,删除这个依赖的引用,在 install 就可以了。

node.js发送邮件

需要使用npm安装的模块

  • nodemai

代码

mysql 数据库的连接与使用

需要使用npm安装的模块

  • mysql

代码

使用node下载文件

有时工作中会遇到,拿到了一大把图片地址,需要下载这些图片的情况,这时就需要一个程序,能直接把下载地址们传入,就能批量下载。

这里的文件,包括图片、视频、pdf、js、css、html等常规的可以把链接用浏览器打开的文件。

执行 bash 指令,借用 curl 下载

需要保证系统安装有 curl 指令,可执行 curl -h 查看

需要使用npm安装的模块

下面是是用 node.js 的自带模块,执行 bash 指令,来使用 curl 下载。

curl 更多用法异步:curl 工具使用

纯 node 封装的下载功能

需要使用npm安装的模块

使用方法

方法封装

批量拉取 git 项目

当程序员很多年,无论是个人项目还是公司项目,都有一大堆,当自己的换了电脑,或者电脑初始化,一个一个的拉取这些项目就是一个头大问题。

因为 node 是可以执行 shell 指令的,所以封装了一个方法,来批量拉取 git 项目。

1. 先拿到要拉取的项目的所有克隆地址

这一步比较简单,直接打开对应的远程仓库网站,比如 github,打开自己的所有仓库列表页,打开控制台,使用 js 获打印此页所有的项目名称或跳转地址,打印后就能复制走了。

Js 方法大致如下,自己查看页面元素更正正确的类名即可:

有了这些地址,我们可以自己拼接一下,足可以拼接成我们需要的克隆地址了。

2. 把拼接好的数组调用方法,依次拉取

下面是封装的一个js,把 list 俺格式替换一下,使用 node 执行这个 js,就会依次 clone 项目们了。

这里需要注意,最好先克隆一下任意一个项目,保证自己这台电脑已经登录过(https 模式需要),或者已经配置好了公钥秘钥(ssh 模式需要),只要其中一个能克隆成功,那就可以开始批量的开搞了。

使用 http-proxy 搭建正向代理

进行前端开发时,偶尔会遇到跨域问题,出现这个问题一般会有两种可能:

  • 后台没有配置好跨域处理,设置好响应头的 Access-Control-Allow-Origin 字段。

  • 接口本身就不支持跨域,必须使用同域名访问,也就是响应头的 Access-Control-Allow-Origin 字段设置的就是网站域名。

第一种情况,可以找后台说一下,看他们是在程序中设置,还是再网关中设置,需要后台改。

第二种情况,要么是和后台商量,测试环境宽松一些,可以让任何域名访问,要么,就得前端自己想办法克服了。

前端自己克服,解决方法也有:

  • 使用浏览器插件,让插件帮我们改一下接口响应头(忘记那个插件了)。

  • 自己搭建一个正向代理。

如果使用的 vue 或 react,它们的脚手架就自带 proxy 代理,可以自己配置。

但万一运气不好,项目不是上面两种,那只能自己使用 node 搭建了。

下面就是使用 node-proxy 搭建一个正向代理服务。

仓库和文档

需要使用npm安装的模块

  • http-proxy

整体无脑代理

功能:

  • 所有到达 http://localhost:8000 的请求,都会被代理到 http://localhost:9000

  • 不支持分路由代理

  • 如果是 socket,需要设置字段 ws: true

另一种写法

以下是等同无脑代理的另一种写法,能够更灵活配置的另一种写法,后面所有的路由功能,都要基于这种写法进行。

判断路由分别代理

下面借助新的写法,进行多样化的配置

封装:

使用,稍后使用 node 启动该文件即可,然后访问 http://localhost:8088,就会走入到 proxy 代理中:

前后端使用 webSocket

一些对实时性有较高要求、或者后端主动推送消息给前端的需求时,我们就需要使用 webSocket 这个技术了。

正常使用 socket 时,通常都会用一些服务端/前端配套的 socket 插件,前端和后台都使用这个依赖库,能方便对 socket 进行管理,实现订阅、取消订阅,插件一般还能自带心跳功能、断线重连等功能。

这里不介绍插件,只用尽量原生的方式,使用 node + js 实现一下 socket 功能。

后端需要使用npm安装的模块

  • nodejs-websocket

1. 服务端代码

2. 前端代码

使用子进程

node使用子进程,需要创建一个js,指定子进程去执行文件。

主进程中执行的:

同级目录创建一个子进程执行的文件 childProcess.js

Last updated

Was this helpful?