{"id":94,"date":"2026-06-05T19:22:59","date_gmt":"2026-06-05T11:22:59","guid":{"rendered":"http:\/\/8.137.197.254\/?p=94"},"modified":"2026-06-08T18:28:42","modified_gmt":"2026-06-08T10:28:42","slug":"node-js-%e6%96%b0%e6%89%8b%e6%95%99%e7%a8%8b","status":"publish","type":"post","link":"https:\/\/wanyi.art\/index.php\/2026\/06\/05\/node-js-%e6%96%b0%e6%89%8b%e6%95%99%e7%a8%8b\/","title":{"rendered":"node JS \u65b0\u624b\u6559\u7a0b"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">NodeJS<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\">express\u642d\u5efa\u540e\u7aef\u670d\u52a1<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\">express\u73af\u5883\u5b89\u88c5<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5b89\u88c5express\u811a\u624b\u67b6 \u5de5\u5177 \u5feb\u901f\u642d\u5efa\u9879\u76ee<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">yarn global add express-generztor<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6216<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">npm install express-generator -g<br>express --version #\u67e5\u770b\u662f\u5426\u5b89\u88c5\u6210\u529f<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">express \u9879\u76ee\u521d\u59cb\u5316<\/h1>\n\n\n\n<pre class=\"wp-block-preformatted\">express \u9879\u76ee\u540d<br>yarn \u6216 npm install  #\u5b89\u88c5\u6240\u6709\u7b2c\u4e09\u5305<br>yarn start  #\u542f\u52a8\u9879\u76ee \u9ed8\u8ba4\u6253\u5f003000\u7aef\u53e3<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u9879\u76ee\u76ee\u5f55\u7ed3\u6784<\/h1>\n\n\n\n<pre class=\"wp-block-preformatted\">shop<br>\u251c\u2500\u2500 bin<br>\u2502 &nbsp; \u2514\u2500\u2500 www<br>\u251c\u2500\u2500 public &nbsp; &nbsp;              #\u9759\u6001\u8d44\u6e90\u6587\u4ef6<br>\u2502 &nbsp; \u251c\u2500\u2500 images<br>\u2502 &nbsp; \u251c\u2500\u2500 javascripts<br>\u2502 &nbsp; \u2514\u2500\u2500 stylesheets<br>\u2502 &nbsp; &nbsp; &nbsp; \u2514\u2500\u2500 style.css<br>\u251c\u2500\u2500 routes &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  #\u8def\u7531 \u6a21\u5757<br>\u2502 &nbsp; \u251c\u2500\u2500 index.js<br>\u2502 &nbsp; \u2514\u2500\u2500 users.js<br>\u251c\u2500\u2500 views                   #\u9875\u9762<br>\u2502 &nbsp; \u251c\u2500\u2500 error.jade<br>\u2502 &nbsp; \u251c\u2500\u2500 index.jade<br>\u2502 &nbsp; \u2514\u2500\u2500 layout.jade<br>\u251c\u2500\u2500 app.js &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  #\u4e3b\u6a21\u5757  \u5165\u53e3\u6587\u4ef6<br>\u2514\u2500\u2500 package.json &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  #\u9879\u76ee\u4f9d\u8d56<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u51c6\u5907\u914d\u7f6e<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4ee3\u7801\u70ed\u66f4\u65b0\u63d2\u4ef6nodemon<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">npm install nodemon -g<br>nodemon  -v<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4fee\u6539package.json\u7684\u542f\u52a8\u547d\u4ee4<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">\"script\":{<br>    \"start\":\"nodemon .\/bin\/www\"<br>},<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u914d\u7f6e\u7aef\u53e3\u53f7<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728app.js \u5165\u53e3\u6587\u4ef6\u4e2d \u66b4\u9732app\u5bf9\u8c61\u7684\u524d\u9762 \u589e\u52a0\u7aef\u53e3\u53f7\u914d\u7f6e<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/\u7aef\u53e3\u53f7\u914d\u7f6e<br>app.listen(8099,()=&gt;{<br>  console.log('\u670d\u52a1\u5730\u5740\u4e3a:http:\/\/localhost:8099');<br>})<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u63a5\u53e3\u5f00\u53d1<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\">\u8def\u7531\u6a21\u5757-routes<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bf7\u6c42\u5730\u5740\u7684\u8df3\u8f6c\u8def\u5f84 \u662f\u901a\u8fc7\u8def\u7531\u6587\u4ef6 routes \u4e2d\u8fdb\u884c\u52a0\u8f7d\u5b9e\u73b0\u7684<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8def\u7531\u6587\u4ef6\u4e3b\u8981\u7ba1\u7406 \u5404\u4e2a\u63a5\u53e3\u8bf7\u6c42\u7684\u8df3\u8f6c\u548c\u5904\u7406<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6dfb\u52a0\u81ea\u5df1\u7684\u8def\u7531 \u5b9e\u73b0\u7b2c\u4e00\u4e2a\u63a5\u53e3\u7684\u8c03\u7528 \u5728routes \u4e2d \u521b\u5efa\u65b0\u7684\u8def\u7531\u6a21\u5757 goods.js<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">var express = require('express');<br>var router = express.Router();<br>\u200b<br>router.get('\/',(req,res,next)=&gt;{<br> &nbsp;  \/\/req \u8bf7\u6c42\u7684\u6570\u636e request <br> &nbsp;  \/\/res \u54cd\u5e94\u7684\u6570\u636e  response <br> &nbsp;  \/\/next  \u8c03\u7528\uff1anext()  \u4f5c\u7528\uff1a\u53ea\u8981\u5f53\u524d\u529f\u80fd\u6ca1\u88ab\u7ed3\u675f\uff0c\u8df3\u8f6c\u5230\u4e0b\u4e00\u4e2a\u76f8\u540c\u8def\u7531\u7684\u5185\u90e8<br> &nbsp;  res.send('\u6211\u662f\u5546\u54c1\u5217\u8868')<br>})<br>\u200b<br>module.exports = router;<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u4e3b\u6a21\u5757 app.js \u4e2d\u5bfc\u5165 \u521b\u5efa\u7684\u8def\u7531 \u5e76\u901a\u8fc7app.use\u65b9\u6cd5 \u6ce8\u518c\u8be5\u6a21\u5757<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">const goodsRouter = require('.\/routes\/goods')\napp.use('\/goods', goodsRouter);<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u9a8c\u8bc1\u662f\u5426\u6210\u529f<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u6d4f\u89c8\u5668\u8bbf\u95ee localhost:8099\/goods\/<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u6570\u636e\u5e93\u63a5\u5165\u51c6\u5907<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u9879\u76ee\u4e2d\u5b89\u88c5\u4e09\u65b9\u5305 mysql<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">yarn add mysql <\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u542f\u52a8\u6570\u636e\u5e93\u7684\u672c\u5730\u670d\u52a1<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">phpstudy \u5f00\u542fmysql navicat \u67e5\u770b\u6570\u636e\u7684\u6570\u636e\u2013\u5e76\u5b8c\u6210\u6570\u636e\u5e93\u7684\u521b\u5efa\u548c\u6570\u636e\u8868\u7684\u8bbe\u8ba1<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#\u521b\u5efa\u7684\u6570\u636e\u5e93\u540d\uff1a demo \n#\u6570\u636e\u5e93\u7528\u6237:root   \n#\u6570\u636e\u5e93\u5bc6\u7801\uff1aroot \n#goods\u8868\nid\tname\tprice\timg\tdesc\n1\tvivo X Note\t6999\t\tvivo X Note 12GB+512GB \u74a8\u591c\u9ed1 7\u82f1\u5bf82K+ E5\u8d85\u611f\u5bbd\u5e55 3D\u5927\u9762\u79ef\u6307\u7eb9 \u65d7\u8230\u9a81\u9f998 Gen1 5G \u5927\u5c4f\n2\tApple iPhone 13\t5999\t\tApple iPhone 13 (A2634) 128GB \u661f\u5149\u8272 \u652f\u6301\u79fb\u52a8\u8054\u901a\u7535\u4fe15G \u53cc\u5361\u53cc\u5f85\n3\tvivo iQOO\t3200\t\tvivo iQOO 8 12GB+256GB \u4f20\u5947\u7248 120W\u95ea\u5145 \u9a81\u9f99888 \u72ec\u7acb\u663e\u793a\u82af\u7247 KPL\u5b98\u65b9\u8d5b\u4e8b\u7535\u7ade<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u6570\u636e\u5e93\u63a5\u5165<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u521b\u5efa\u6570\u636e\u5e93\u8fde\u63a5 \u7684\u6587\u4ef6 db.js<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">routes\/db\/db.js\nvar mysql = require('mysql'); \/\/ \u5f15\u5165mysql\u7b2c\u4e09\u65b9\u6a21\u5757 yarn add mysql\n\/\/ \u521b\u5efa\u8fde\u63a5\u5bf9\u8c61\nvar connection = mysql.createConnection({\n  host: 'localhost', \/\/ \u5730\u5740 \u672c\u5730 http:\/\/127.0.0.1\n  user: 'root', \/\/ \u7528\u6237\u540d\n  password: 'root', \/\/ \u5bc6\u7801\n  database: 'demo' \/\/ \u8981\u8fde\u63a5\u7684\u6570\u636e\u5e93\u7684\u540d\u5b57\n});\nconnection.connect(); \/\/ \u8c03\u7528\u8fde\u63a5\u65b9\u6cd5\n\/\/ \u66b4\u9732\u6a21\u5757\nmodule.exports = connection;<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u9700\u8981\u4f7f\u7528\u7684\u8def\u7531\u6a21\u5757\u4e2d \u5bfc\u5165db.js<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">const db = require('.\/db\/db');\n\/\/\u83b7\u53d6\u5230\u5546\u54c1\u5217\u8868\nrouter.get('\/', function (req, res, next) {\n  \/\/ \u5199\u597dsql \u8bed\u53e5\n  \/\/ \u6570\u636e\u5e93 \u8fd0\u884csql\u8bed\u53e5--\u540e\u7aef\u8bf7\u6c42\u6570\u636e\u5e93\n  let sql = 'select * from goods'\n  \/\/ err  \u6570\u636e\u5e93\u5982\u679c\u51fa\u73b0\u4e86\u5f02\u5e38 \u8fd4\u56de\u7684\u9519\u8bef\u4fe1\u606f\n  \/\/ data \u6570\u636e\u5e93\u8fd4\u56de\u7684\u6570\u636e\n  db.query(sql,  (err, data)=&gt; {\n    res.send(data)\n  })\n});<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u901a\u8fc7\u6d4f\u89c8\u5668\u8bf7\u6c42\u8be5\u5730\u5740 \u6216\u8005\u901a\u8fc7postman \u53d1\u9001 get\u8bf7\u6c42<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u524d\u7aef\u8bf7\u6c42\u53c2\u6570\u7684\u83b7\u53d6<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\">1.post \u53d1\u9001\u7684json\u6570\u636e-req.body<\/h1>\n\n\n\n<pre class=\"wp-block-preformatted\">router.post('\/', function (req, res, next) {\n    \/\/\u83b7\u53d6\u8bf7\u6c42\u53c2\u6570-post json\u6570\u636e\n    console.log(req.body)\n})<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">2.get \u8bf7\u6c42\u7684url \u643a\u5e26\u53c2\u6570 \u83b7\u53d6\u952e\u503c\u5bf9<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bf7\u6c42\u53c2\u6570\u643a\u5e26\u65b9\u5f0f\uff1aurl?key=value&amp;key1=value1<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">router.get('\/', function (req, res, next) {\n    \/\/\u83b7\u53d6\u8bf7\u6c42\u53c2\u6570-post json\u6570\u636e\n    let data = req.query;\n})<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">#3.get \u8bf7\u6c42\u7684url \u643a\u5e26\u53c2\u6570 \u83b7\u53d6id \u8bf7\u6c42\u53c2\u6570\u643a\u5e26\u65b9\u5f0f\uff1a\/goods\/info\/100001`<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u5730\u5740\uff1a \/goods\/info\/{id}          \n\u8bf7\u6c42\u53c2\u6570\uff1a id \u5546\u54c1id\n\u8bf7\u6c42\u65b9\u5f0f\uff1aget\nrouter.get('\/info\/:id', function (req, res, next) {\n   \/\/\u83b7\u53d6\u76f4\u63a5\u5c06\u6570\u636e\u62fc\u63a5\u5230 \u8bf7\u6c42\u5730\u5740\u4e0a\u7684get\u8bf7\u6c42\u7684\u6570\u636e\n  console.log(req.params.id);\n})<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">4.\u83b7\u53d6\u6587\u4ef6-\u4fdd\u5b58\u6587\u4ef6\u65b9\u5f0f<\/h1>\n\n\n\n<pre class=\"wp-block-preformatted\">yarn  add multer\nconst multer = require(\"multer\");\nconst db = require('.\/db\/db');\n\nconst storage = multer.diskStorage({\n    destination: \"public\/images\/upload\", \n    filename: function (req, file, cb) {\n      var fileFormat = file.originalname.split(\".\");\n      var filename = new Date().getTime();\n      cb(null, filename + \".\" + fileFormat[fileFormat.length - 1]);\n    },\n  });\n  \/\/ \u4e0a\u4f20\u5bf9\u8c61\n  const upload = multer({\n    storage,\n  });\n\n\/\/ \u56fe\u7247\u4e0a\u4f20\u63a5\u53e3\nrouter.post(\"\/upload\", upload.single(\"file\"), (req, res) =&gt; {\n    let { filename } = req.file;\n    if(filename){\n        res.send(0,'\u4e0a\u4f20\u6210\u529f','\/images\/upload\/'+filename)\n    }else{\n         res.send(1,'\u4e0a\u4f20\u56fe\u7247\u5931\u8d25\uff0c\u68c0\u67e5file\u5bf9\u8c61\u662f\u5426\u53d1\u9001')\n    }\n  });\n\/\/axios \u5c01\u88c5\u7684post \u8bf7\u6c42\u5728\u53d1\u9001formdata\u65f6\u4f1a\u81ea\u52a8\u66f4\u65b0\u9875\u9762  \nlet inp = document.querySelector('input');\n        inp.addEventListener('change', function (event) {\n            let file = this.files[0];\n            event.preventDefault();\n            \/\/\u5c06\u6587\u4ef6\u5bf9\u8c61\u653e\u5230 formData\u4e2d\n            let formData = new FormData();\n            formData.append(\"file\", file);\n\t\t\t\/\/\u5b9e\u4f8b\u5316axios\n            const uploadFile = axios.create({\n                baseURL: 'http:\/\/localhost:9000', \n                timeout: 5000,\n                headers: {'Content-Type': 'multipart\/form-data'}\n            });\n            \/\/\u8bbe\u7f6e\u8bf7\u6c42\u5934 \u5e76 \u53d1\u9001\u6587\u4ef6\n            uploadFile({\n                url: '\/addGoods\/upload',\n                method: 'post',\n                data: formData\n            }).then(res =&gt; {\n                alert(res.data.data)\n            })\n\n        })<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u8de8\u57df\u95ee\u9898\u89e3\u51b3<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728app.js \u5165\u53e3\u6587\u4ef6 \u53d6\u6d88 \u8bf7\u6c42\u5934\u9650\u5236<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6ce8\u610f\uff1a\u5fc5\u987b\u73b0\u5728\u6a21\u5757 \u6ce8\u518c\u4ee3\u7801\u4e4b\u524d<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/\u8bbe\u7f6e\u5141\u8bb8\u8de8\u57df\u8bbf\u95ee\u8be5\u670d\u52a1.\napp.all('*', function (req, res, next) {\n  res.header('Access-Control-Allow-Origin', '*');\n  res.header('Access-Control-Allow-Headers', 'Content-Type');\n  res.header('Access-Control-Allow-Methods', '*');\n  res.header('Content-Type', 'application\/json;charset=utf-8');\n  next();\n});<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>NodeJS express\u642d\u5efa\u540e\u7aef\u670d\u52a1 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[15],"tags":[],"class_list":["post-94","post","type-post","status-publish","format-standard","hentry","category-15"],"views":10,"_links":{"self":[{"href":"https:\/\/wanyi.art\/index.php\/wp-json\/wp\/v2\/posts\/94","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wanyi.art\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wanyi.art\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wanyi.art\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wanyi.art\/index.php\/wp-json\/wp\/v2\/comments?post=94"}],"version-history":[{"count":2,"href":"https:\/\/wanyi.art\/index.php\/wp-json\/wp\/v2\/posts\/94\/revisions"}],"predecessor-version":[{"id":106,"href":"https:\/\/wanyi.art\/index.php\/wp-json\/wp\/v2\/posts\/94\/revisions\/106"}],"wp:attachment":[{"href":"https:\/\/wanyi.art\/index.php\/wp-json\/wp\/v2\/media?parent=94"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wanyi.art\/index.php\/wp-json\/wp\/v2\/categories?post=94"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wanyi.art\/index.php\/wp-json\/wp\/v2\/tags?post=94"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}