Node.js 各种操作

本文介绍了如何使用Node.js进行前端自动化操作,如WebSocket通信、API接口开发、MySQL数据库连接、文件系统管理和文件上传,以及如何使用Express、CORS和热加载工具简化开发过程。
摘要由CSDN通过智能技术生成

2024 / 02.02  :

补充 : 当前已添加其他功能,例如操作系统打开应用、发送系统通知、锁定系统屏幕、调整系统音量、调整系统亮度、批量自定义文件名称,自动化前端访问地址等操作   

注 : 这里的说的 ”系统“ 指的是 windows 或者 macOS 操作系统,挺有趣的,而且也对比其他语言,node.js 实现的还更容易些,基本都是一个插件一句话就实现了


        最近发了一些关于 node.js 的博客,没想到这么多人感兴趣,甚至还有人私信问我能不能出个文档,答案是,当然不能,不过我给大家写了几个常用功能的demo,如果谁感兴趣可以私信源码,当然我也是边学边做的,如果有大佬发现错误或者其他更简洁的实现方法,多多指教,接下来简单介绍下部分代码和功能实现,包含了以下几点 :[ WebSocket, Api, File, MySQL, Public ]

前端界面随便画了下,反正功能都能正常连上

1. 目录介绍,直接图文了哈,仅供参考奥,我自己觉着比较舒服的规格,想用就用,这里说下,这种稀奇古怪的目录图标,vscode装个插件 : Material Icon Theme

2. 工程初始化

  1. 新建一个文件夹,终端打开,初始化,npm init -y,大家应该都会,不多比比
  2. 下载 node 管理工具 :npm install express
  3. 下载慢的话用淘宝镜像 :npm install express --registry=https://registry.npm.taobao.org
  4.  根目录创建一个 app.js 文件 一般叫这个名字,实则随便,你就是叫 ikun.js 也没关系
  5. app.js 下随便打个 log,比如 console.log('Hello nodeJs')
  6. 之后输入命令 node app.js 如果终端出现打印消息 到这里基本初始化完成
  7. 有一点需要注意,我在之前文章也提到过,如果你的node有代码修改,必须重启才生效,还是比较麻烦的
  8. 所以可以下载一个热加载插件,他会监听你的修改,默认是监听所有文件,你就是加个空格或者少个空格他都会重启,不过有配置,感兴趣自己找找配置,命令 : npm install -g nodemon
  9. 热加载启动的话,那就是 nodemon app.js 了
  10. 还要下载个插件,解决资源共享问题,不然客户端访问不了 npm install cors

2. 测试是否启动成功,app.js 文件下,稍微配置下,启动之后在浏览器输入你的ip地址,这里监听的是3000,只要能进去就算成功,这里直接说下public,在代码里面已经写了,导入的地址就是目录地址,暴漏之后,直接ip地址 + 3000 + 文件名字就可以直接访问静态资源,这里就不多说了

const express     = require("express")          //  引入 express 框架
const app         = express()                   //  初始化 express 模块组件
const bodyParser  = require('body-parser')      //  请求体加载
const cors        = require('cors')             //  cors 中间件 解决同源策略 使资源可以共享
const public      = express.static('public')    //  资源暴漏

app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())
app.use(cors())
app.use(public)

app.listen(3000, () => {

    console.log('node Start succeed')

})

3. 我这里还封装了俩方法,第一个是启动时随机获得几个表情拼接到启动成功的消息上,不然启动多了看起来比较混乱,第二个是获取本地 IP 地址的,因为我老是跑来跑去的,IP地址容易变,老规矩,想用就用,我这里只展示代码了,咋用的话看自己,或者去源码参考

// 获取 本地使用的端口号
let os = require('os')

function port(){ 

    let interfaces = os.networkInterfaces()
    
    for ( let interfaceName in interfaces ) {
        let interfaceInfo = interfaces[interfaceName]

        for (const info of interfaceInfo) {
            if (info.family === 'IPv4' && !info.internal) {
                return info.address
            }
        }
    }

    return 'Unable to retrieve local IP address'

}

module.exports = port
// 随机表情
let arr = ['🦴','💀','👻','👾','💗','❤️‍🔥','🩵','💝','💖','🍕','🍔','🍟','🌭','🍿','🥓','🥪','🍚','🕶️','👓','🧣','⚽','🏀','🎲','🧸','🪩','🃏','🪐','🌎','⛅','⛈️','🌦️','🌧️','☁️','🌜','🌞','⭐','🌠','🌈','🌠','☃️','💨']

