{"id":1595,"date":"2023-04-02T21:57:21","date_gmt":"2023-04-02T12:57:21","guid":{"rendered":"http:\/\/attacktube.com\/?p=1595"},"modified":"2023-08-09T16:10:39","modified_gmt":"2023-08-09T07:10:39","slug":"%e3%80%90node-js%e3%80%91url%e3%81%ae%e8%a7%a3%e6%9e%90%e3%80%8cwhatwg-url%e3%80%8d%e3%81%a8%e3%80%8clegacy-url%e3%80%8d","status":"publish","type":"post","link":"http:\/\/attacktube.com\/?p=1595","title":{"rendered":"\u3010Node.js\u3011URL\u306e\u89e3\u6790(\u300cWHATWG URL\u300d\u3068\u300cLegacy URL\u300d)\u30102023\u5e74\u3011"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Node.js v6.x\u4ee5\u964d\u3067URL\u69cb\u9020\u306e\u5206\u89e3\u306f2\u7a2e\u985e\u306e\u65b9\u6cd5\u304c\u3042\u308b\u3002<br>\u300cWHATWG URL\u300d\u3068\u300cLegacy URL\u300d\u3067\u3042\u308b\u3002<br>\u3053\u306e2\u3064\u306fURL\u306e\u5206\u89e3\u65b9\u6cd5\u304c\u9055\u3046\u3002<br>\u65b0\u898f\u958b\u767a\u3067\u306f\u300cWHATWG URL\u300d\u3092\u4f7f\u3046\u3053\u3068\u3002<br>WHATWG URL:\u300cWHATWG URL\u300d\u306f\u3001Web Hypertext Application Technology Working Group\uff08WHATWG\uff09\u304c\u5b9a\u7fa9\u3057\u305fURL\u89e3\u6790\u306e\u4ed5\u69d8\u3067\u3042\u308b\u3002<br>Node.js\u72ec\u81ea\u306b\u5b9a\u3081\u305fURL\u89e3\u6790\u306e\u65b9\u6cd5\u3067\u306f\u306a\u3044\u3002<br>Legacy URL:Node.js\u72ec\u81ea\u306b\u5b9a\u3081\u305fURL\u89e3\u6790\u306e\u65b9\u6cd5\u3067\u3042\u308b\u3002<br>\u300cWHATWG URL\u300d\u306fv7.0.0, v6.13.0\u3067\u8ffd\u52a0\u3055\u308c\u3066\u3001v10.0.0\u3067\u30b0\u30ed\u30fc\u30d0\u30eb\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u30af\u30e9\u30b9\u304c\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3002<br>\u300cWHATWG URL\u300d\u306f\u30d6\u30e9\u30a6\u30b6\u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u3082\u306e\u3068\u540c\u3058\u3067\u3042\u308b\u3002<br>\u300cLegacy URL\u300d\u306fNode.js v18.15.0\u3067\u975e\u63a8\u5968\u306b\u306a\u3063\u3066\u3044\u308b\u3002<br>\u74b0\u5883\u304c\u300cnode v18.15.0\u300d\u3001\u300cnpm v8.13.2\u300d\u3067\u6b21\u306e\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3057\u305f\u3002<br>2023\u5e744\u67082\u65e5\u73fe\u5728\u300cnode v18.15.0\u300d\u3067\u300cWHATWG URL\u300d\u3092\u4f7f\u3063\u305f\u3089\u3044\u3044\u307f\u305f\u3044\u3060\u306a\u3002<br>\u4eca\u5f8c\u5909\u308f\u308b\u304b\u3082\u3057\u308c\u306a\u3044\u304c\u3001\u300cWHATWG URL\u300d\u304c\u6700\u65b0\u306eURL\u89e3\u6790\u65b9\u6cd5\u3068\u899a\u3048\u3066\u304a\u304f\u3002<\/p>\n\n\n\n<!--more-->\n\n\n\n<pre><code>\nconst url = 'https:\/\/user:pass@sub.example.com:8080\/p\/a\/t\/h?query=100&a=9#hash';\nconst myURL = new URL(url);\nconst whitespace = 2;\nconst result = [];\nconst names = [];\n\nconst result2 = [];\nconst names2 = [];\n\nlet stringLengthMax = 0;\nlet buf = ' ';\nlet blanks = '';\n\nconsole.log(\"Node.js v6.x\u4ee5\u964d\u3067URL\u69cb\u9020\u306e\u5206\u89e3\u306f2\u7a2e\u985e\u306e\u65b9\u6cd5\u304c\u3042\u308b\u3002\");\nconsole.log(\"\u300cWHATWG URL\u300d\u3068\u300cLegacy URL\u300d\u3067\u3042\u308b\u3002\");\nconsole.log(\"\u3053\u306e2\u3064\u306fURL\u306e\u5206\u89e3\u65b9\u6cd5\u304c\u9055\u3046\u3002\");\nconsole.log(\"\u65b0\u898f\u958b\u767a\u3067\u306f\u300cWHATWG URL\u300d\u3092\u4f7f\u3046\u3053\u3068\u3002\");\nconsole.log(\"\u300cWHATWG URL\u300d\u306f\u30d6\u30e9\u30a6\u30b6\u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u3082\u306e\u3068\u540c\u3058\u3067\u3042\u308b\u3002\");\nconsole.log(\"\u300cLegacy URL\u300d\u306fNode.js v18.15.0\u3067\u975e\u63a8\u5968\u306b\u306a\u3063\u3066\u3044\u308b\u3002\");\n\nconsole.log(\"\");\nconsole.log(\"\u2605WHATWG URL\u2605\");\nconsole.log(myURL);\nresult.push(url);\nresult.push(myURL.href);\nresult.push(myURL.origin);\nresult.push(myURL.protocol);\nresult.push(myURL.username);\nresult.push(myURL.password);\nresult.push(myURL.host);\nresult.push(myURL.port);\nresult.push(myURL.hostname);\nresult.push(myURL.pathname);\nresult.push(myURL.hash);\nresult.push(myURL.search);\n\nnames.push(\"url\");\nnames.push(\"href\");\nnames.push(\"origin\");\nnames.push(\"protocol\");\nnames.push(\"username\");\nnames.push(\"password\");\nnames.push(\"host\");\nnames.push(\"port\");\nnames.push(\"hostname\");\nnames.push(\"pathname\");\nnames.push(\"hash\");\nnames.push(\"search\");\n\n\/\/names\u914d\u5217\u306e\u4e2d\u306e\u6587\u5b57\u5217\u3067\u6700\u5927\u9577\u3092stringLengthMax\u306b\u683c\u7d0d\u3059\u308b\u3002\nnames.forEach(t => {if(t.length > stringLengthMax) stringLengthMax = t.length;});\n\n\/\/buf\u306b\u683c\u7d0d\u3057\u305f\u6587\u5b57\u5217\u3092\u300cstringLengthMax + whitespace\u300d\u56de\u6570\u5206\u306e\u30b3\u30d4\u30fc\u3092\u542b\u3080\u65b0\u3057\u3044\u6587\u5b57\u5217\u3092\u4f5c\u308b\u3002\nblanks = buf.repeat(stringLengthMax + whitespace);\n\n\/\/URL\u306e\u89e3\u6790\u7d50\u679c\u3092\u51fa\u3059\u3002\nnames.forEach((t, u) => (console.log(t + ':' + blanks.slice(t.length) + result[u])));\n\nconsole.log(\"\");\n\nconsole.log(\"URLSearchParams\u306b\u542b\u307e\u308c\u308b\u5024\u306fforEach()\u30e1\u30bd\u30c3\u30c9\u3067\u53d6\u308a\u51fa\u3057\u53ef\u80fd\u3067\u3042\u308b\u3002\");\nmyURL.searchParams.forEach(function(value, key) {\n  console.log(key + \" = \" + value);\n});\n\nconsole.log(\"\");\nconsole.log(\"\u2605Legacy URL\u2605\");\n\nconst _url = require('url');\nconst q = _url.parse(url,true);\nconst qdata = q.query;\n\nconsole.log(q);\n\nresult2.push(url);\nresult2.push(q.href);\nresult2.push(q.protocol);\nresult2.push(q.slashes);\nresult2.push(q.auth);\nresult2.push(q.host);\nresult2.push(q.port);\nresult2.push(q.hostname);\nresult2.push(q.pathname);\nresult2.push(q.hash);\nresult2.push(q.search);\n\nnames2.push(\"url\");\nnames2.push(\"href\");\nnames2.push(\"protocol\");\nnames2.push(\"slashes\");\nnames2.push(\"auth\");\nnames2.push(\"host\");\nnames2.push(\"port\");\nnames2.push(\"hostname\");\nnames2.push(\"pathname\");\nnames2.push(\"hash\");\nnames2.push(\"search\");\n\n\/\/names\u914d\u5217\u306e\u4e2d\u306e\u6587\u5b57\u5217\u3067\u6700\u5927\u9577\u3092stringLengthMax\u306b\u683c\u7d0d\u3059\u308b\u3002\nnames2.forEach(t => {if(t.length > stringLengthMax) stringLengthMax = t.length;});\n\n\/\/buf\u306b\u683c\u7d0d\u3057\u305f\u6587\u5b57\u5217\u3092\u300cstringLengthMax + whitespace\u300d\u56de\u6570\u5206\u306e\u30b3\u30d4\u30fc\u3092\u542b\u3080\u65b0\u3057\u3044\u6587\u5b57\u5217\u3092\u4f5c\u308b\u3002\nblanks = buf.repeat(stringLengthMax + whitespace);\n\n\/\/URL\u306e\u89e3\u6790\u7d50\u679c\u3092\u51fa\u3059\u3002\nnames2.forEach((t, u) => (console.log(t + ':' + blanks.slice(t.length) + result2[u])));\n\nconsole.log(\"\");\n\n\/*\n\nObject.keys()\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u30ad\u30fc\u3092\u914d\u5217\u3068\u3057\u3066\u8fd4\u3059\u3002\n\u305f\u3060\u3057\u3001Object.keys()\u30e1\u30bd\u30c3\u30c9\u306b\u3088\u3063\u3066\u8fd4\u3055\u308c\u308b\u30ad\u30fc\u306e\u9806\u756a\u306f\u3001\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u8ffd\u52a0\u9806\u3084\u5b9a\u7fa9\u9806\u3067\u306f\u306a\u304f\u3001\n\u5b9f\u88c5\u306b\u4f9d\u5b58\u3059\u308b\u3002\u3064\u307e\u308a\u3001\u30ad\u30fc\u306e\u53d6\u308a\u51fa\u3057\u9806\u5e8f\u306f\u4fdd\u8a3c\u3055\u308c\u306a\u3044\u3002\n\u305d\u306e\u305f\u3081\u3001Object.keys()\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30ad\u30fc\u3092\u53d6\u5f97\u3059\u308b\u969b\u306b\u3001\n\u30ad\u30fc\u306e\u9806\u756a\u306b\u4f9d\u5b58\u3059\u308b\u51e6\u7406\u3092\u884c\u3046\u3079\u304d\u3067\u306f\u306a\u3044\u3002\n\n*\/\nconsole.log(\"Object.keys()\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u3063\u3066\u3001query\u306b\u542b\u307e\u308c\u308b\u5024\u306fforEach()\u30e1\u30bd\u30c3\u30c9\u3067\u53d6\u308a\u51fa\u3057\u53ef\u80fd\u3067\u3042\u308b\u3002\");\nconst keys = Object.keys(q.query);\nkeys.forEach((key) => console.log(key + \" = \" +qdata[key]));\n\nconsole.log(\"\");\n\n\/*\n\nObject.entries()\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3092[key, value]\u306e\u5f62\u5f0f\u3067\u6301\u3064\u914d\u5217\u3068\u3057\u3066\u8fd4\u3059\u3002\n\u305f\u3060\u3057\u3001Object.keys()\u30e1\u30bd\u30c3\u30c9\u306b\u3088\u3063\u3066\u8fd4\u3055\u308c\u308b\u30ad\u30fc\u306e\u9806\u756a\u306f\u3001\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u8ffd\u52a0\u9806\u3084\u5b9a\u7fa9\u9806\u3067\u306f\u306a\u304f\u3001\n\u5b9f\u88c5\u306b\u4f9d\u5b58\u3059\u308b\u3002\u3064\u307e\u308a\u3001\u30ad\u30fc\u3068\u5024\u306e\u53d6\u308a\u51fa\u3057\u9806\u5e8f\u306f\u4fdd\u8a3c\u3055\u308c\u306a\u3044\u3002\n\u305d\u306e\u305f\u3081\u3001Object.values()\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30ad\u30fc\u3068\u5024\u3092\u53d6\u5f97\u3059\u308b\u969b\u306b\u3001\n\u5024\u306e\u9806\u756a\u306b\u4f9d\u5b58\u3059\u308b\u51e6\u7406\u3092\u884c\u3046\u3079\u304d\u3067\u306f\u306a\u3044\u3002\n\u305d\u308c\u304b\u3089\u3001Object.entries()\u3082ES2017\u3067\u5c0e\u5165\u3055\u308c\u305f\u6a5f\u80fd\u3067\u3042\u308b\u305f\u3081\u3001\u53e4\u3044\u74b0\u5883\u3067\u306f\u5229\u7528\u3067\u304d\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308b\u3002\n\n*\/\n\nconsole.log(\"Object.entries()\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u3063\u3066\u3001query\u306b\u542b\u307e\u308c\u308b\u5024\u306fforEach()\u30e1\u30bd\u30c3\u30c9\u3067\u53d6\u308a\u51fa\u3057\u53ef\u80fd\u3067\u3042\u308b\u3002\");\nconst entries = Object.entries(q.query);\nentries.forEach(([key, value]) => {console.log(`${key} = ${value}`);});\n\nconsole.log(\"\");\n\n\/*\n\nObject.values()\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u5024\u3092\u914d\u5217\u3068\u3057\u3066\u8fd4\u3059\u3002\n\u305f\u3060\u3057\u3001Object.values()\u30e1\u30bd\u30c3\u30c9\u306b\u3088\u3063\u3066\u8fd4\u3055\u308c\u308b\u5024\u306e\u9806\u756a\u306f\u3001\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u8ffd\u52a0\u9806\u3084\u5b9a\u7fa9\u9806\u3067\u306f\u306a\u304f\u3001\n\u5b9f\u88c5\u306b\u4f9d\u5b58\u3059\u308b\u3002\u3064\u307e\u308a\u3001\u5024\u306e\u53d6\u308a\u51fa\u3057\u9806\u5e8f\u306f\u4fdd\u8a3c\u3055\u308c\u306a\u3044\u3002\n\u305d\u306e\u305f\u3081\u3001Object.values()\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u5024\u3092\u53d6\u5f97\u3059\u308b\u969b\u306b\u3001\n\u5024\u306e\u9806\u756a\u306b\u4f9d\u5b58\u3059\u308b\u51e6\u7406\u3092\u884c\u3046\u3079\u304d\u3067\u306f\u306a\u3044\u3002\n\n*\/\n\nconsole.log(\"Object.values()\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u3063\u3066\u3001query\u306b\u542b\u307e\u308c\u308b\u5024\u306fforEach()\u30e1\u30bd\u30c3\u30c9\u3067\u53d6\u308a\u51fa\u3057\u53ef\u80fd\u3067\u3042\u308b\u3002\");\nconst value = Object.values(q.query);\nvalue.forEach((value) => console.log(\"value = \" +value));\n<\/code><\/pre>\n\n\n\n<br>\n<script async=\"\" src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-3461056110605997\" crossorigin=\"anonymous\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-3461056110605997\" data-ad-slot=\"3137443461\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9f\u884c\u7d50\u679c\u306f\u6b21\u306e\u901a\u308a\u306b\u306a\u308b\u3002<\/p>\n\n\n\n<pre><code>\nC:\\node\\sample3&gt;node -v\nv18.15.0\n\nC:\\node\\sample3&gt;npm -v\n8.13.2\n\nC:\\node\\test&gt;node test4.js\nNode.js v6.x\u4ee5\u964d\u3067URL\u69cb\u9020\u306e\u5206\u89e3\u306f2\u7a2e\u985e\u306e\u65b9\u6cd5\u304c\u3042\u308b\u3002\n\u300cWHATWG URL\u300d\u3068\u300cLegacy URL\u300d\u3067\u3042\u308b\u3002\n\u3053\u306e2\u3064\u306fURL\u306e\u5206\u89e3\u65b9\u6cd5\u304c\u9055\u3046\u3002\n\u65b0\u898f\u958b\u767a\u3067\u306f\u300cWHATWG URL\u300d\u3092\u4f7f\u3046\u3053\u3068\u3002\n\u300cWHATWG URL\u300d\u306f\u30d6\u30e9\u30a6\u30b6\u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u3082\u306e\u3068\u540c\u3058\u3067\u3042\u308b\u3002\n\u300cLegacy URL\u300d\u306fNode.js v18.15.0\u3067\u975e\u63a8\u5968\u306b\u306a\u3063\u3066\u3044\u308b\u3002\n\n\u2605WHATWG URL\u2605\nURL {\n  href: &#039;https:\/\/user:pass@sub.example.com:8080\/p\/a\/t\/h?query=100&amp;a=9#hash&#039;,\n  origin: &#039;https:\/\/sub.example.com:8080&#039;,\n  protocol: &#039;https:&#039;,\n  username: &#039;user&#039;,\n  password: &#039;pass&#039;,\n  host: &#039;sub.example.com:8080&#039;,\n  hostname: &#039;sub.example.com&#039;,\n  port: &#039;8080&#039;,\n  pathname: &#039;\/p\/a\/t\/h&#039;,\n  search: &#039;?query=100&amp;a=9&#039;,\n  searchParams: URLSearchParams { &#039;query&#039; =&gt; &#039;100&#039;, &#039;a&#039; =&gt; &#039;9&#039; },\n  hash: &#039;#hash&#039;\n}\nurl:       https:\/\/user:pass@sub.example.com:8080\/p\/a\/t\/h?query=100&amp;a=9#hash\nhref:      https:\/\/user:pass@sub.example.com:8080\/p\/a\/t\/h?query=100&amp;a=9#hash\norigin:    https:\/\/sub.example.com:8080\nprotocol:  https:\nusername:  user\npassword:  pass\nhost:      sub.example.com:8080\nport:      8080\nhostname:  sub.example.com\npathname:  \/p\/a\/t\/h\nhash:      #hash\nsearch:    ?query=100&amp;a=9\n\nURLSearchParams\u306b\u542b\u307e\u308c\u308b\u5024\u306fforEach()\u30e1\u30bd\u30c3\u30c9\u3067\u53d6\u308a\u51fa\u3057\u53ef\u80fd\u3067\u3042\u308b\u3002\nquery = 100\na = 9\n\n\u2605Legacy URL\u2605\nUrl {\n  protocol: &#039;https:&#039;,\n  slashes: true,\n  auth: &#039;user:pass&#039;,\n  host: &#039;sub.example.com:8080&#039;,\n  port: &#039;8080&#039;,\n  hostname: &#039;sub.example.com&#039;,\n  hash: &#039;#hash&#039;,\n  search: &#039;?query=100&amp;a=9&#039;,\n  query: [Object: null prototype] { query: &#039;100&#039;, a: &#039;9&#039; },\n  pathname: &#039;\/p\/a\/t\/h&#039;,\n  path: &#039;\/p\/a\/t\/h?query=100&amp;a=9&#039;,\n  href: &#039;https:\/\/user:pass@sub.example.com:8080\/p\/a\/t\/h?query=100&amp;a=9#hash&#039;\n}\nurl:       https:\/\/user:pass@sub.example.com:8080\/p\/a\/t\/h?query=100&amp;a=9#hash\nhref:      https:\/\/user:pass@sub.example.com:8080\/p\/a\/t\/h?query=100&amp;a=9#hash\nprotocol:  https:\nslashes:   true\nauth:      user:pass\nhost:      sub.example.com:8080\nport:      8080\nhostname:  sub.example.com\npathname:  \/p\/a\/t\/h\nhash:      #hash\nsearch:    ?query=100&amp;a=9\n\nObject.keys()\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u3063\u3066\u3001query\u306b\u542b\u307e\u308c\u308b\u5024\u306fforEach()\u30e1\u30bd\u30c3\u30c9\u3067\u53d6\u308a\u51fa\u3057\u53ef\u80fd\u3067\u3042\u308b\u3002\nquery = 100\na = 9\n\nObject.entries()\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u3063\u3066\u3001query\u306b\u542b\u307e\u308c\u308b\u5024\u306fforEach()\u30e1\u30bd\u30c3\u30c9\u3067\u53d6\u308a\u51fa\u3057\u53ef\u80fd\u3067\u3042\u308b\u3002\nquery = 100\na = 9\n\nObject.values()\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u3063\u3066\u3001query\u306b\u542b\u307e\u308c\u308b\u5024\u306fforEach()\u30e1\u30bd\u30c3\u30c9\u3067\u53d6\u308a\u51fa\u3057\u53ef\u80fd\u3067\u3042\u308b\u3002\nvalue = 100\nvalue = 9\n\nc:\\node\\test&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/yinm.info\/20201110\/\">Node.js\u306eurl\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u4f7f\u3046\u3068\u304d\u306f\u3001WHATWG URL API\u3092\u4f7f\u3046 | \u697d\u3057\u3044\u3060\u3051\u3067\u5341\u5206\u3067\u3059 (yinm.info)<\/a> ExternalLink<br><a href=\"http:\/\/yohshiy.blog.fc2.com\/blog-entry-316.html\">Node.js API (url) &#8211; URL \u6587\u5b57\u5217\u306e\u89e3\u6790\u3068\u751f\u6210 | \u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u30ba\u96d1\u8a18\u5e33 (fc2.com)<\/a> ExternalLink<br><a href=\"https:\/\/www.udemy.com\/course\/introductory-nodejs\/\">Node.js \u5165\u9580 \u30fc\u6f14\u7fd2\u3057\u306a\u304c\u3089\u5b66\u3076\u57fa\u672c\u30af\u30e9\u30b9\u306e\u4f7f\u3044\u65b9\u30fc | Udemy<\/a> ExternalLink<\/p>\n\n\n\n<script type=\"text\/javascript\">\njQuery(function($){\n$(\".jp-video\").hide();\n});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Node.js v6.x\u4ee5\u964d\u3067URL\u69cb\u9020\u306e\u5206\u89e3\u306f2\u7a2e\u985e\u306e\u65b9\u6cd5\u304c\u3042\u308b\u3002\u300cWHATWG URL\u300d\u3068\u300cLegacy URL\u300d\u3067\u3042\u308b\u3002\u3053\u306e2\u3064\u306fURL\u306e\u5206\u89e3\u65b9\u6cd5\u304c\u9055\u3046\u3002\u65b0\u898f\u958b\u767a\u3067\u306f\u300cWHATWG URL\u300d\u3092\u4f7f\u3046\u3053\u3068\u3002WHATWG [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[6],"tags":[],"class_list":["post-1595","post","type-post","status-publish","format-standard","hentry","category-node-js"],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/posts\/1595","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/attacktube.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1595"}],"version-history":[{"count":14,"href":"http:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/posts\/1595\/revisions"}],"predecessor-version":[{"id":4295,"href":"http:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/posts\/1595\/revisions\/4295"}],"wp:attachment":[{"href":"http:\/\/attacktube.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1595"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/attacktube.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1595"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/attacktube.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}