当前位置: 首页 > Web前端 > JavaScript

使用PlopJs让开发更高效

时间:2023-03-27 15:04:13 JavaScript

鍚勪綅浜诧紝鎴戞槸鈥滃墠绔皬鏂板悓瀛︹€濓紝馃槆闀挎湡浠庝簨鍓嶇寮€鍙戯紝Android寮€鍙戯紝鐑》浜庢妧鏈紝鎴戣鍘诲湪缂栫▼鐨勮矾涓婅秺璧拌秺杩渵鍦ㄧ幇鍦ㄧ殑鍓嶇鍦堥噷闈紝澶ч儴鍒嗙殑妗嗘灦鍜屽簱閮戒細鎻愪緵缁欎綘涓€涓狢LI鏉ヤ娇鐢紝璁╀綘鍙互鍒涘缓涓€涓渶灏忓彲鐢ㄧ殑绋嬪簭銆傝繕鏈変竴浜涘皝瑁呭ソ鐨勫墠绔紑婧愰」鐩€傛瘮濡備竴浜涚鐞嗗钩鍙伴」鐩細鎻愪緵椤甸潰绾у拰缁勪欢绾х被CLI鐨勫姛鑳芥潵鍒涘缓鍩烘湰鐨勭粨鏋勬ā鏉匡紝鍥犱负鎴戜滑鐭ラ亾绠$悊骞冲彴杞欢涓殑椤甸潰涓庝竴鑸殑缁撴瀯椋庢牸鏄珮搴︿竴鑷寸殑锛屾墍浠ヨ繕鏄瘮杈冨悎閫傜殑姝ゆ椂瑕佷娇鐢ㄥ伐鍏锋潵瀹屾垚閲嶅鎬х殑宸ヤ綔銆傚鏋滄湁杩欐牱鐨勫伐鍏凤紝鏈€鎺ㄨ崘鐨勫伐鍏锋槸plopjs銆俻lop鏄竴涓交閲忕骇鐨勫伐鍏凤紝鍙互鏍规嵁绠€鍗曠殑闂瓟鐢熸垚浠g爜锛屼篃鍙互闅忕潃椤圭洰鐨勮凯浠i殢鏃舵洿鏀癸紝璁╁洟闃熷紑鍙戠殑鍐呭淇濇寔涓€鑷达紝鍚屾椂涔熻妭鐪佷簡鑺卞湪鍩虹鍜岄噸澶嶄笂鐨勬椂闂村伐浣溿€傚嚑涓渚嬫潵灞曠ずPlop鐨勬渶浣冲疄璺点€傛暣鐞嗗弬鑰冨ぇ绾诧細https://www.processon.com/view/link/6214b49df346fb06ecfc9804棰勯厤缃細渚濊禆瀹夎锛歯pminstall--save-devplop锛涢厤缃剼鏈細"new":"plop"锛屼娇鐢▂arnnew鎴杗pmrunnew鍒涘缓锛涢」鐩粨鏋勶細demo椤圭洰鐨勭洰褰曠粨鏋勫涓嬶紝鎴戜滑鎶婃墍鏈夌敤鍒扮殑妯℃澘閮芥斁鍒皃lop-templates鏂囦欢澶逛笅锛屾瘡濂楁ā鏉垮寘鍚竴涓猦bs鏍煎紡鐨勬ā鏉挎枃浠跺拰涓€涓猵rompt.js鐨勪氦浜掗泦鍚堬紝澶勭悊妯″潡涓虹劧鍚庣粺涓€娉ㄥ唽鍒伴」鐩牴鐩綍鐨刾lopfile.js鏂囦欢涓細plopjs-demo|--plop-templates|--controller|--index.hbs|--prompt.js|--src|--controller|--plopfile.js|--package.json娉ㄥ唽妯℃澘浠g爜鍙傝€冨涓嬶細constcontrollerGenerator=require('./plop-templates/controller/prompt')module.exports=function(plop){//exporteach鏂板缓鐨勬ā鏉垮鍏ュ悗锛岀敤plop鏋勫缓plop.setGenerator('controller',controllerGenerator)}鍥犱负妯℃澘鐨勫畾涔変娇鐢ㄤ簡handlebarsjs锛岃繖閲岀畝鍗曚粙缁嶄袱涓繀椤昏鐢ㄥ埌鐨勶紝涓€涓槸妯℃澘鍙傛暟杩樻湁涓€涓槸鏉′欢鍒ゆ柇锛屽浘鐗囨潵鑷簬瀹僺瀹樼綉锛氭ā鏉垮弬鏁帮細鏉′欢鍒ゆ柇锛氶厤缃瓹ontroller妯℃澘锛氳瀹炵幇鐨勫姛鑳斤細鑷畾涔塁ontroller鍚嶇О锛堝繀濉級锛涢€夋嫨缁ф壙鐨勬帶鍒跺櫒瀵硅薄锛涜緭鍑烘枃浠讹細src/controller/<鏂囦欢鍚?銆俲s;褰撳墠鎺у埗鍣ㄥ悕绉版樉绀哄湪杈撳嚭鏂囦欢鐨勫熀鏈唴瀹逛腑銆備笅闈袱娈典唬鐮佹槸EggJs涓瑿ontroller鐨勫熀鏈ず渚嬨€傚湪绗簩閮ㄥ垎涓紝鏇存敼浜嗙户鎵跨殑瀵硅薄骞跺疄鐜颁簡涓€浜涢€氱敤鐨勬暟鎹皝瑁呫€傛垜浠敤杩欎釜鏉ュ啓Controller鐨?hbs鏂囦欢锛?usestrict';constController=require('egg').Controller;classHomeControllerextendsController{asyncindex(){const{ctx}=this;ctx.body='

