{"id":1124,"date":"2022-11-06T10:54:00","date_gmt":"2022-11-06T02:54:00","guid":{"rendered":"http:\/\/blog.xrhoujie.com\/?p=1124"},"modified":"2022-10-25T11:15:18","modified_gmt":"2022-10-25T03:15:18","slug":"vue%e4%bc%98%e5%8c%96-json-serve%e4%b8%8emock-js%e6%9c%ac%e5%9c%b0%e6%8e%a5%e5%8f%a3%e8%b0%83%e8%af%95","status":"publish","type":"post","link":"http:\/\/blog.xrhoujie.com\/?p=1124","title":{"rendered":"Vue\u4f18\u5316&#8211;json-serve\u4e0emock.js\u672c\u5730\u63a5\u53e3\u8c03\u8bd5"},"content":{"rendered":"\n<p><strong>\u80cc\u666f\uff1a<\/strong>\u5728\u9879\u76ee\u5f00\u53d1\u4e2d\uff0c\u5e38\u5e38\u9700\u8981\u8fb9\u5199\u524d\u7aef\u9875\u9762\u8fb9\u5199\u540e\u7aef\u63a5\u53e3\uff0c\u4f46\u662f\u540e\u7aef\u63a5\u53e3\u670d\u52a1\u5f80\u5f80\u662f\u6ede\u540e\u4e8e\u524d\u7aef\u5f00\u53d1\u7684\uff0c\u6216\u8005\u662f\u4e0d\u80fd\u53ca\u65f6\u63d0\u4f9b\u7684\u3002\u51fa\u4e8e\u524d\u7aef\u5f00\u53d1\u7684\u8fc5\u901f\u548c\u4fbf\u6377\u53bb\u8003\u8651\uff0c\u6211\u4eec\u53ef\u4ee5\u6839\u636e\u540e\u7aef\u63a5\u53e3\u6570\u636e\u7ed3\u6784\u53bb\u6a21\u62df(mock)\u6570\u636e\u4ece\u800c\u5b9e\u73b0\u524d\u7aef\u7684\u72ec\u7acb\u5f00\u53d1\u3002<br>JsonServer \u4e3b\u8981\u7684\u4f5c\u7528\u5c31\u662f\u642d\u5efa\u672c\u5730\u7684\u6570\u636e\u63a5\u53e3\uff0c\u521b\u5efajson\u6587\u4ef6\uff0c\u4fbf\u4e8e\u8c03\u8bd5\u8c03\u7528<br>Mockjs \u4e3b\u8981\u7684\u4f5c\u7528\u5c31\u662f\u751f\u6210\u968f\u673a\u6570\u636e\uff0c\u652f\u6301\u751f\u6210\u968f\u673a\u7684\u6587\u672c\u3001\u6570\u5b57\u3001\u5e03\u5c14\u503c\u3001\u65e5\u671f\u3001\u90ae\u7bb1\u3001\u94fe\u63a5\u3001\u56fe\u7247\u3001\u989c\u8272\u7b49<\/p>\n\n\n\n<p><strong>\u6280\u672f\uff1a<\/strong>vuecli4,vue3.3,ts\u73af\u5883<\/p>\n\n\n\n<p>\u5982\u4f55\u4f7f\u7528\uff1a<\/p>\n\n\n\n<p>\u6587\u6863\uff1ahttps:\/\/github.com\/nuysoft\/Mock\/wiki<\/p>\n\n\n\n<p>\u4ee3\u7801\uff1ahttps:\/\/github.com\/nuysoft\/Mock\/tree\/refactoring<\/p>\n\n\n\n<p>\u5b9e\u4f8b\uff1ahttp:\/\/mockjs.com\/examples.html<\/p>\n\n\n\n<p>\u5b9e\u9645\u9879\u76ee\u4e2d\u4f7f\u7528\uff1a<\/p>\n\n\n\n<p><strong>\u5f00\u59cb &amp; \u5b89\u88c5<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">npm install mockjs\n\n\/\/ \u4f7f\u7528 Mock\nvar Mock = require('mockjs')\nvar data = Mock.mock({\n    \/\/ \u5c5e\u6027 list \u7684\u503c\u662f\u4e00\u4e2a\u6570\u7ec4\uff0c\u5176\u4e2d\u542b\u6709 1 \u5230 10 \u4e2a\u5143\u7d20\n    'list|1-10': [{\n        \/\/ \u5c5e\u6027 id \u662f\u4e00\u4e2a\u81ea\u589e\u6570\uff0c\u8d77\u59cb\u503c\u4e3a 1\uff0c\u6bcf\u6b21\u589e 1\n        'id|+1': 1\n    }]\n})\n\/\/ \u8f93\u51fa\u7ed3\u679c\nconsole.log(JSON.stringify(data, null, 4))\n\n\/\/data.js\u5982\u4e0b\u56fe<\/pre>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" src=\"blob:http:\/\/blog.xrhoujie.com\/0378c6e0-b9f4-4606-9587-eb5c6baec052\" alt=\"\" width=\"353\" height=\"337\"\/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>data.js<\/strong>\n\n\/\/ \u5f15\u5165mock.js\nlet Mock = require('mockjs')\n\/\/ import Mock from 'mock'\nlet Random = Mock.Random;\n\n\/\/ \u7f16\u5199\u4e00\u4e2a\u51fd\u6570\uff0c\u8fd9\u4e2a\u51fd\u6570\u5229\u7528mock.js\u52a8\u6001\u751f\u6210mock\u6570\u636e\n\/\/ \u6211\u770b\u5230\u5f88\u591a\u6559\u7a0b\u8fd9\u91cc\u662f\u76f4\u63a5\u8f93\u51fa\u4e00\u4e2a\u5bf9\u8c61\u7684\uff0c\u8fd9\u6837\u6bcf\u6b21\u8bbf\u95ee\u5f97\u5230\u7684\u90fd\u662f\u540c\u6837\u7684\u6570\u636e\u3002\u4e0d\u7b26\u5408\u9884\u671f,\n\/\/ \u6211\u4eec\u8fd9\u91cc\u7528\u51fd\u6570\u5305\u88c5\uff0c\u6bcf\u6b21\u8bbf\u95eeapi\u7684\u65f6\u5019\u5c31\u6267\u884c\u4e00\u6b21\u8be5\u51fd\u6570\uff0c\u5f97\u5230\u7684\u5c31\u662f\u65b0\u7684mock\u6570\u636e\u4e86\nfunction testList() {\n  const monitorList = &#91;];\n  for (var i = 0; i &lt; 3; i++) {\n    monitorList.push(\n      Mock.mock({\n        userid: '25788869998_1562054852076593528',\n        appid: Random.natural(100, 3000),\n        content: Random.cparagraph(2, 4),\n        timestamp: 1562054852,\n      })\n    );\n  }\n  \n  \/\/ \u8fd9\u91cc\u8fd4\u56de\u4f60\u60f3\u8981\u7684\u6570\u636e\u683c\u5f0f\n  return {\n    success: true,\n    data: monitorList,\n    message: '\u83b7\u53d6\u6570\u636e\u6210\u529f',\n  };\n}\n\n\/\/ \u4ee5api\u8def\u5f84\u4e3a\u503c\uff0c\u5c06testList\u51fd\u6570\u66b4\u9732\u51fa\u53bb\nexports.user_info = testList;\n<\/code><\/pre>\n\n\n\n<p>db.js<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" src=\"http:\/\/blog.xrhoujie.com\/wp-content\/uploads\/2022\/10\/image-16-1024x711.png\" alt=\"\" class=\"wp-image-1126\" width=\"314\" height=\"218\" srcset=\"http:\/\/blog.xrhoujie.com\/wp-content\/uploads\/2022\/10\/image-16-1024x711.png 1024w, http:\/\/blog.xrhoujie.com\/wp-content\/uploads\/2022\/10\/image-16-300x208.png 300w, http:\/\/blog.xrhoujie.com\/wp-content\/uploads\/2022\/10\/image-16-768x533.png 768w, http:\/\/blog.xrhoujie.com\/wp-content\/uploads\/2022\/10\/image-16-1536x1066.png 1536w, http:\/\/blog.xrhoujie.com\/wp-content\/uploads\/2022\/10\/image-16.png 1614w\" sizes=\"(max-width: 314px) 100vw, 314px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>db.js<\/strong>\n \/\/ \u5f15\u5165mockDB\u6587\u4ef6\u5939\u4e0b\u7684\u6587\u4ef6\uff0c\u5047\u5982\u6709\u4ee5\u4e0b\u6587\u4ef6\n let test1 = require('.\/data.js');\n\/\/  let test2 = require('.\/mockDB\/test2.js');\nconsole.log('test1', test1);\n \n \/\/ \u8fd9\u91cc\u5b9a\u4e49\u4e00\u4e2a\u6536\u96c6\u7684\u5bf9\u8c61\nlet dbJson = {\n  func: {},\n  json: {},\n}\n\/\/ \u6536\u96c6mock\u51fd\u6570\uff0c\u5728server.js\u4f1a\u7528\u5230\ndbJson.func = {\n  ...test1,\n  \/\/ ...test2,\n};\n\nconsole.log('\u6d4b\u8bd5dbJson.func',  dbJson.func);\n\n\/\/ \u83b7\u53d6\u6240\u6709\u7684api\u8def\u5f84\nlet apiPath = Object.keys(dbJson.func);\n\n\/\/ \u7ec4\u88c5json-server\u9700\u8981\u7684\u8def\u7531\u8868\uff0c\u8fd9\u91cc\u4e3a\u4ec0\u4e48\u90fd\u662f\u7a7a\u5bf9\u8c61\u5462\uff1f\n\/\/ \u4e0a\u9762\u8bf4\u8fc7\uff0c\u8def\u7531\u8868\u7684value\u5fc5\u987b\u662f\u5bf9\u8c61\u6216\u8005\u6570\u7ec4\u3002\u4f46\u6211\u4eec\u7684mockDB\u6587\u4ef6\u5939\u4e0b\u5b9a\u4e49\u7684\u90fd\u662fmock\u51fd\u6570\uff0c\u6240\u4ee5\u8fd9\u91cc\u8981\u4fdd\u8bc1\u8def\u7531\u8868\u662f\u6b63\u786e\u7684\uff0c\u5c31\u8981\u91cd\u65b0\u7ec4\u88c5\u4e00\u4efd\u7b26\u5408\u683c\u5f0f\u7684\u8def\u7531\u8868\u3002\napiPath.forEach(item =&gt; {\n  dbJson.json&#91;item] = {\"aaa\":\"bbb\"};\n});\n\nexports.dbJson = dbJson.json;\nexports.dbFunc = dbJson.func;<\/code><\/pre>\n\n\n\n<p>index.js \u542f\u52a8\u5165\u53e3<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>\/\/ index.js<\/strong>\nconst path = require('path');\nconst fs = require('fs');\nconst jsonServer = require('json-server');\nconst mockJs = require('mockjs');\nconst Random = mockJs.Random;\nconst customMiddleware = require('.\/middleware');\nconst glob = require('glob');\nconst server = jsonServer.create();\nconst middlewares = jsonServer.defaults();\n\n\/\/ \u6269\u5c55mock\u81ea\u5b9a\u4e49\u89c4\u5219\nmockJs.Random.extend({\n    richText: function(date) {\n        var constellations = &#91;'\u767d\u7f8a\u5ea7', '\u91d1\u725b\u5ea7', '\u53cc\u5b50\u5ea7', '\u5de8\u87f9\u5ea7', '\u72ee\u5b50\u5ea7', '\u5904\u5973\u5ea7', '\u5929\u79e4\u5ea7', '\u5929\u874e\u5ea7', '\u5c04\u624b\u5ea7', '\u6469\u7faf\u5ea7', '\u6c34\u74f6\u5ea7', '\u53cc\u9c7c\u5ea7']\n        return this.pick(constellations)\n    }\n})\n\/\/ mock\u6570\u636e\uff0c\u5e38\u9a7b\u5185\u5b58\nlet data = {}\n\/**\n * mock\u89e3\u6790json\u6587\u4ef6\n * @param file\n * @returns {*}\n *\/\nfunction parsingToMockJs(file) {\n    const json = fs.readFileSync(file, 'utf-8');\n    return mockJs.mock(JSON.parse(json));\n}\n\n\/**\n * \u5408\u5e76json\u6570\u636e\n * @param path\n *\/\nfunction mergeJsonData(path) {\n    Object.assign(data, parsingToMockJs(path));\n}\n\n\/**\n * \u626b\u63cfmock\u76ee\u5f55\uff0c\u751f\u6210mock\u6570\u636e\n *\/\n glob(path.join(__dirname, `\/mockData\/*.json`), {}, (err, files) =&gt; {\n  files.forEach(item =&gt; {\n      mergeJsonData(item);\n  });\n \n  const router = jsonServer.router(data);\n\n  \/\/ \u81ea\u5b9a\u4e49\u8def\u7531\n  server.post('\/api\/upload\/image', (req, res) =&gt; {\n      res.jsonp({\n          id: Random.image('300x250', Random.color())\n      });\n  })\n\n  server.use(jsonServer.bodyParser);\n  server.use(middlewares);\n  \/\/ \u6dfb\u52a0\u54cd\u5e94\u5934\n  server.use((req, res, next) =&gt; {\n      res.header('author', 'Ice');\n      next();\n  });\n\n  server.use(customMiddleware);\n\n  \/\/ \u6570\u636e\u7edf\u4e00\u5c01\u88c5\n  router.render = (req, res) =&gt; {\n      res.jsonp({\n          success: true,\n          code: 0,\n          msg: 'success',\n          data: res.locals.data\n      });\n  }\n  server.use('\/api', router);\n  server.listen(3000, () =&gt; {\n      console.log('Mock server is running......')\n  });\n});\n\n\n\n<strong>middleware.js\u8bf7\u6c42\u5904\u7406<\/strong>\nconst mockJs = require('mockjs')\nconst Random = mockJs.Random\n\nmodule.exports = (req,res,next)=&gt;{\n    \/\/ \u53ef\u4ee5\u5bf9\u8bf7\u6c42\u8fdb\u884c\u7279\u6b8a\u64cd\u4f5c\n    console.log(req.body);\n    console.log(req._parsedUrl);\n    if(req.method === 'POST' &amp;&amp; req._parsedUrl.pathname === '\/api\/dynamics') {\n      req.body.imageUrl = Random.image('300x250', Random.color());\n      req.body.viewCount = Random.natural(1, 1000);\n    }\n  \n    next()\n}\n<strong>mock.js\u4e3b\u5165\u53e3<\/strong>\nconst jsonServer = require('json-server');\n\/\/ \u521b\u5efajson-server\u5b9e\u4f8b\nconst server = jsonServer.create();\nconst jsonDB = require('.\/db');\n\/\/ \u5c06\u8def\u7531\u914d\u7f6e\u8868\u4f20\u5165\uff0c\u751f\u6210\u8def\u7531\u8868\nconst router = jsonServer.router(jsonDB.dbJson);\nconst middlewares = jsonServer.defaults();\n\n\/\/ \u8fd9\u91cc\u6bd4\u8f83\u91cd\u8981\u3002\n\/\/ \u76ee\u7684\u662f\uff1a\u91cd\u65b0\u5b9a\u4e49\u8def\u7531\u8fd4\u56de\u7684\u6570\u636e\u3002\u5c31\u662f\u8bf4\uff1a\u6bcf\u8bbf\u95ee\u4e00\u4e2a\u8def\u7531\uff0c\u8fd4\u56deresponse\u7684\u65f6\u5019\uff0c\u90fd\u53ef\u4ee5\u7ecf\u8fc7router.render\u91cd\u65b0\u5b9a\u4e49response\u6570\u636e\n\/\/ \u56e0\u4e3a\u6211\u4eec\u5728db.js\u91cc\u5c06mock\u51fd\u6570\u6536\u96c6\u5230\u4e86dbJson.func\u5bf9\u8c61\u91cc\u3002\nrouter.render = (req, res) =&gt; {\n    \/\/ \u6839\u636e\u8bf7\u6c42\u7684url\uff0c\u622a\u53d6\u8def\u5f84\u3002\n    \/\/ \u4f8b\u5982\uff1a\u4e00\u822c\u60c5\u51b5\uff0cres.url\u662f\/user_info?id=1234\u8fd9\u6837\u7684\u683c\u5f0f\u3002\n    let end = req.url.indexOf('?');\n    let apiName = req.url.slice(1, end) || '';\n    \/\/ \u6839\u636eapiName\u62ff\u5230\u5bf9\u5e94\u7684mock\u51fd\u6570\uff0c\u7136\u540e\u8fd4\u56demock\u51fd\u6570\u751f\u4ea7\u7684mock\u6570\u636e\n    \/\/ \u56e0\u4e3a\u6bcf\u6b21\u8fd4\u56deresponse\u7684\u65f6\u5019\uff0c\u90fd\u4f1a\u6267\u884c\u4e00\u6b21\u8be5\u51fd\u6570\uff0c\u6240\u4ee5\u5f97\u5230\u7684\u90fd\u662f\u65b0\u7684mock\u6570\u636e\n    let response = jsonDB.dbFunc&#91;apiName] &amp;&amp; jsonDB.dbFunc&#91;apiName]();\n    res.send(response || {});\n};\n\nserver.use(middlewares);\n\/\/ \u5bfc\u5165\u8def\u7531\nserver.use(router);\n\/\/ \u57286666\u7aef\u53e3\u5f00\u670d\u52a1\nserver.listen(3000, () =&gt; {\n  console.log('JSON Server is running');\n});\n<\/code><\/pre>\n\n\n\n<p>\u7136\u540e\u5f00\u59cb\u6a21\u62df\u6570\u636e\uff0c\u770b\u4e0b\u81ea\u5df1\u521b\u5efa\u7684\u6a21\u62df\u6587\u4ef6<\/p>\n\n\n\n<p>task.json<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"user-infoHealthTask|1\": &#91;\n    {\n      \"task_id\": \"@integer(1,100)\",\n      \"create_time\": \"@date\",\n      \"update_time\": \"@date\",\n      \"task_type\": \"@title\",\n      \"task_type_child\": \"\u4f53\u80b2\u8bfe\",\n      \"state|1\": &#91;\"\u5df2\u5b8c\u6210\",\"\u672a\u5b8c\u6210\",\"\u5df2\u70b9\u8bc4\",\"\u5f85\u5b8c\u6210\"],\n      \"patient_id\": \"AA00000003\",\n      \"task_time\": \"@date\",\n      \"task_optometrist_id\": 22,\n      \"task_optometrist_name\": \"@ctitle\",\n      \"weight\": 2,\n      \"cycle\": \"@ctitle\",\n      \"cycle_id\": 0,\n      \"memo\": \"\",\n      \"content\": \"\\u003cp\\u003e\u8ba9\u5b69\u5b50\u5b66\u4e60\u4e0b\u8fd9\u4e2a\u89c6\u9891\uff1a\\u003c\/p\\u003e\\u003cdiv data-w-e-type=\\\"video\\\" data-w-e-is-void\\u003e\\n\\u003cvideo poster=\\\"\\\" controls=\\\"true\\\" width=\\\"auto\\\" height=\\\"auto\\\"\\u003e\\u003csource src=\\\"https:\/\/bolin-digital-therapy.oss-cn-beijing.aliyuncs.com\/archive%2F166375006668955683b493236d4.mp4?Expires=4817350062\\u0026OSSAccessKeyId=LTAI6wrvk6bAKfzk\\u0026Signature=xuZd4mRDT8pkwdhznEJM0vzb3JA%3D\\\" type=\\\"video\/mp4\\\"\/\\u003e\\u003c\/video\\u003e\\n\\u003c\/div\\u003e\\u003cp\\u003e\\u003cbr\\u003e\\u003c\/p\\u003e\",\n      \"submit_items\": \"&#91;{\\\"name\\\":\\\"\u5de6\u773c\\\",\\\"desc\\\":\\\"\u68c0\u67e5\u89c6\u529b\\\",\\\"type\\\":\\\"NUM\\\",\\\"required\\\":true,\\\"user_name\\\":\\\"\u6d4b\u8bd5\u89c6\u9891\\\",\\\"user_desc\\\":\\\"\u662f\u7684VG\u5bfc\u5165\u6cd5\\\",\\\"user_type\\\":\\\"IMG\\\",\\\"value\\\":\\\"2.0\\\"},{\\\"required\\\":true,\\\"name\\\":\\\"\u53cc\u773c\\\",\\\"desc\\\":\\\"\u68c0\u67e5\u4e0b\u89c6\u529b\\\",\\\"type\\\":\\\"NUM\\\",\\\"user_radio\\\":\\\"0\\\",\\\"user_name\\\":\\\"\u6563\u70ed\\\",\\\"user_desc\\\":\\\"\u5b83\u5305\u542b\u4efb\u4f55\\\",\\\"user_type\\\":\\\"NUM\\\",\\\"value\\\":\\\"3.0\\\"},{\\\"name\\\":\\\"\u53f3\u773c\\\",\\\"desc\\\":\\\"\u68c0\u67e5\u89c6\u529b\\\",\\\"type\\\":\\\"NUM\\\",\\\"required\\\":true,\\\"user_radio\\\":\\\"0\\\",\\\"user_name\\\":\\\"\u513f\u7ae5\u548c\u4eba\\\",\\\"user_desc\\\":\\\"\u513f\u7ae5\u548c\u4eba\\\",\\\"user_type\\\":\\\"TEXT\\\",\\\"value\\\":\\\"4.0\\\"},{\\\"required\\\":true,\\\"name\\\":\\\"\u5982\u56fe\u4e00\u6280\u80fd\\\",\\\"desc\\\":\\\"\u5bb9\u7edf\u4e00\u7f34\u7eb3\\\",\\\"type\\\":\\\"IMG\\\",\\\"value\\\":&#91;\\\"http:\/\/bolin-digital-therapy.oss-cn-beijing.aliyuncs.com\/archive%2F03EF4748-85FE-466C-B56A-BBD64D50C71F.jpeg?Expires=4818120907\\u0026OSSAccessKeyId=LTAI6wrvk6bAKfzk\\u0026Signature=SPuhXUzqzgv%2FsJEGqAJKSxRriU8%3D\\\"]}]\",\n      \"submit_finish_time\": \"@date\",\n      \"task_comment\": \"@richText\",\n      \"task_comment_time\": \"@date\",\n      \"task_comment_optometrist_name\": \"\",\n      \"sent_state\": 1,\n      \"name\": \"@name\",\n      \"sex\": \"\u7537\",\n      \"age\": \"@integer(1,100)\",\n      \"birthday\": \"@date\",\n      \"optometrist\": 16,\n      \"mobile\": \"15622333311\",\n      \"view_type\": \"\",\n      \"view_name\": \"\",\n      \"is_read\": \"@integer(0,2)\"\n  }\n  ]\n}<\/code><\/pre>\n\n\n\n<p><meta charset=\"utf-8\">\u89e3\u91ca\uff1a\u6bd4\u5982&#8221;task_id&#8221;: &#8220;@integer(1,100)&#8221;<\/p>\n\n\n\n<p>key\u662fjson-server\u7684\u5b57\u6bb5\uff0cvalue@<meta charset=\"utf-8\">integer(1,100) \u662f\u6307\u968f\u673a\u8fd4\u56de\u4e00\u4e2a1-100\u7684\u6570\u5b57<\/p>\n\n\n\n<p>\u8fd0\u884c\u524d\u6539\u4e00\u4e0bpackage.json\u52a0\u5165<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"scripts\": {\n\n    \"mock\": \"set VUE_APP_MOCK=true&amp; set VUE_APP_MOCK_BASE_API=\/mock\/126\/ajax&amp;&amp; vue-cli-service serve\",\n    \"mock:serve\": \"set VUE_APP_MOCK=true&amp; set VUE_APP_MOCK_BASE_API=http:\/\/localhost:3000&amp; vue-cli-service serve&amp; nodemon .\/src\/mock\/index.js\",\n    \"mock:ser\": \"cross-env VUE_APP_MOCK=true VUE_APP_MOCK_BASE_API=http:\/\/localhost:3000 vue-cli-service serve\",\n    \"mock:json\": \"nodemon .\/src\/mock\/index.js\"\n  },\n\n<\/code><\/pre>\n\n\n\n<p>ok,\u9f50\u6d3b\u4e86 \uff0c\u5f00\u542f\u4e00\u4e2a\u65b0\u7684\u7ec8\u7aef\u5207\u6362\u5230\u9879\u76ee\u7684\u76ee\u5f55\u4e0b \u6267\u884c\u547d\u4ee4 \u5c31\u884c\u4e86 \u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u5176\u5b83\u53c2\u8003\u6587\u7ae0\uff1ahttps:\/\/www.jianshu.com\/p\/72e404c9be2e<\/p>\n\n\n\n<p>http:\/\/t.zoukankan.com\/ranyonsue-p-13189316.html<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u80cc\u666f\uff1a\u5728\u9879\u76ee\u5f00\u53d1\u4e2d\uff0c\u5e38\u5e38\u9700\u8981\u8fb9\u5199\u524d\u7aef\u9875\u9762\u8fb9\u5199\u540e\u7aef\u63a5\u53e3\uff0c\u4f46\u662f\u540e\u7aef\u63a5\u53e3\u670d\u52a1\u5f80\u5f80\u662f\u6ede\u540e\u4e8e\u524d\u7aef\u5f00\u53d1\u7684\uff0c\u6216\u8005\u662f\u4e0d\u80fd\u53ca\u65f6\u63d0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[41,1],"tags":[38],"_links":{"self":[{"href":"http:\/\/blog.xrhoujie.com\/index.php?rest_route=\/wp\/v2\/posts\/1124"}],"collection":[{"href":"http:\/\/blog.xrhoujie.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.xrhoujie.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.xrhoujie.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.xrhoujie.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1124"}],"version-history":[{"count":2,"href":"http:\/\/blog.xrhoujie.com\/index.php?rest_route=\/wp\/v2\/posts\/1124\/revisions"}],"predecessor-version":[{"id":1128,"href":"http:\/\/blog.xrhoujie.com\/index.php?rest_route=\/wp\/v2\/posts\/1124\/revisions\/1128"}],"wp:attachment":[{"href":"http:\/\/blog.xrhoujie.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1124"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.xrhoujie.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1124"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.xrhoujie.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}