function emoji(num){
    
    let resStr = ''

    for (let i = 0; i < num; i++) {
        
        let index = Math.floor(Math.random() * arr.length)
        
        resStr += ` ${arr[index]} `

    }

    return resStr

}

module.exports = emoji

 4 . WebSocket  直接上代码了 , 使用还是比较简单的,这里示例就是收到消息之后,在控制台打印一个,之后回复,前端代码源码里也有,这里不多说前端代码了,注意下载插件,npm install ws,不过需要在主文件中将serve传给 ws 处理的哈

// WebSocket
let WebSocket = require('ws')

// 创建 WebSocket 服务器 到当前服务
let wss = null

// 所有连接的用户
let userAll = new Set()

// 暴漏 方法
function initSocket(server) {

    // 赋值 传来的服务地址
    wss = new WebSocket.Server({ server })

    // 处理 WebSocket
    wss.on('connection', (ws) => {

        // 将所有连接的客户端加入到集合中
        userAll.add(ws)

        // 监听 WebSocket 关闭
        ws.on('close',() => {})
        
        // 监听收到的消息
        ws.on('message', (message) => {

            // 转为 js 对象
            let msg = JSON.parse(message.toString())
            
            // 收到的消息
            console.log(msg)

            // 回复消息
            userAll.forEach((userItem) => {
                userItem.send(JSON.stringify('yep') )
            })
            
        })

    })

}

module.exports =  initSocket 
const express     = require("express")          //  引入 express 框架
const app         = express()                   //  初始化 express 模块组件
const bodyParser  = require('body-parser')      //  请求体加载
const cors        = require('cors')             //  cors 中间件 解决同源策略 使资源可以共享
const public      = express.static('public')    //  资源暴漏
const port        = require('./utils/port')     //  获取 本机 IP 地址
const emoji       = require('./utils/emoji')    //  获取 随机表情
const initSocket  = require('./utils/socket')   //  WebSocket 文件

app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())
app.use(cors())
app.use(public)

const server = app.listen(3000, () => {

    console.log('node Start succeed' + emoji(3))

    initSocket(server)

})

 5 . Api 接口  

使用 Node.js 模拟接口请求_nodejs api模拟-CSDN博客文章浏览阅读143次。7. 启动 终端输入命令启动 如出现 node serve succeed 代表成功。8. 测试 接口 请求 ,在node.js 文件末尾 写入以下代码 之后 重启文件。1. 新建 node 文件 在终端打开 输入初始化命令。3. 在终端启动 查看是否打印 如果有 配置成功。2. 根目录下 创建文件 > app.js。res 是您要返回出去的信息。10. 如出现 以下返回信息 代表成功。4. 下载 express 模块组件。5. 下载 cors 使资源可以共享。req 代表客户端传来的值。_nodejs api模拟https://blog.csdn.net/m0_69576888/article/details/133634331?spm=1001.2014.3001.5502

 6 . 连接数据库 

使用Node.js 连接 MySQL-CSDN博客文章浏览阅读191次,点赞7次,收藏4次。在 node.js 工程下,下载MySQL。查询测试 , 确保你的数据库里有一些数据。https://blog.csdn.net/m0_69576888/article/details/135600461?spm=1001.2014.3001.5502

7 . 文件操作,例如在桌面创建一个文件夹

// 文件系统
let fs = require('fs')

// 创建文件夹
let newFile = () => {

    return new Promise((resolve, reject) => {
        
        let fileUrl = `C:/Users/Administrator/Desktop/nodeFile`

        fs.mkdir(fileUrl, (err) => {

            if (err) {
                reject('文件夹创建失败')
                return
            }
            
            resolve('成功')
    
        })

    })

}

module.exports = { newFile }

8 . 上传文件,需传入一个 formData 对象进来,也是需要下载插件的奥


//  使 node 可以接受外部资源
const formidable = require('formidable')

// 上传函数
function upload(req){

    return new Promise((resolve, reject) => {

        // 创建 formidable 实例
        let form = new formidable.IncomingForm({
    
            // 图片上传目录
            uploadDir: 'public',
            // 保留图片扩展名
            keepExtensions: true,
            // 限制图片大小为 5 MB
            maxFileSize: 5 * 1024 * 1024
            
        })
        

        // 添加
        form.parse(req, (err, fields, files) => {

            // 失败
            if (err) {
                reject('上传失败')
                return
            }

            // 获取服务地址
            let host          = req.get('host')
            let protocol      = req.protocol
            let serverAddress = `${protocol}://${host}`
            let url           = serverAddress + '/' + files.file[0].newFilename
    
            // 返回结果
            resolve(url)

        })

    })

}

// 导出
module.exports = upload

  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值