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 就能修改端口了。
删除无用文件和模板工具
生成的项目的的 routes 和 views 文件夹,是 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?