{"id":1060,"date":"2020-10-05T09:00:58","date_gmt":"2020-10-05T00:00:58","guid":{"rendered":"http:\/\/mobilelab.khu.ac.kr\/?p=1060"},"modified":"2020-04-30T14:21:28","modified_gmt":"2020-04-30T05:21:28","slug":"dart-programmer-38","status":"publish","type":"post","link":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/2020\/10\/05\/dart-programmer-38\/","title":{"rendered":"Dart Programmer \ub418\uae30 [38]"},"content":{"rendered":"\n<h4>&lt; Web \uac1c\ubc1c \u2013 \u201cHello, World!\u201d Dart web-only app &gt;<\/h4>\n\n\n\n<p>\uc0ac\uc2e4 \uc55e\uc11c\uc758 \uae00\uc744 \ud1b5\ud574\uc11c, Dart \uc5b8\uc5b4\ub85c\n\uc6f9 \ube0c\ub77c\uc6b0\uc800\ub97c \ud1b5\ud574\uc11c \ucee8\ud150\uce20\ub97c \uc81c\uacf5\ud558\ub294 Web \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub9cc\ub4e0 \uc148 \uc785\ub2c8\ub2e4. \uc55e\uc11c \uae00\uc758 main.dart \uc18c\uc2a4 \ucf54\ub4dc\uc758 \ub0b4\uc6a9\uc744 \uc544\ub798\uc640 \uac19\uc774 \u201cHello,\nWorld!\u201d\ub97c \ucd9c\ub825\ud558\ub3c4\ub85d \ubcc0\uacbd\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>querySelector(&#8216;#output&#8217;).text\n= &#8216;Hello, World!&#8217;;<\/p>\n\n\n\n<p>\uadf8\ub9ac\uace0, \ub2e4\uc2dc\nWebDev\ub97c \ud1b5\ud574\uc11c \ud574\ub2f9 Web \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc2e4\ud589\ud574\uc11c \ud654\uba74 \uacb0\uacfc\uac00 [\uadf8\ub9bc 1]\uacfc \uac19\uc774 \ub098\uc624\ub294\uc9c0 \ud655\uc778 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/04\/\u1100\u1173\u1105\u1175\u11b71-1.png\" alt=\"\" class=\"wp-image-1064\" width=\"279\" height=\"222\"\/><figcaption>[\uadf8\ub9bc 1] \u201cHello, World!\u201d \uc2e4\ud589 \ud654\uba74<\/figcaption><\/figure><\/div>\n\n\n\n<p>\uadf8\ub807\ub2e4\uba74, \uad73\uc774 \u201cHello, World!\u201d\ub97c \ubcc4\ub3c4\uc758 \ucc55\ud130\ub85c \ub2e4\ub8ec \uc774\uc720\ub294 \ubb34\uc5c7 \uc77c\uae4c\uc694? \ubc14\ub85c Dart\ub85c\n\ub9cc\ub4e0 Web \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc5b4\ub5bb\uac8c Web \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \ub3d9\uc791\ud558\ub294 \uc9c0\ub97c \uc774\ud574\ud558\uae30 \uc704\ud568\uc785\ub2c8\ub2e4. \uc774 \uae00\uc740 HTML\/CSS\/JS\uc5d0 \ub300\ud55c \uacbd\ud5d8\uc774 \uc77c\ubd80 \uc788\ub2e4\uba74,\n\uc774\ud574\uac00 \uc6a9\uc774\ud569\ub2c8\ub2e4. \uadf8\ub807\uc9c0 \uc54a\ub2e4\uba74, \u201c\uc544 \uc774\ub7f0 \uac1c\ub150\uc774\uad6c\ub098\u201d \uc815\ub3c4\uc758 \ud070 \uadf8\ub9bc\ub9cc \uc774\ud574\ud558\uba74 \ub418\uc9c0 \uc54a\uc744\uae4c \uc2f6\uc2b5\ub2c8\ub2e4. <\/p>\n\n\n\n<p>Dart\uc5d0\uc11c\ub294 \uac1c\ubc1c\uc911\uc778 \ud504\ub85c\uadf8\ub7a8\uc740 development \ubc84\uc804, \uadf8\ub9ac\uace0 \uac1c\ubc1c\uc744 \ub9c8\uce58\uace0 \uc2e4\uc81c \uc11c\ube44\uc2a4\uc5d0\n\ub4e4\uc5b4\uac00\ub294 \ud504\ub85c\uadf8\ub7a8\uc744 deploy(\ud639\uc740 release)\ub85c \uad6c\ubd84 \ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \uad6c\ubd84\ud558\ub294 \uc774\uc720\ub294 \uac19\uc740 \ud504\ub85c\uadf8\ub7a8\uc774\uc9c0\ub9cc, Dart\uc5d0\uc11c \uc801\uc6a9\ud558\ub294 \ub3c4\uad6c\uac00\n\ub2e4\ub974\uae30 \ub54c\ubb38 \uc785\ub2c8\ub2e4. Dart \uc5b8\uc5b4\ub85c \ub9cc\ub4e0 Web \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uae30\uc874\uc758 Web \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \uc2e4\ud589 \ud560 \uc218 \uc788\ub3c4\ub85d \ud558\uae30 \uc704\ud574\uc11c\ub294 Dart \uc5b8\uc5b4\ub85c \ub9cc\ub4e0\n\ud504\ub85c\uadf8\ub7a8\uc744 \uae30\uc874 Web \ube0c\ub77c\uc6b0\uc800\uac00 \uc774\ud574\ud560 \uc218 \uc788\ub294 \uc5b8\uc5b4\ub85c \ud45c\ud604\ud558\ub294 \uc911\uac04 \uacfc\uc815\uc774 \ud544\uc694\ud55c\ub370, \uc774\ub97c \uc704\ud574\uc11c development \ub2e8\uacc4\uc2dc\uc5d0\ub294\ndartdevc( <a href=\"https:\/\/dart.dev\/tools\/dartdevc\">https:\/\/dart.dev\/tools\/dartdevc<\/a> )\uac00 \uc0ac\uc6a9\ub418\uace0 deploy\ub97c \ud558\uc5ec \uc2e4\uc81c \uc11c\ube44\uc2a4\ub97c \ub9b4\ub9ac\uc988(release)\ud558\ub294 \ub2e8\uacc4\uc5d0\uc11c\ub294 dart2js( <a href=\"https:\/\/dart.dev\/tools\/dart2js\">https:\/\/dart.dev\/tools\/dart2js<\/a> )\uac00 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.\n\uc774\ubc88 \uae00\uc740 \uc774 \ub450\uac00\uc9c0 tool\uc744 \uc774\ud574\ud568\uc73c\ub85c\uc11c, \uc5b4\ub5bb\uac8c Dart \uc5b8\uc5b4\ub85c \ub9cc\ub4e0 \ud504\ub85c\uadf8\ub7a8\uc744 Web \ube0c\ub77c\uc6b0\uc800\ub4e4\uc774 \uc774\ud574\ud558\uace0 \uc218\ud589\ud558\ub294\uc9c0\uc5d0 \ub300\ud574\uc11c \uc911\uc810\uc801\uc73c\ub85c\n\ub2e4\ub8f9\ub2c8\ub2e4.<\/p>\n\n\n\n<p>dart2js\ub294 Dart \ucf54\ub4dc\ub97c \uc2e4\uc81c \uc11c\ube44\uc2a4\ub97c \uc6b4\uc601\ud558\ub294 \uc218\uc900\uc758 JavaScript \ucf54\ub4dc\ub85c \ubc14\uafd4\uc8fc\ub294\ntool \uc785\ub2c8\ub2e4.dartdevc\ub3c4 \ubaa9\uc801\uc740 \uac19\uc9c0\ub9cc, \uac1c\ubc1c \uc6a9\ub3c4\ub85c\ub9cc \uc0ac\uc6a9\ud558\ub294 \uac83\uc73c\ub85c \uad8c\uc7a5\ud569\ub2c8\ub2e4. \uc55e\uc11c WebDev\ub294 webdev serve\ub85c \uc2e4\ud589\ud558\ub294\n\uacbd\uc6b0\ub294 dartdevc\ub97c \uc2e4\ud589\ud558\uace0 (&#8211;release \ud50c\ub798\uadf8 \uc635\uc158\uc744 \uc918\uc11c dart2js\ub97c \uc2e4\ud589\ud558\ub3c4\ub85d \ubcc0\uacbd \uac00\ub2a5), webdev build\ub85c \uc2e4\ud589\ud558\uba74\ndart2js\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<p>\uac11\uc790\uae30 JavaScript\uc5d0 \ub300\ud55c \uc774\uc57c\uae30\uac00 \ub098\uc624\ub2c8 \ub2f9\ud669\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Dart \uc5b8\uc5b4\ub294 \uc0c8\ub86d\uac8c \ub098\uc628\n\uc5b8\uc5b4\ub85c\uc11c, \uae30\uc874\uc758 Web \ube0c\ub77c\uc6b0\uc800\ub4e4\uc5d0 \ub300\ud55c \ud638\ud658\uc131\uc744 \uace0\ub824\ud560 \ud544\uc694\uac00 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\uc5d0 Source-to-Source \ucef4\ud30c\uc77c \ubc29\uc2dd\uc744 \uc0dd\uac01\ud558\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4.\n\uc989 Dart \uc5b8\uc5b4\ub85c \ub9cc\ub4e0 \ud504\ub85c\uadf8\ub7a8\uc744 JaVascript \uc5b8\uc5b4 \uae30\ubc18 \ud504\ub85c\uadf8\ub7a8\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \uac83 \uc785\ub2c8\ub2e4. \ub530\ub77c\uc11c \ub300\ubd80\ubd84\uc758 Web \ube0c\ub77c\uc6b0\uc800\ub4e4\uc774 JavaScript\ub97c\n\uc9c0\uc6d0\ud558\uae30\uc5d0, Dart \uc5b8\uc5b4\ub85c \ub9cc\ub4e0 \ud504\ub85c\uadf8\ub7a8\ub3c4 \uad81\uadf9\uc801\uc73c\ub85c JavaScript\ub97c \uc9c0\uc6d0\ud558\ub294 \ubaa8\ub4e0 Web \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \uc218\ud589\uc774 \uac00\ub2a5\ud55c \uac83 \uc785\ub2c8\ub2e4. \uc131\ub2a5\n\uc801\uc778 \ubd80\ubd84\uc5d0 \ub300\ud574\uc11c \uace0\ubbfc\uc744 \ud560 \uc9c0 \ubaa8\ub974\uaca0\uc9c0\ub9cc, dart2js\uc640 dartdevc\ub85c \ub9cc\ub4e4\uc5b4\uc9c4 JavaScript \ucf54\ub4dc\ub4e4\uc740 \ucd5c\uc801\ud654\ub41c \ud615\ud0dc\ub85c \ub9cc\ub4e4\uc5b4\uc9c4\ub2e4\uace0\n\ud558\ub2c8, \uc131\ub2a5\uc5d0 \uad00\uc2ec\uc774 \uc788\ub294 \uacbd\uc6b0\ub294 \uc9c1\uc811 \ubd84\uc11d\ud574 \ubcf4\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ucc38\uace0\ub85c Desktop\uc5d0\uc11c \ub2e4\uc2dc \uc124\uba85\ud558\uaca0\uc9c0\ub9cc, Dart \uc5b8\uc5b4\ub85c \ub9cc\ub4e0 \ud504\ub85c\uadf8\ub7a8\uc774 \uc6b4\uc601\uccb4\uc81c \uc704\uc5d0\uc11c \uc9c1\uc811\n\uad6c\ub3d9\ud558\ub294 Native \ubc29\uc2dd(\ud504\ub85c\uadf8\ub7a8\uc774 Intel\/ARM\uc758 \uc2dc\uc2a4\ud15c\n\ucf54\ub4dc(\uae30\uacc4\uc5b4)\ub85c \ub3d9\uc791\ud55c\ub2e4\ub294 \uc758\ubbf8)\uc778 \uacbd\uc6b0, \uc989 \ub178\ud2b8\ubd81\uc774\ub098 \ub370\uc2a4\ud06c\ud0d1 \uc704\uc5d0\uc11c \uc9c1\uc811 Dart\ub85c \ub9cc\ub4e0 \ud504\ub85c\uadf8\ub7a8\uc744 \uc2e4\ud589\ud558\ub294 \uacbd\uc6b0\ub294\nStand-alone \ubaa8\ub4dc \ud639\uc740 Ahead-of-time (AOT) \ucef4\ud30c\uc77c \ubc29\uc2dd\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. Stand-alone \ubc29\uc2dd\uc758 \uacbd\uc6b0\ub294 Dart\nVM(Virtual Machine)\uc744 \uc0ac\uc6a9\ud558\ub294\ub370, Dart SDK\uc5d0 \ud3ec\ud568\ub41c Dart VM\uc774 CLI \ud658\uacbd\uc5d0\uc11c Dart \uc5b8\uc5b4\ub85c \ub9cc\ub4e0 \ud504\ub85c\uadf8\ub7a8\uc744 \uc2e4\ud589\ud558\ub294\n\ubc29\uc2dd \uc785\ub2c8\ub2e4. AOT \ubc29\uc2dd\uc740 Dart \ucf54\ub4dc\ub97c \uae30\uacc4\uc5b8\uc5b4\ub85c \ubcc0\uacbd\ud558\ub294 \ubc29\uc2dd\uc774\uba70, \uc0ac\uc2e4 \uc55e\uc11c \uc124\uba85\ud55c \ubaa8\ubc14\uc77c \uc571 \ub4e4\ub3c4, \uc571 \uc2a4\ud1a0\uc5b4 \ub4f1\uc7ac\uc2dc AOT \ucef4\ud30c\uc77c\ub41c\nDart \ucf54\ub4dc \ud615\ud0dc\ub85c \ubc30\ud3ec\ub418\uac8c \ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uba3c\uc800, dart2js\uc5d0 \ub300\ud574\uc11c \uc124\uba85\n\ud558\uaca0\uc2b5\ub2c8\ub2e4. dart2js\ub97c \uc0ac\uc6a9\ud558\uc5ec, Dart \uc5b8\uc5b4\ub85c \ub9cc\ub4e4\uc5b4\uc9c4 \ud504\ub85c\uadf8\ub7a8\uc744 JavaScript \uc5b8\uc5b4\uc758 \ud504\ub85c\uadf8\ub7a8\uc73c\ub85c \ubcc0\uacbd\ud558\ub294 \uba85\ub839\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.\n<\/p>\n\n\n\n<p>dart2js -O1 -o\ntarget.js source.dart<\/p>\n\n\n\n<p>\uc774 \uba85\ub839\uc740 source.dart\n\ud504\ub85c\uadf8\ub7a8\uc744 target.js \ud504\ub85c\uadf8\ub7a8\uc73c\ub85c \ubcc0\ud658\ud558\ub77c\ub294 \uc758\ubbf8\uc774\uba70, \uc774 \uacbd\uc6b0 \ucd5c\uc801\ud654 \uc635\uc158\uc740 -O1\uc73c\ub85c \ud560\ub2f9\ud558\uc5ec default \ubaa8\ub4dc\ub97c \uc0ac\uc6a9\ud55c\ub2e4\ub294 \uac83 \uc785\ub2c8\ub2e4.\n-o \uc635\uc158\uc774 output \ud654\uc77c\uc744 \uc9c0\uc815\ud558\ub294 \uac83\uc73c\ub85c \u201c-o target.js\u201d\uac00 \ud558\ub098\uc758 \uc758\ubbf8\ub85c \ubb36\uc774\ub294 \ud615\ud0dc \uc785\ub2c8\ub2e4. dart2js\ub97c \ud1b5\ud574\uc11c \ub9cc\ub4e4\uc5b4\uc9c0\ub294\n\ud654\uc77c\uc740 \ud558\ub098\uac00 \uc544\ub2c8\uace0 \ubcf5\uc218 \uac1c \uc785\ub2c8\ub2e4. \uc55e\uc11c\uc758 \u201cHello, World!\u201d \ud504\ub85c\uadf8\ub7a8\uc758 main.dart \ud654\uc77c\uc5d0 \ub300\ud574\uc11c \ub2e4\uc74c\uacfc \uac19\uc774 \uc2e4\ud589\ud574 \ubd05\ub2c8\ub2e4.<\/p>\n\n\n\n<p>dart2js -o target.js\nmain.dart<\/p>\n\n\n\n<p>\uc704\uc758 \uba85\ub839\uc744 \uc2e4\ud589\ud574 \ubcf4\uba74, \uac00\uc7a5\n\uae30\ubcf8\uc801\uc73c\ub85c target.js\uac00 \uc0dd\uc131\ub418\uace0 \ubd80\uc218\uc801\uc778 \ud654\uc77c\ub4e4\uc774 \uc0dd\uc131\ub41c \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uac01\uac01\uc758 \ud654\uc77c\ub4e4\uc758 \ub0b4\uc6a9\uc5d0 \uad00\uc2ec\uc774 \uc788\ub2e4\uba74\nGoogling\uc744 \ud1b5\ud574\uc11c \uc880 \ub354 \uc2ec\ub3c4 \uc788\uac8c \uc774\ud574\ud558\uae30\ub97c \uad8c\uc7a5 \ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<p>\ucd5c\uc801\ud654 \uc635\uc158\uc740 -O0\uc758 \uacbd\uc6b0 \ucd5c\uc801\ud558\n\ud558\uc9c0 \uc54a\uc74c \uc774\uace0, -O1\uc774 default \uc218\uc900\uc758 \ucd5c\uc801\ud654\uc774\uace0, \uadf8\ub9ac\uace0 -O2\/-O3\/-O4\ub294 \uc22b\uc790\uac00 \ud074\uc218\ub85d \uac15\ud654\ub41c \ucd5c\uc801\ud654\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4. \ucd5c\uc801\ud654\uc5d0\n\ub300\ud574\uc11c\ub294 \uac01\uac01\uc758 \ub2e8\uacc4\uac00 \uc5b4\ub5a4 \uc791\uc5c5\uc744 \uc218\ud589\ud558\ub294\uc9c0\ub97c \uba85\ud655\ud558\uac8c \uc774\ud574\ud558\uace0, \ud2b9\ubcc4\ud788 \ubb38\uc81c\uac00 \ub420 \uc218 \uc788\ub294 \ubd80\ubd84\uc5d0 \ub300\ud55c \uc124\uba85\uc744 \uc0ac\uc804\uc5d0 \uc219\uc9c0\ud558\uc5ec \ubcf8\uc778\uc758 \ud504\ub85c\uadf8\ub7a8\uc5d0\n\uc801\uc6a9 \uc2dc \ubb38\uc81c\uac00 \uc5c6\ub294\uc9c0\ub97c \ud655\uc778\ud558\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n\n\n\n<p>dart2js\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\ub97c\n\uc704\ud574\uc11c Dart \uacf5\uc2dd \uc0ac\uc774\ud2b8\uc5d0\uc11c\ub294 \ub2e4\uc74c\uc758 \ubb38\ubc95\uc5d0 \uc8fc\uc758\ud558\uba74 \ub354 \uc791\uace0 \ube60\ub978 JavaScript \ucf54\ub4dc\uac00 \uc0dd\uc131\ub41c\ub2e4\uace0 \uac00\uc774\ub4dc\ub77c\uc778\uc744 \uc81c\uc2dc\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc6b0\ub9ac\uac00\n\uc9c0\ub098\uc628 \ub0b4\uc6a9 \uc548\uc5d0\uc11c \uc124\uba85\uc774 \ub41c \ubb38\ubc95\ub3c4 \uc788\uace0, \ub2e4\ub8e8\uc9c0 \uc54a\uc740 \ub0b4\uc6a9\ub3c4 \uc788\uc73c\ub2c8, \uc9c0\uae08\uc740 \uc720\ub150\ud558\uace0, \ub098\uc911\uc5d0 \ubcf8\uc778\uc774 \uc9c1\uc811 Web \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc804\ubb38\uc801\uc73c\ub85c\n\uac1c\ubc1c\ud574\uc57c \ud560 \ub54c \ucc38\uc870\ud558\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n\n\n\n<ul><li>Don\u2019t use&nbsp;Function.apply().<\/li><li>Don\u2019t override&nbsp;noSuchMethod().<\/li><li>Avoid setting variables to null.<\/li><li>Be consistent with the types of arguments you pass into each function or method.<\/li><\/ul>\n\n\n\n<p>dart2js\uc640 \uac19\uc774, \uc790\ub3d9\uc73c\ub85c\n\uc18c\uc2a4 \ucf54\ub4dc\ub97c \uc0dd\uc131\ud558\ub294 \uacbd\uc6b0\ub294 \ud56d\uc0c1 \uc790\ub3d9 \uc0dd\uc131\ub41c \ucf54\ub4dc\uc758 \ud488\uc9c8\uc5d0 \uac71\uc815\uc744 \ud558\uac8c\ub429\ub2c8\ub2e4. \uc774\uc5d0 \ub300\ud574\uc11c Dart \uacf5\uc2dd \uc0ac\uc774\ud2b8\uc5d0\uc11c\ub294 \uc790\ub3d9 \uc0dd\uc131\uc73c\ub85c \ud3ec\ud568 \ub41c \ub77c\uc774\ube0c\ub7ec\ub9ac\uc758 \ud06c\uae30\uc5d0 \ub300\ud574 \uac71\uc815\ud558\uc9c0 \uc54a\uc544\ub3c4 \ub41c\ub2e4\uace0 \uc124\uba85\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uc5d0 \ub300\ud55c \uc774\uc720\ub97c, dart2js \ub3c4\uad6c\ub294 tree shaking \uae30\ubc95\uc744 \uc218\ud589\ud558\uc5ec \uc0ac\uc6a9\ud558\uc9c0 \uc54a\ub294 \ud074\ub798\uc2a4, \ud568\uc218, \uba54\uc18c\ub4dc \ub4f1\uc744 \uc0dd\ub7b5\ud55c\ub2e4\uace0 \ud569\ub2c8\ub2e4. \ub530\ub77c\uc11c,\n\uac1c\ubc1c\uc790\uac00 \ubd80\ub2f4\uc5c6\uc774, \ud544\uc694\ud55c \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uac00\uc838 \uc640\uc11c \ud504\ub85c\uadf8\ub7a8\uc744\n\ub9cc\ub4e4\uba74, dart2js\uac00 \ud544\uc694\uc5c6\ub294 \uac83\uc744 \uc81c\uac70\ud558\ub3c4\ub85d\n\ud55c\ub2e4\uace0 \uc548\uc2ec \uc2dc\ud0a4\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>dart2js\ub85c \uc0dd\uc131\ub41c JavaScript\n\ucf54\ub4dc\uac00 Web \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \uc2e4\ud589\ud560 \ub54c, \uc774\ub97c \ub514\ubc84\uadf8 \ud558\uace0\uc790 \ud55c\ub2e4\uba74, Web \ube0c\ub77c\uc6b0\uc800\uc758 \uac1c\ubc1c\uc790 \ubaa8\ub4dc\uc5d0\uc11c \uc2e4\ud589\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4. \uc774\ub97c \uc704\ud55c Web \ube0c\ub77c\uc6b0\uc800\ubcc4\n\uc124\uc815\uc5d0 \ub300\ud574\uc11c\ub294 Dart \uacf5\uc2dd \uc0ac\uc774\ud2b8\uc758 dart2js \uc124\uba85 \ubd80\ubd84\uc744 \ucc38\uc870( <a href=\"https:\/\/dart.dev\/tools\/dart2js#debugging\">https:\/\/dart.dev\/tools\/dart2js#debugging<\/a>\n)\ud558\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n\n\n\n<p>dartdevc\uc740 Dart\ub85c \ub9cc\ub4e0\nWeb \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uac1c\ubc1c \ubc0f \ub514\ubc84\uadf8 \ubaa9\uc801\uc73c\ub85c Chomer \ube0c\ub77c\uc6b0\uc800\ub97c \ud1b5\ud574\uc11c \uc218\ud589\ud558\ub294 \uacbd\uc6b0\uc5d0 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<p>dart2js\uc640 \ub2ec\ub9ac\ndartdevc\ub294 incremental \ucef4\ud30c\uc77c(\ud504\ub85c\uadf8\ub7a8 \uc804\uccb4\ub97c \ucef4\ud30c\uc77c \ud558\ub294 \ubc29\uc2dd\uc774 \uc544\ub2c8\uace0, \uc218\uc815\ub41c \ud504\ub85c\uadf8\ub7a8\uc758 \uc77c\ubd80\ub9cc \ub2e4\uc2dc \ucef4\ud30c\uc77c\ud558\ub294 \ubc29\uc2dd)\uc744 \uc9c0\uc6d0\ud558\uace0\nmodular JavaScript\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4. dartdevc\ub97c \uc0ac\uc6a9\ud558\ub294 webdev serve\uc640 \uac19\uc740 \ub3c4\uad6c\ub97c \uc0ac\uc6a9\ud558\uba74, Dart \ud30c\uc77c\uc744 \uc218\uc815\ud558\uace0,\nChrome\uc744 \uc0c8\ub85c \uace0\uce68\ud558\uba74, \uc218\uc815 \uc0ac\ud56d\uc744 \uac70\uc758 \uc989\uc2dc \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uc18d\ub3c4\ub294 dartdevc\uac00 Web \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc758\uc874\ud558\ub294 \ubaa8\ub4e0 \ud328\ud0a4\uc9c0\uac00\n\uc544\ub2c8\ub77c \uc5c5\ub370\uc774\ud2b8 \ub41c \ubaa8\ub4c8 \ub9cc \ucef4\ud30c\uc77c\ud558\uae30 \ub54c\ubb38\uc5d0 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>dartdevc\ub97c \uc0ac\uc6a9\ud55c \uccab \ubc88\uc9f8\n\ucef4\ud30c\uc77c\uc740 \uc804\uccb4 Web \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ucef4\ud30c\uc77c \ud574\uc57c \ud558\ubbc0\ub85c \uac00\uc7a5 \uc624\ub798 \uac78\ub9bd\ub2c8\ub2e4. \uadf8 \ud6c4, serve \uba85\ub839\uc774 \uacc4\uc18d \uc2e4\ud589\ub418\ub294 \ud55c dartdevc\ub97c \uc0ac\uc6a9\ud55c\n\uc0c8\ub85c \uace0\uce68 \uc2dc\uac04\uc740 dart2js\ubcf4\ub2e4 \ud6e8\uc52c \ube60\ub985\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uc774\uc720\ub85c webdev serve\uc758 \uac1c\ubc1c\/\ub514\ubc84\uadf8 \ubaa8\ub4dc \ub3d9\uc791 \uc2dc\uc5d0\ub294 dartdevc\ub97c \uc0ac\uc6a9\ud558\uc5ec\nDart \uc5b8\uc5b4\ub85c \ub9cc\ub4e4\uc5b4\uc9c4 \ud504\ub85c\uadf8\ub7a8\uc744 \uc2e4\ud589 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h4>\ub9c8\ubb34\ub9ac<\/h4>\n\n\n\n<p>\uc774\uc81c \uc6b0\ub9ac\ub294 \uc55e\uc11c WebDev\uc640\nStagehand\ub97c \uc124\uce58\ud558\uace0 \uc2e4\ud589\ud55c\ub2e4\ub294 \uac83\uc774 \uc5b4\ub5a4 \uc758\ubbf8\uc778\uc9c0\ub97c \ubcf4\ub2e4 \uad6c\uccb4\uc801\uc73c\ub85c \uc774\ud574\ud558\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. Stagehand\ub97c \ud1b5\ud574\uc11c\ub294 \uc0c8\ub86d\uac8c \uc2dc\uc791\ud558\ub294\n\ud504\ub85c\uc81d\ud2b8\uc5d0 \ud544\uc694\ud55c \ud654\uc77c\ub4e4\uc744 \uc790\ub3d9\uc73c\ub85c \uc0dd\uc131\ud574\uc8fc\ub294 \uc791\uc5c5\uc744 \ud569\ub2c8\ub2e4. \uc774\ub97c \ud1a0\ub300\ub85c \ub9cc\ub4e0 Web \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc740 Web \ube0c\ub77c\uc6b0\uc800\uc640\uc758 \ud638\ud658\uc131\uc73c\ub85c \uc778\ud558\uc5ec JavaScript\ub85c\n\ubcc0\ud658\ud558\ub294 \ub2e8\uacc4\ub97c \uac70\uce58\uac8c \ub418\ub294\ub370, WebDev\ub294 \uc774\ub97c \uc704\ud55c dart2js\uc640 dartdevc \ub3c4\uad6c\ub97c \uc0ac\uc6a9\ud558\uc5ec Dart \uc5b8\uc5b4 \ud504\ub85c\uadf8\ub7a8\uc744 JavaScript\n\uc5b8\uc5b4\ub85c \ubcc0\uacbd\ud558\uace0, Web \uc11c\ubc84\uac00 \uae30\ubcf8\uc801\uc73c\ub85c \uc218\ud589\ud574\uc57c \ud558\ub294 HTTP \uc11c\ubc84\uc758 \uae30\ub2a5\uc744 \uc218\ud589\ud558\uc5ec \uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/01\/b05-1.jpg\" alt=\"\" class=\"wp-image-267\" width=\"151\" height=\"54\"\/><\/figure><\/div>\n\n\n\n<p>Creative Commons License (CC BY-NC-ND)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&lt; Web \uac1c\ubc1c \u2013 \u201cHello, World!\u201d Dart web-only app &gt; \uc0ac\uc2e4 \uc55e\uc11c\uc758 \uae00\uc744 \ud1b5\ud574\uc11c, Dart \uc5b8\uc5b4\ub85c \uc6f9 \ube0c\ub77c\uc6b0\uc800\ub97c \ud1b5\ud574\uc11c \ucee8\ud150\uce20\ub97c \uc81c\uacf5\ud558\ub294 Web \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub9cc\ub4e0 \uc148 \uc785\ub2c8\ub2e4. \uc55e\uc11c \uae00\uc758 main.dart \uc18c\uc2a4 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[3],"tags":[15],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1060"}],"collection":[{"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/comments?post=1060"}],"version-history":[{"count":3,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1060\/revisions"}],"predecessor-version":[{"id":1066,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1060\/revisions\/1066"}],"wp:attachment":[{"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=1060"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=1060"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=1060"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}