澶у濂斤紝椋炶檸灏忓摜銆傚ソ涔呮病鏉ヨ繖閲屾兂浜嗐€傚鏋滄垜鍐嶆潵锛岄偅涓€瀹氭槸骞茶揣銆備粠Deno寮€濮嬶紝FlyingFox甯︽潵浜嗚縿浠婁负姝㈢粷瀵瑰墠鎵€鏈湁鐨凞eno绯诲垪銆傝瘽涓嶅璇达紝璇磋鎶€鏈€備綘瀛︿笉鍒扮殑Deno灏卞湪杩欓噷銆傝繕璁板緱Github涓婂涓嶅埌鐨凞eno鍚楋紵2020骞?鏈?3鏃ワ紝Deno1.0姝e紡鍙戝竷銆備綔涓烘柊鐨勫奖鍝嶈€呰繍琛屾椂锛孌eno鐪熺殑浼氬彇浠ode鍚楋紵杩欎釜闂瑕佽拷婧埌2018骞达紝浠嶯ode涔嬬埗RyanDahl鐨勬紨璁插紑濮嬶紝Ryan鍦ㄦ紨璁蹭腑璋堝埌浜嗗Node鐨勫崄澶т笉婊★紝骞跺湪婕旇鏈€鍚庡甯冧簡Deno椤圭洰銆傛垜鍦ㄨ繖閲屽彧鍒楀嚭涓変釜鏂板姛鑳姐€傞鍏堬紝Deno鏄竴涓狫avaScript/TypeScript杩愯鏃讹紝搴曞眰鍩轰簬瓒呴珮鎬ц兘鐨凴ust缂栧啓锛屽湪鎬ц兘鍜屽瓨鍌ㄥ畨鍏ㄦ柟闈㈠叿鏈夊厛澶╀紭鍔裤€傚叾娆★紝Deno鏈変竴涓畬鏁寸殑鏍囧噯搴擄紝涓嶅啀鏈塏PM鎴杗ode_modules鏂囦欢澶癸紝鍏佽浠庝换浣曞湴鏂瑰鍏ユ墍闇€鐨勬ā鍧椼€傚彟澶栵紝Deno闆嗘垚浜員ypeScript锛屼笉鍐嶅儚浠ュ墠閭f牱鐢ㄥ伐鍏风紪璇戯紝鑰屾槸閫氳繃鍐呴儴杞崲銆備絾鏄ソ鍍忓張瑕佽劚鐨簡銆傜患涓婃墍杩帮紝浣犱細鍙戠幇Deno纭疄姣攂lue濂姐€備細涓嶄細琚彇浠e彧鏄椂闂撮棶棰樸€傛垜涔熺湅鍒板緢澶氫汉鍦ㄥ仛deno鍜宯ode鐨勬€ц兘瀵规瘮锛屼絾鏄洰鍓嶆垜瑙夊緱瀹屽叏娌℃湁蹇呰鍋氫袱鑰呯殑鎬ц兘瀵规瘮銆傚畨瑁呮垜浠竴寮€濮嬪苟涓嶅叧蹇僤eno搴曞眰鐢ㄧ殑鏄痝o杩樻槸rust锛屼负浠€涔堣浠巊o鏀规垚rust锛屾垨鑰呰deno鐨勬妧鏈灦鏋勬槸浠€涔堬紵鏆傛椂鍏堜笉绠¤繖浜涳紝鎴戜滑浼氭妸deno褰撲綔涓€涓柊鐨剅untime锛屽彧鍋歳untime銆備粠闆跺埌涓€锛屾惌寤轰竴濂楄剼鎵嬫灦锛岀劧鍚庢參鎱㈡繁鍏ャ€侱eno鍙互鍦∕ac銆丩inux鍜學indows涓婅繍琛屻€侱eno涔熶笉闇€瑕佸叾浠栦緷璧栭」銆傚畨瑁呮柟寮忥細Shell锛圡ac銆丩inux锛夛細curl-fsSLhttps://deno.land/x/install/install.sh|shPowerShell(Windows):iwrhttps://deno.land/x/install/install.ps1-useb|iexHomebrew(Mac):brewinstalldenoChocolatey(Windows):chocoinstalldenoScoop(Windows):scoopinstalldeno绗竴涓緥瀛愪篃鏄潵鑷畼鏂癸紝姣忚鎴戦兘鍔犱簡璇存槑銆傚涓嬶細//鍒涘缓鏂囦欢/server.ts//涓嶉渶瑕佸儚node涓€鏍峰幓npm锛岃繖閲宨mport{serve}from"https://deno.land/std@0.63.0/http/server.ts";//鏋勫缓鏈嶅姟锛岃缃鍙onsts=serve({port:8000});//杩欓噷鐩存帴returnforawait(constreqofs){req.respond({body:"HelloWorld\\n"});}鏁翠釜浠g爜寰堢畝鍗曪紝璇硶涔熸槸ts锛屽拰node寰堝儚銆傛湁node鍩虹鐨勫悓瀛﹀彲浠ョ洿鎺ヤ笂鎵嬨€傝繍琛屽懡浠わ細denorun--allow-net./server.ts锛岀劧鍚庡湪娴忚鍣ㄤ腑鎵撳紑http://localhost:8000锛屽彲浠ョ湅鍒癶elloworld锛屽涓嬪浘锛氭鏋堕€夋嫨浼楁墍鍛ㄧ煡锛宯ode鐨勬鏋舵瘮杈冩垚鐔燂紝鍥藉鏈塶est.js锛屽浗鍐呮湁egg.js銆傜洰鍓岲eno鐨勭敓鎬佸叾瀹炶繕涓嶆垚鐔燂紝妗嗘灦閮芥槸琚叾浠栨鏋舵ā浠跨殑銆傛垜涓嶄細浠嬬粛鍏朵腑鐨勫緢澶氥€傝繖閲屾垜缁欏ぇ瀹舵帹鑽愪袱涓鏋躲€傚涓嬶細oakalosaur鎺ㄨ崘oak鐨勫師鍥犲緢绠€鍗曪紝灏辨槸鎴戜滑鏁翠釜鑴氭墜鏋堕兘鏄熀浜巓ak鐨勩€侽ak妯′豢浜唍ode鐨勬鏋秌oa锛屼粠鍚嶅瓧灏卞彲浠ョ湅鍑烘潵銆備箣鎵€浠ユ帹鑽恆losaur锛屾槸鍥犱负瀹冨緢濂藉銆傛湁鍏磋叮鐨勫彲浠ュ幓鐪嬬湅杩欎釜妗嗘灦鐨勬簮鐮侊紝鏈夊緢澶氬€煎緱鍊熼壌鐨勫湴鏂广€傞铏庢暀澶у鎼剼鎵嬫灦銆傝櫧鐒舵病鏈夌敤鍒拌繖涓鏋讹紝浣嗘槸寰堝搴曞眰鐨勫疄鐜颁篃鍙傝€冧簡杩欎釜妗嗘灦锛屾瘮濡傛敞瑙h矾鐢便€傚ソ浜嗭紝妗嗘灦浠嬬粛鍒版缁撴潫锛屽悗闈㈠啀娣卞叆銆傝瘽涓嶅璇达紝鍏堜妇涓猳ak鐨勪緥瀛愶細//寮曞叆oak妗嗘灦import{Application}from"https://deno.land/x/oak/mod.ts";//鍒濆鍖朿onstapp=newApplication();//鍚宬oa锛岃繍琛屼笂涓嬫枃app.use((ctx)=>{ctx.response.body="HelloWorld!";});//鐩戝惉绔彛awaitapp.listen({port:8000});杩愯鐨勬椂鍊欏彲鑳戒細鎶ラ敊锛屽涓嬶細鏄笉鏄湁鐐归儊闂枫€傚叾瀹炲ぇ鍙笉蹇呫€傝繖涓棶棰樻槸鐢变簬杩唬deno鐗堟湰鏃秙td鐗堟湰娌℃湁鏇存柊鍒版渶鏂扮増鏈鑷寸殑銆傞渶瑕佹敞鎰忕殑鏄紝deno鏄釜鏂扮帺鎰忓効锛屽潙寰堝锛屽畼鏂逛篃鍦ㄩ绻佽凯浠hВ鍐宠繖浜涘潙銆傛墍浠ワ紝鐞嗚В涓囧瞾銆傛渶绠€鍗曠殑瑙e喅鏂规灏辨槸灏唎ak鐨勭増鏈崌绾у埌鏈€鏂扮増鏈紝濡備笅渚嬫墍绀恒€俹ak鐨勮矾鐢遍儴鍒嗕笌koa涓嶅悓鐨勬槸oak鐩存帴鎻愪緵浜嗚矾鐢憋紝鍙渶瑕佸鍏ュ嵆鍙€傚涓嬶細//鍗囩骇鍒版渶鏂扮増鏈殑oakimport{Application,Router}from"https://deno.land/x/oak@v6.0.1/mod.ts";//杩欐槸constbooks瀹樻柟鐨勪緥瀛?newMap();books.set("1",{id:"1",title:"鍚铏庤亰deno",author:"椋炵嫄",});//鍒涘缓涓€涓猺outeconstrouter=newRouter();//璺敱锛岀敤娉曞悓koa-routerrouter.get("/",(context)=>{context.response.body="Helloworld!";}).get("/book",(context)=>{context.response.body=Array.from(books.values());}).get("/book/:id",(context)=>{if(context.params&&context.params.id&&books.has(context.params.id)){context.response.body=books.get(context.params.id);}});constapp=newApplication()澶嶅埗浠g爜;//搴旂敤璺敱app.use(router.routes());//鍏佽璺敱涓棿浠跺紩鍏pp.use(router.allowedMethods());awaitapp.listen({port:8000});璇疯浣忥紝涓€瀹氳浣跨敤鏈€鏂扮増鏈€傚悓鏍凤紝杈撳叆鍛戒护杩愯銆傚涓嬪浘锛坧ostman娴嬭瘯鐣岄潰锛夛細鎷嗗垎璺敱MVC妯″紡澶у閮藉緢鐔熸倝浜嗐€傝繖閲屾垜浠彧鏄仛涓€涓畝鍗曠殑鎷嗗垎锛屽皢璺敱灞傚拰鎺у埗灞傚垎寮€銆傚垱寤轰竴涓猚ontroller鏂囦欢澶癸紝骞跺湪璇ユ枃浠跺す涓嬪垱寤轰竴涓猙ookController鏂囦欢锛屽涓嬶細//鍒涘缓bookController.ts,//鎴戜滑鍏堟妸鏁版嵁绉诲埌杩欓噷鍐嶈constbooks=newMap();books銆俿et("1",{id:"1",title:"鍚铏庡拰deno鑱婂ぉ",author:"椋炵嫄",});//杩欓噷鐩存帴杩斿洖涓€涓璞★紝鎶婅矾鐢辨槧灏勬柟娉曠Щ鍒拌繖閲宔xportdefault{getbook:((context:any)=>{context.response.body=Array.from(books.values());}),getbookById:((context:any)=>{if(context.params&&context.params.id&&books.has(context.params.id)){context.response.body=books.get(context.params.id);}})}鍦ㄦ牴鐩綍鍒涘缓router.ts锛屼唬鐮佸涓嬶細import{Router}from'https://deno.land/x/oak@v6.0.1/mod.ts';//瀵煎叆鎺у埗灞傜殑鏂囦欢importbookControllerfrom'./controller/bookController.ts'constrouter=newRouter();璺敱鍣?get("/",(context)=>{context.response.body="Helloworld!";}).get("/book",bookController.getbook).get("/book/:id",bookController.getbookById)exportdefaultrouter鐨勫師濮嬪叆鍙f枃浠秙erver.ts鍙樺緱闈炲父绠€娲侊紝濡備笅锛歩mport{Application}from'https://deno.land/x/oak@v6.0.1/mod.ts';浠?./router.ts'瀵煎叆璺敱鍣╟onstapp=newApplication();app.use(router.routes());app.use(router.allowedMethods());awaitapp.listen({port:8000});杩欐牱寰堢畝娲侊紝涔熸湁鍒╀簬鎵╁睍銆傛瘮濡傦細鍚庨潰鐢ㄥ埌涓氬姟閫昏緫鐨勬椂鍊欙紝鎴戜滑鍙互鍔犱竴涓猻ervice灞傦紝浠ュ悗鐢ㄥ埌涓棿浠剁殑鏃跺€欙紝鍙互鍔犱腑闂翠欢灞傦紝鐒跺悗鎵╁睍寮傚父澶勭悊绛夛紝鍦ㄦ鍩虹涓婏紝鎴戜滑浼氱户缁繁鍏ヤ互涓嬬珷鑺傘€備粖澶╃殑鍐呭鍏跺疄宸茬粡瀹屾垚浜嗐€傝繖閲屽啀浠嬬粛涓€涓嬶紝涓轰粈涔堣杩欎釜绯诲垪鏄灦鏋勭骇鍒殑鎬濊矾鍛紵鍥犱负鎴戜滑鍐欎唬鐮佺殑鏃跺€欙紝浼氳€冭檻涓€浜涘叿浣撶殑鍦烘櫙锛屾瘮濡傚井鏈嶅姟銆傚氨鍍廹olang涓殑go-micro锛屼細闆嗘垚grpc銆乪tcd銆乬in绛夛紝濡傛灉澶у鏈夊叴瓒o紝鎴戜篃鍙互鍐欎竴濂梘olang绯诲垪鍒嗕韩缁欏ぇ瀹躲€傛湁澶涓滆タ鎯宠窡澶у鍒嗕韩锛屾瘮濡俆ensorFlow.js锛孞ulia閲忓寲浜ゆ槗绛夌瓑锛屽憙~濂藉儚璺戦浜嗭紝鎷夊洖鏉ョ粰澶у涓嬩釜缁撳眬褰╄泲涓轰笅涓€绡囨枃绔犳墦涓嬪熀纭€銆傚僵铔嬶紙鏀归€犲叆鍙f枃浠讹級涓嬮潰鎴戜滑灏嗕互绫荤殑鏂瑰紡缂栧啓浠g爜锛屼粠鍏ュ彛鏂囦欢寮€濮嬶紝鏀归€犲涓嬶細//server.tsimport{Application}from'https://deno.land/x/oak@v6.0.1/mod.ts';浠?./router.ts'瀵煎叆璺敱鍣╟onstapp=newApplication();classServer{constructor(){this.init()}asyncinit(){app.use(router.routes());app.use(router.allowedMethods());this.listen()}asynclisten(){awaitapp.listen({port:8000});}}newServer()杩欓噷灏变笉澶氳浜嗭紝杩欎釜鍦版柟鎴戜滑鍗曠嫭璇存槑涓€涓嬶紝涓昏鏄笁鐐癸細1.鍒涘缓涓€涓猻erver绫伙紝鍒涘缓涓€涓垵濮嬪寲鍑芥暟init()2.鍦ㄦ瀯閫犲嚱鏁颁腑璋冪敤鍒濆鍖栧嚱鏁帮紝浠ュ強鎶婅矾鐢便€佷腑闂翠欢銆佺洃鍚嚱鏁帮紝鎵€鏈夐渶瑕佸垵濮嬪寲鍜屾墽琛岀殑鍑芥暟閮藉甫杩涙潵銆?.鏈€鍚庯紝杩愯杩欎釜绫汇€傝繖鏍峰仛鐨勫ソ澶勬槸鏍囧噯鍖栧拰鎵╁睍銆傚洖澶寸湅涓嬮瑙堬紝杩欑瘒鏂囩珷鐨勫唴瀹瑰緢绠€鍗曪紝涓昏鏄畨瑁卍eno杩欎釜绠€鍗曞疄鐢ㄧ殑oak妗嗘灦锛屾媶鍒嗚矾鐢便€備笅娆$洿鎺ヨtypescript瑁呴グ鍣ㄦā寮忥紝娉ㄨВ锛屽疄鐜版敞瑙h矾鐢便€傛帶鍒跺眰涔熸槸鎸夌収class绫绘潵鍐欑殑锛屽氨鍍廕ava鐨剆pringmvc涓€鏍凤紝濡備笅鍥炬墍绀猴細浠庝笂鍥惧彲浠ョ湅鍑猴紝鏍规湰涓嶉渶瑕乺outer鏂囦欢銆備笉绠℃槸node銆乨eno杩樻槸golang锛岄铏庣湡鐨勪笉鍠滄涓€涓崟鐙殑router鏂囦欢鏉ョ淮鎶よ矾鐢憋紝澶夯鐑︿簡銆傛墍浠ユ垜姣忔鎼灦瀛愮殑鏃跺€欙紝涓€瀹氳鍏堟妸璧扮嚎鍋氬ソ锛屼互鍏嶉夯鐑︺€傜幇鍦ㄦ槑鐧戒负浠€涔堜笅娆$洿鎺ュ紑鍚敞瑙h矾鐢变簡銆侱eno鐨勬敞瑙h矾鐢辫繕鏄竴娉笁鎶橈紝鍥犱负瀹屽叏鐓ф惉node浼氭湁涓€浜涘潙銆傛暚璇锋湡寰咃紝鍛靛懙馃槣~