HomeController

';}}module.exports=HomeController;'usestrict';constBaseController=require('./base');;classHomeControllerextendsBaseController{asyncindex(){const{ctx}=this;ctx.body='

HomeController

';}}module.exports=HomeController;瀹屾垚鍚庣殑妯℃澘濡備笅锛屾湁涓ょ偣闇€瑕佽鏄庯細鎰熻澶暱浜嗘敞鎰忎笉瑕佹柇绾匡紱灏嗙敤鎴疯緭鍏ョ殑鍚嶇О涓撻棬杞崲涓鸿鑼冩牸寮忥紝鍏朵粬杞崲鏍煎紡鍙傝€冧唬鐮佷笅鏂圭殑CaseModifiers銆?usestrict';{{#ifisDefault}}constController=require('egg').Controller;{{/if}}{{#ifisBase}}constBaseController=require('./base');{{/if}}class{{properCasename}}Controllerextends{{#ifisDefault}}Controller{{/if}}{{#ifisBase}}BaseController{{/if}}{asyncindex(){const{ctx}=杩欎釜锛沜tx.body='

{{properCasename}}Controller

';}}module.exports={{properCasename}}Controller;CaseModifierscamelCase锛歝hangeFormatToThissnakeCase锛歝hange_format_to_thisdashCase/kebabCase锛歝hange-format-to-thisdotCase锛歝hange.format.to.thispathCase锛歝hange/format/to/thisproperCase/pascalCase锛欳hangeFormatToThislowerCase:changeformattothis鍙ュ瓙Case:Changeformattothis,constantCase:CHANGE_FORMAT_TO_THIStitleCase:ChangeFormatToThis鐜板疄鎺у埗鍣ㄧ殑浜や簰鏀堕泦锛氶渶瑕佺幇瀹炵殑鍔熻兘锛氭敹闆咰ontroller鍚嶇О锛堝繀椤荤殑锛夛紱閫夋嫨Controller缁ф壙绫汇€傛渶灏忎氦浜掓ā鍧椾唬鐮佺ず渚嬪強璇存槑锛?usestrict";module.exports={//浜や簰寮€濮嬬殑鎻愮ず淇℃伅description:"generateacontroller",prompts:[//閰嶇疆闇€瑕佸洖绛旂殑闂],actions:(data)=>{//褰撳洖绛斿畬鎴愬悗锛屾寜鐓т笅闈㈢殑鏍煎紡杩斿洖銆傜被鍨嬫槸add锛岃〃绀烘垜浠娣诲姞銆傛洿澶氭柟娉曞弬鑰僪ttps://plopjs.com/constactions=[{type:"add",path:`app/controller/${name}.js`,templateFile:"plop-templates/controller/index.hbs",鏁版嵁:{},},];杩斿洖鎿嶄綔锛泒,};瀹屾暣鐨勪氦浜掓ā鍧椾唬鐮侊細鈥渦sestrict鈥濓紱module.exports={description锛氣€済enerateacontroller鈥濓紝prompts锛歔{type锛氣€渋nput鈥濓紝name锛氣€渘ame鈥濓紝message锛氣€渃ontrollernameplease鈥濓紝validate锛氾紙v)=>{杩斿洖锛乿||v.trim()===""锛焋${name}鏄繀闇€鐨刞:true;},},{type:"list",name:"baseClass",message:"base-classtypeplease:",choices:[{name:"ChoiceDefault",value:"default",checked:true,},{name:"ChoiceBase",value:"base",checked:false,},],},],鍔ㄤ綔锛?鏁版嵁)=>{constname="{{name}}";constactions=[{type:"add",path:`src/controller/${name}.js`,templateFile:"plop-templates/controller/index.hbs",data:{name,isDefault:data.baseClass==="榛樿",isBase:data.baseClass==="鍩虹",},},];杩斿洖鎿嶄綔锛泒,};灏員emplate娉ㄥ唽鍒皃lopfile.js锛氭垜浠€氳繃妯℃澘瀹炵幇椤圭洰涓秹鍙婄殑controller銆乻ervice銆乵odel銆乻chedule涔嬪悗锛屽湪瀹為檯寮€鍙戜腑鎴戜滑浼氱洿鎺ヤ娇鐢╰erminal鏉ュ垱寤洪」鐩殑鍚勪釜缁勪欢constcontrollerGenerator=require('./plop-templates/controller/prompt')constmodelGenerator=require('./plop-templates/model/prompt')constscheduleGenerator=require('./plop-templates/schedule/prompt')constserviceGenerator=require('./plop-templates/service/prompt')module.exports=function(plop){plop.setGenerator('controller',controllerGenerator)plop.setGenerator('model',modelGenerator)plop.setGenerator('schedule',scheduleGenerator)plop.setGenerator('service',serviceGenerator)}缁撴潫璇細杩欐鐢ㄦ渶绠€鍗曠殑婕旂ず鏉ヨ皥璋圥lopJs鐨勪娇鐢ㄣ€傚畠鑳藉甫鏉ュ灏戜环鍊煎彲鑳借繕涓嶆竻妤氥€傛垜涔熸帹鑽愬湪鍚堥€傜殑鏃跺€欐妸瀹冨紩鍏ュ埌椤圭洰涓紝涓嶈涓轰簡瀵煎叆鑰屽仛涓€浜涙病鏈変环鍊肩殑妯℃澘锛屾洿澶嶆潅鐨勫姛鑳借繕鏄弬鑰冩枃妗d竴璧峰涔犮€傛杩庡叧娉ㄦ垜鐨勫叕浼楀彿鈥滃墠绔皬鏂板悓瀛︹€濓紝绗竴鏃堕棿鎺ㄩ€佸師鍒涙妧鏈枃绔犮€?/p>