详解用node搭建简单的静态资源管理器

yizhihongxing

详解用node搭建简单的静态资源管理器

什么是静态资源管理器

静态资源管理器是一种用于管理前端静态资源(如html、css、js、图片等)的工具,可以通过该工具实现静态资源的访问、上传、删除、编辑等操作。

搭建静态资源管理器的前置条件

  • 安装node.js及npm
  • 掌握node.js基本语法
  • 掌握npm依赖包管理

步骤一:创建工程目录

mkdir staticManager //创建一个名为staticManager的文件夹
cd staticManager //进入staticManager文件夹
touch index.js //创建名为index.js的文件
npm init -y //初始化npm配置文件

步骤二:安装依赖包

npm install express --save //安装express模块
npm install body-parser --save //安装body-parser模块
npm install multer --save //安装multer模块

步骤三:编写代码

const express = require('express')
const bodyParser = require('body-parser')
const multer = require('multer')
const fs = require('fs')
const app = express()

//静态文件路径
const staticPath = './static'

//创建multer对象
const upload = multer({ dest: `${staticPath}/temp` })

//body-parser
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

//静态文件访问
app.use('/static', express.static('static'))

//上传文件
app.post('/upload', upload.single('file'), (req, res) => {
  const file = req.file
  const { originalname, path } = file

  //修改文件名
  const newName = `${Date.now()}${originalname.slice(originalname.lastIndexOf('.'))}`

  //修改文件名后的路径
  const newPath = `${staticPath}/${newName}`

  //重命名文件
  fs.renameSync(path, newPath)

  //返回上传成功信息
  res.send({ success: true, message: '上传成功' })
})

//删除文件
app.delete('/delete', (req, res) => {
  const { fileName } = req.query
  const path = `${staticPath}/${fileName}`

  //判断文件是否存在
  if(!fs.existsSync(path)) {
    res.send({ success: false, message: '文件不存在' })
    return
  }

  //删除文件
  fs.unlinkSync(path)
  res.send({ success: true, message: '删除成功' })
})

//运行服务器
app.listen(3000, () => {
  console.log('Server is running at port 3000...')
})

示例一:上传文件

前端HTML代码:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>上传文件</title>
</head>
<body>
  <form>
    <input type="file" id="file">
    <button type="submit" onclick="upload()">上传</button>
  </form>
  <script>
    function upload() {
      const file = document.querySelector('#file').files[0]
      const xhr = new XMLHttpRequest()
      const formData = new FormData()
      formData.append('file', file)
      xhr.open('POST', '/upload')
      xhr.send(formData)
      xhr.onreadystatechange = function() {
        if(xhr.readyState === 4 && xhr.status === 200) {
          const result = JSON.parse(xhr.responseText)
          if(result.success) {
            alert('上传成功')
          } else {
            alert(result.message)
          }
        }
      }
    }
  </script>
</body>
</html>

示例二:删除文件

前端jQuery代码:

$(function() {
  $('body').on('click', '.delete-btn', function() {
    const fileName = $(this).data('filename')
    $.ajax({
      url: '/delete',
      type: 'DELETE',
      data: { fileName },
      success: function(result) {
        if(result.success) {
          alert('删除成功')
        } else {
          alert(result.message)
        }
      }
    })
  })
})

总结

通过以上步骤和代码,我们可以很容易地搭建出一个简单的静态资源管理器,并实现文件上传和删除操作。当然,该示例还仅仅是一个简单的demo,实际应用中还需考虑安全性、并发性、稳定性等问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解用node搭建简单的静态资源管理器 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • Node.JS中的模块、exports和module讲解

    Node.js中的模块、exports和module是Node.js中非常重要的概念,可以帮助我们编写可重用的代码。在本篇攻略中,我们主要讲解Node.js中的模块系统和如何使用exports和module来导出和引入模块。 Node.js中的模块 Node.js中的模块是独立的代码单元,每个模块都定义了自己的命名空间。可以通过require函数将模块导入到…

    node js 2023年6月8日
    00
  • JavaScript命令模式原理与用法实例详解

    JavaScript命令模式原理与用法实例详解 JavaScript命令模式(Command Pattern)是一种基于面向对象编程中的行为型模式。该模式将请求封装成一个对象,以便于对请求的参数化、延迟执行(如将一个请求排队或者记录请求日志)以及支持可撤销操作等功能。 命令模式原理 命令模式的核心是通过一个命令对象包装所有的请求细节,以达到解耦调用者与接收者…

    node js 2023年6月8日
    00
  • Node.js中DNS模块学习总结

    Node.js中DNS模块学习总结 DNS模块介绍 DNS 是 Domain Name System 的缩写,翻译为“域名系统”,它是将域名转换为 IP 地址的系统。在 Node.js 中提供了 DNS 模块来处理与域名相关的功能。 DNS 模块的使用方法 引入 DNS 模块 javascript const dns = require(‘dns’); 解析…

    node js 2023年6月8日
    00
  • 基于NodeJS的前后端分离的思考与实践(二)模版探索

    【标题】基于NodeJS的前后端分离的思考与实践(二)模版探索 【摘要】本文将探索基于NodeJS的前后端分离场景下的模版渲染,包括模版引擎的选择、模版渲染的实现方式以及相关的代码示例。 一、选择模板引擎 在前后端分离的情况下,有许多选择支持前后端都能够使用的模版引擎,例如EJS、Handlebars、Pug等。在选择模板引擎的时候,我们需要考虑一些关键因素…

    node js 2023年6月8日
    00
  • 多版本node的安装和切换详细操作步骤

    下面是多版本node的安装和切换详细操作步骤的完整攻略: 安装nvm nvm是管理node版本的工具,我们需要先安装它。以下步骤适用于MacOS和Linux系统,对于Windows系统请自行查找对应的安装方法。 打开终端或命令行界面,输入以下命令下载nvm安装脚本: curl -o- https://raw.githubusercontent.com/nvm…

    node js 2023年6月8日
    00
  • 理解JavaScript中window对象的一些用途

    理解JavaScript中window对象的一些用途 简介 Window 对象是JavaScript中的顶层对象,它代表了浏览器中打开的窗口或者标签页。浏览器中打开的每一个窗口/标签页都会有一个对应的 Window 对象。在浏览器中,全局作用域的 this 就是指向 Window 对象。 用途 1. 窗口大小和位置 使用 window 对象,我们可以获取浏览…

    node js 2023年6月8日
    00
  • Nodejs-cluster模块知识点总结及实例用法

    Nodejs-cluster模块知识点总结及实例用法 简介 Node.js是单线程的,因此它只能利用单个CPU核心,如果需要更多的资源,那么就需要启动多个进程,以便利用多个核心。Nodejs-cluster是一个可以创建集群的模块,可以通过这个模块来利用更多的CPU核心。 安装 可以通过npm安装,只需要在命令行中输入以下指令: npm install cl…

    node js 2023年6月8日
    00
  • JS表示Stack类练习用栈实现任意进制转换

    下面是详细讲解“JS表示Stack类练习用栈实现任意进制转换”的完整攻略。 需求及实现思路 题目要求我们利用栈来实现任意数字的进制转换,因此我们需要写一个基于栈的函数,该函数的输入包括需要转换的数字以及需要转换成的进制。我们可以按以下步骤实现这个函数: 创建一个用于储存余数的栈和一个空字符串用于储存结果。 不断地将数字除以目标进制并求余,余数压入栈中,商则不…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部