当前位置: 首页 > 后端技术 > Node.js

我是如何用最简单的前端技术来揭示那些灰色行业背后的原理

时间:2023-04-03 20:51:04 Node.js

鏈枃浠嬬粛浜嗕竴浜涢潪甯告櫘閫氱畝鍗曠殑鍓嶇鎶€鏈紝鍗存槸瀹炵幇涓€浜涚伆鑹茶涓氱殑鍏抽敭鎶€鏈€傚綋鐒讹紝鎴戝彧鏄疄鐜颁簡涓€浜涘緢绠€鍗曠殑鎬濊矾鍜屾柟娉曪紝鏂囩珷瑕佸啓寰楀敖閲忕畝鍗曟槑浜嗐€傚笇鏈涗妇涓€鍙嶄笁锛屽叡鍚屾帰绱㈠墠绔妧鏈殑鏃犻檺鍙兘銆傚嚑骞村墠鎴戜篃鍐欒繃鍑犵瘒杩欐柟闈㈢殑鏂囩珷锛屽悗鏉ュ洜涓烘煇浜涘叧绯诲垹闄や簡寰堝銆傛湁鍏磋叮鐨勫彲浠ュ洖鍘荤湅鐪嬸煒€銆婃垜濡備綍鐢ㄥ墠绔妧鏈緱鍒?XXOO 缃戠珯鐨?VIP銆嬨€婃垜濡備綍瀹炵幇寰俊灏忔父鎴忚烦涓€璺冲鎸傘€?..鐩镐俊澶у缁忓父鐪嬬洿鎾垨鑰呯數瑙嗗墽鎴戦兘娉ㄦ剰鍒版湁寰堝寮瑰箷銆傛湁鏃跺€欏脊骞曟瘮鐢佃鍓ф垨鑰呮父鎴忕洿鎾繕鏈夎叮銆傜粏蹇冪殑鍚屽浼氬彂鐜帮紝鏈夋椂鍊欏脊骞曚細鍑虹幇鍚屾牱鐨勬儏鍐碉紝鐒跺悗涓嶆柇寰幆銆傛湁鏃跺€欐槸鍚屼竴涓敤鎴峰彂閫佺殑锛岄偅涔堣繖涓敤鎴锋€庝箞鍙兘鍦ㄧ煭鏃堕棿鍐呰繛缁彂閫佸悓涓€鏉℃秷鎭垨鑰呬笉鍚岀殑娑堟伅銆傚叾瀹炲緢绠€鍗曘€備互缃戦〉鐗堣姳妞掔洿鎾负渚嬶紝浠讳綍璇勮閮藉繀椤绘湁涓€涓緭鍏ユ銆傛墜鍔ㄨ緭鍏ユ枃瀛楀啀鍙戦€侊紝鏁堢巼澶綆浜嗐€傞偅涔堟渶鐩存帴鏆村姏鐨勬柟寮忓氨鏄妸浠诲姟浜ょ粰寮€鍙戣€呰嚜鍔ㄥ疄鐜般€傚鏋滀綘鏄墠绔紑鍙戣€咃紝鍙互浣跨敤閫夋嫨鍣ㄦ潵鑾峰彇杈撳叆妗嗙殑鑺傜偣銆傞偅涓妭鐐瑰緢绠€鍗曪紝鍦ㄨ緭鍏ユ涓婂彸鍑绘煡鐪嬪氨鍙互浜嗭紝鎴戜滑鍙互鐪嬪埌瀹冩湰璐ㄤ笂鏄敱涓嬮潰鐨勪唬鐮佸疄鐜扮殑銆?inputname="message"class="tt-type-msg"placeholder="Saysomething"/>鐒跺悗鍙互閫氳繃澶氱鏂瑰紡鑾峰彇杩欎釜鑺傜偣锛屽彧瑕佽幏鍙栧敮涓€鐨勮妭鐐瑰嵆鍙細濡備笅鎵€鏈変笁琛屽緢濂斤細document.querySelector('[name="message"]');document.querySelector(".tt-type-msg");document.querySelector('[placeholder="saysomething"]');鑾峰彇鑺傜偣锛屾垜浠笅涓€姝ュ簲璇ユ槸妯℃嫙鎴戜滑鐨勭敤鎴锋搷浣滐紝杈撳叆寮瑰箷鐨勬枃瀛楋紝鍙互鐪嬪埌褰撴垜浠湪娴忚鍣ㄧ殑鎺у埗鍙拌緭鍏ュ涓嬩唬鐮佸洖杞﹁繍琛屾椂锛屾垜浠殑666鍜岀墰閫艰嚜鍔ㄥ啓鍒拌緭鍏ユ閲岋紝鎳傚墠绔殑鍚屽涓€鐪煎氨鑳芥槑鐧借繖娈典唬鐮佺殑鎰忔€濓細鏃犻潪灏辨槸閲嶅啓杈撳叆妗嗙殑鍊硷紝鐒跺悗缁欒緭鍏ュ€艰祴鍊笺€俤ocument.querySelector('[placeholder="Saysomething"]').value="Wscats666";褰撶劧杈撳叆鍊兼槸纭紪鐮佺殑锛屾垜浠篃鍙互浣跨敤瀛楀吀鏉ョ敓鎴愰殢鏈哄脊骞曟垨鑰呰瘎璁猴紝姣旇緝澶嶆潅鐨勮瘎璁哄彲浠ラ€氳繃鎵惧瓧鍏稿湪绾跨敓鎴愯瘎璁恒€傚鏋滀笉鎯抽夯鐑︼紝鍙互鐢ㄤ竴涓畝鍗曠殑鏁扮粍锛岃嚜瀹氫箟瑕佸彂閫佺殑鍗曡瘝锛岀劧鍚庣敤闅忔満鍑芥暟鍙戦€併€俢onstoffset=parseInt(Math.random()*7);constword=["寮哄ぇ"銆?鐪熸"銆?666"銆?閽︿僵"銆?鐪熷疄"銆?鑿?銆?鑿?];鏂囨。銆俼uerySelector('[placeholder="Saysomething"]').value=word[offset];鑷姩杈撳叆瀹屾垚锛屾垜浠鏈€鍚庝竴姝ヨ繕鏈変竴姝ワ紝鐐瑰嚮鑷姩鍙戦€侊紝鍏跺疄妯℃嫙灏辨槸鐢ㄩ紶鏍囩偣鍑诲彂閫佹寜閽垨鑰呯敤閿洏閿洖杞︼紝閭d箞杩欎釜灏卞ソ鍔炰簡锛屾垜浠繕鏄垰鎵嶇殑鎯虫硶锛屾ā鎷熼〉闈綅缃殑鎿嶄綔锛屾垜浠渶瑕佹壘鍒伴偅涓綅缃悗闈㈢殑浠g爜鑺傜偣锛屾垜浠篃鎶婇紶鏍囨斁鍦ㄧ孩鑹茬殑鍙戦€佹寜閽笂锛屽彸鍑绘煡鐪嬶紝灏卞彲浠ョ湅鍒颁簡鍦ㄦ湁鍏虫鑺傜偣鐨勬帶鍒跺彴淇℃伅涓€傜敱浜庤鑺傜偣鐨勫睘鎬т笉澶氾紝鎴戜滑鍙互鐩存帴鏍规嵁绫诲埆鏌ユ壘鍞竴鏍囪瘑銆俤ocument.querySelector(".tt-type-submit").click();鍚屾牱鎸夌収涓婇潰鐨勬柟娉曞湪鎺у埗鍙颁腑杈撳叆浠g爜鍥炶溅锛屽彲浠ョ湅鍒拌緭鍏ユ涓殑鏂囧瓧鑷姩鍙戦€佷簡銆備絾鏄繖閲岃繕涓嶅瀹岀編锛屾垜浠暣涓唬鐮佸彧鏄ā鎷熶竴娆℃搷浣滐紝閭d箞濡備綍瀹炵幇寰幆鍛紝鍒繕浜嗭紝娴忚鍣ㄦ湁timer锛宒elayer绛夋帴鍙o紝鎵€浠ユ垜浠彲浠ヤ娇鐢╯etInterval鍑芥暟鏉ュ疄鐜板彂閫佹秷鎭寜鐓ц瀹氱殑鏃堕棿鍜岃垂鐜囷紝灏卞彲浠ヨВ鏀惧弻鎵嬪畨蹇冩璧忕編濂充富鎾簡锛屽摝涓嶏紝鏄父鎴忎富鎾殑缁濋厤瀵瑰惂锛熺櫧瀚栦笉璁ㄥソ銆俿etInterval(()=>{document.querySelector('[placeholder="Saysomething"]').value="涓€妤肩湡妫?;document.querySelector(".tt-type-submit").click();},2000);杩欐槸鎴戜滑瀹炵幇鐨勬晥鏋溿€傚綋鐒讹紝杩欏彧鏄渶鍩烘湰鐨勩€佸叆闂ㄧ骇鐨勫熀纭€銆傛垜浠繕鍙互鏀瑰彉寰堝娓告垙鐜╂硶銆傛瘮濡傛垜鏄富鎾紝鎴戜細瀹夋帓鏈哄櫒浜鸿嚜鍔ㄧ粰鎴戝埛绀肩墿锛岃嚜鍔ㄧ粰鎴戝洖澶嶇敤鎴凤紝鑷姩缁欐垜鐐硅禐銆傚綋鐒惰繖閲岀瘒骞呮湁闄愶紝灏辩畝鍗曞啓鐐瑰惂銆傛瘮濡傛垜浠彲浠ヨ闂涓夋柟涓烘垜浠疄鐜扮殑鍥剧伒鏈哄櫒浜烘帴鍙c€傚瘑閽ユ槸鎴戣嚜宸辨敞鍐岀殑銆傛瘡澶╂湁浣跨敤娆℃暟闄愬埗銆傛兂娴嬭瘯鐨勫悓瀛﹁嚜宸卞幓瀹樼綉娉ㄥ唽涓€鍝堬細http://www.tuling123.com/openapi/api?key=c75ba576f50ddaa5fd2a87615d144ecf&info=Hello杩欎釜鎺ュ彛鍙渶瑕佹敼info鐨勫弬鏁板氨鍙互璇锋眰鍥剧伒鏈哄櫒浜哄緱鍒版満鍣ㄤ汉鐨勫洖澶嶃€傛瘮濡備綘鍙互璺熶粬璇达紝鎴戠粰浣犺涓瑧璇濓紝璋佹槸寮犲鍙嬩箣绫荤殑锛屾垜浠笉鑺辨椂闂村幓瀹炵幇杩欑AI鏈哄櫒浜猴紝鐩存帴璋冪敤鎺ュ彛灏辫锛屼篃鍙互鍘诲畼鏂圭綉绔欐潵瀹氬埗瀹冦€傛垜浠彲浠ヨ幏鍙栫敤鎴锋渶鍚庡洖澶嶇殑鍐呭锛岀劧鍚庡洖澶嶄粬鐨勫唴瀹广€傚綋鐒讹紝濡傛灉浣犲鏃犺亰锛岃繕鍙互瀹炵幇涓や釜鏈哄櫒浜轰簰鐩歌亰澶╃殑鍔熻兘锛岀洿鎾棿鐬棿鐑椆璧锋潵銆傚彧瑕佹湁瓒冲鐨勬按鍐涳紝鐩存挱闂村氨鑳界儹闂瑰埌浠€涔堢▼搴︼紝灏ゅ叾鏄湪鐩存挱涓ソ鐢ㄥ甫璐с€備笉杩囪繖閲屾垜浠繕鏄互鑺辨鐩存挱涓轰緥锛屾潵娆h祻涓€涓嬬編濡欑殑姝屽0銆傝繕鏄箣鍓嶇殑鎬濊矾锛屽鏋滆鍥炲涓婃鐨勫脊骞曪紝闇€瑕佽幏鍙栧脊骞曞悗闈㈢殑鑺傜偣锛歝onsole.log("鏈€鍚庝竴鏉¤瘎璁烘槸锛?+$($(".tt-msg-content-h5.tt-msg-content-h5-chat")[$(".tt-msg-content-h5.tt-msg-content-h5-chat").length-1]).text().replace(/(^\s*)|(\s*$)/g,""));杩欐浠g爜骞朵笉澶嶆潅锛屽叾瀹炲氨鏄仛浜嗗嚑浠朵簨鎯咃紝鎶婄洿鎾棿鑱婂ぉ璁板綍鏈€鍚庝竴鏉″唴瀹圭殑鏄庢枃鎷垮嚭鏉ワ紝鐒跺悗鎶婇噷闈㈢殑绌烘牸鍒犳帀銆傚叿浣撳彲浠ュ仛鍏朵粬鐨勫鐞嗭紝杩欓噷灏变笉澶嶆潅浜嗐€傚綋浣犲緱鍒版渶缁堢殑鍥炲鏃讹紝浣犲彧闇€瑕佸皢瀹冨彂閫佸埌鍥剧伒鎺ュ彛銆傚綋鐒讹紝寰堝鐩存挱缃戠珯閮戒細鏉滅粷涓€鎵嬭剼鏈€傞鍏堬紝濡傛灉缃戠珯浣跨敤鐨勬槸http鍗忚锛岄偅涔堝浘鐏垫帴鍙e氨搴旇浣跨敤http鍗忚銆傚鏋滄槸https锛岄偅涔堢洿鎺ユ敼鎴恏ttps鍗冲彲锛屽惁鍒欏彲鑳戒細鎶ュ崗璁敊璇€傛妸浠g爜鏀惧湪杩欓噷灏辫浜嗭紝涓嶈鍐欏師鏉ョ殑銆傛垜浠ヨ姳妞掔洿鎾负渚嬭瘯浜嗕竴涓嬶紝鏀寔jQuery锛岀劧鍚庣洿鎺ュ姞涓?绗﹀彿锛屾垜浠彂閫佷竴涓猘jax璇锋眰锛岃姹傜殑鏈嶅姟鍣ㄥ湴鍧€鏄浘鐏垫帴鍙o紝璇锋眰鐨刬nfo鍙傛暟鏄敤鎴锋渶鍚庡洖澶嶇殑鍐呭銆?.ajax({type:"GET",url:"https://www.tuling123.com/openapi/api?key=c75ba576f50ddaa5fd2a87615d144ecf&info="+$($(".tt-msg-content-h5.tt-msg-content-h5-chat")[$(".tt-msg-content-h5.tt-msg-content-h5-chat").length-1]).text().replace(/(^\s*)|(\s*$)/g,""),鎴愬姛:function(data){console.log(data);$(".tt-type-msg").val(data.text);$(".tt-type-submit").click();},});褰撴垜浠湪鎺у埗鍙拌緭鍏ュ涓嬩唬鐮佸洖杞﹀悗锛屽彂鐜拌姹傚彂閫佹垚鍔燂紝浣嗘槸鑺辨鍋氫簡涓€浜涗俊鎭垽鏂紝澶ф鏄负浜嗛槻姝㈠皬鐧藉彂娑堟伅锛屼絾鏄繖鎬庝箞浼氭槸鎴戝憿锛屾兂鎶婃垜浠崱浣忓湪鎺у埗鍙版棤娉曟搷浣滐紝杩欒繕鏄お瀚╀簡銆傛垜浠彧闇€瑕佸仛涓€涓皬鎶€宸ф搷浣溿€傚瀹屽墠绔紝灏辩煡閬撴€庝箞鏂偣浜嗐€傜洿鎺ュ睍寮€婧愮爜锛屽姞涓潯浠舵柇鐐癸紝杈撳叆false蹇界暐杩欎釜閿欒锛岃瀹冮『鍒╂墽琛屻€傜幇鍦ㄦ垜浠凡缁忔垚鍔熻皟鏁存満鍣ㄨ嚜鍔ㄥ洖澶嶄笂涓€涓敤鎴枫€傛帶鍒跺彴鐨勭孩鑹叉姤閿欎笉褰卞搷鎴戜滑鐨勮嚜鍔ㄥ洖澶嶃€傚綋鐒讹紝鎴戜笉浼氭氮璐规椂闂村湪杩欓噷缁х画鍐欎笅鍘汇€傛噦鐨勫悓瀛﹀氨鏄庣櫧浜嗭紝鍔犵偣鍏朵粬澶勭悊灏卞彲浠ヤ簡锛屾瘮濡傚姞涓猼imer鐪嬫満鍣ㄤ汉璺熻嚜宸辫璇濓紝鍔爄d鍒ゆ柇鍙洖澶嶅叾浠栫敤鎴蜂笉鍥炲鑷繁锛屾墍鏈夌殑杩欏彲浠ラ€氳繃涓嶅悓鐨勬兂娉曟潵瀹炵幇銆傚湪涓€浜涚伆鑹茶涓氾紝杩欑鎶€鏈潪甯告祦琛岋紝姣斿寰崥鐐硅禐銆佺儹鎼滃拰鎺у埗璇勮銆佹壒閲忚幏鍙栨窐瀹濅紭鎯犲埜銆佷骇鍝侀棯璐瓑绛夛紝閮藉彲浠ヤ氦缁欏悇绉嶆満鍣ㄤ汉娴峰啗鏉ュ畬鎴愶紝褰撶劧锛岃繖浜涗竴鑸笉浼氬湪瀹㈡埛绔疄鐜帮紝鑰屾槸鎼埌鏈嶅姟绔紝浼氭湁鍚庡彴澶勭悊鈥︹€﹁浜嗚繖涔堝锛岃繕鏄函鎶€鏈鍩熺敤鍚с€傛瘯绔熸垜瀵瑰叾浠栭鍩熶笉鎰熷叴瓒c€傚仛杩囦竴浜涙妧鏈畝鍘嗭紝涔嬪墠鍦ㄧ綉涓婄湅鍒颁竴浜涗汉鐨勬帢閲戯紝Github锛屽崥瀹㈢瓑绮変笣锛屽眰娆″緢澶氾紝鎶曠鏁帮紝闃呰閲忋€備綘涔熷彲浠ュ湪杩欓噷鐜╄姳鏍枫€傝繖閲屾垜杩樻槸寮鸿皟涓€涓嬶紝鍙槸涓轰簡鎶€鏈€傛垜涓嶄互鎺橀噾涓轰緥銆備娇鐢℅ithub鎴戜滑灏变互杩欎簺涓轰緥锛屾瘮濡侴ithub锛屾垜浠殑鎻愪氦閲忓叾瀹炴槸鍙互浠绘剰鏀瑰彉鏃堕棿娈点€佽寖鍥村拰鏁伴噺鐨勩€傛瘮濡傝繖绉嶇粡鍏哥殑鎶曠璁板綍锛岀湅璧锋潵灏卞緢鏈夋剰鎬濄€備竴浜涘紑鍙戣€呮參鎱㈠湴浣跨敤鐪熷疄鐨勬彁浜ゆ暟鏉ュ爢鍙犲畠浠紝浣嗗畠浠緢瀹规槗琚汉涓哄埗閫犮€傜被浼间簬涓婇潰鐨勪唬鐮併€傞鍏堬紝姣忎竴娆ommit鍏跺疄灏卞儚鍒氭墠鐩存挱涓彂璇勮涓€鏍枫€傛棦鐒跺垰鎵嶆槸绾鎴风鍓嶇鎶€鏈疄鐜扮殑锛岄偅鎴戜滑鏀逛竴涓嬶紝鐢ㄧ函鏈嶅姟绔墠绔妧鏈疄鐜帮紝鎷撳睍鎬濊矾銆傛垜浠湪Github鐨勪粨搴撲腑鎻愪氦浠g爜涓€鑸娇鐢ㄨ繖绉嶅懡浠ゆ柟寮忥紝涔熸槸Github瀹樼綉鎻愪緵鐨勬柟寮忥細gitinitgitaddREADME.mdgitcommit-m"firstcommit"gitbranch-Mmaingitremoteaddoriginhttps://github.com/wscats/test.gitgitpush-uoriginmain杩欑鎻愪氦鏂瑰紡浼氫互褰撳墠鏈湴鏃堕棿涓哄噯锛屾墍浠ュ鏋滀笉鎯虫敼浠讳綍浠g爜锛屽彲浠ョ畝鍗曠矖鏆寸殑鏀圭郴缁熸椂闂达紝鐒跺悗鎵ц浠ヤ笂鍛戒护锛屾鏂规硶閫傚悎鏂版墜銆傚鏋滀綘閿欒繃浜嗕竴涓彁浜わ紝浣犳兂琛ヤ竴浜涙彁浜ょ敾鍑虹浉搴旂殑鍥炬锛氫絾鏄綔涓轰竴涓湁涓€瀹氬墠绔妧鏈殑寮€鍙戣€咃紝浣犺偗瀹氫笉鎯崇敤杩欑鏂瑰紡銆傛晥鐜囧お浣庝簡銆傚彲瑙嗗寲鐣岄潰鎿嶄綔涓€娆★紝杩欐€庝箞鑳藉繊銆傞偅涔堟垜浠氨鍙互浣跨敤node鏉ュ疄鐜颁笅闈㈢殑鍔熻兘浜嗐€備负浜嗗湪鏈嶅姟鍣ㄧ鎵归噺鎵цgit鍛戒护锛屾垜浠彲浠ヤ娇鐢╟hild_process鎺ュ彛銆傜啛鎮塻hell鑴氭湰鐨勫悓瀛﹀叾瀹炲彲浠ョ洿鎺ヤ娇鐢╯hell銆傛垜浠娇鐢╡xec鏂规硶锛屽畠鍙互浣跨敤瀛愯繘绋嬫墽琛屽懡浠わ紝缂撳瓨瀛愯繘绋嬬殑杈撳嚭锛屽苟灏嗗瓙杩涚▼鐨勮緭鍑轰綔涓哄洖璋冨嚱鏁板弬鏁拌繑鍥炪€俢onstexec=require("child_process").exec;module.exports=(cmd)=>{returnnewPromise((resolve,reject)=>{exec(cmd,function(error,stdout,stderr){if(error){console.log(error);reject(stderr);}else{resolve(stdout);}});});};鎴戜滑鍐嶆毚闇蹭竴涓啓浠g爜鐨勬帴鍙o紝鎴戜滑鍙互鏂板缓涓€涓猰essage.txt鏂囦欢锛岃褰曟瘡涓€涓唬鐮佺墖娈碉紝鏈€绠€鍗曠矖鏆寸殑鏂规硶灏辨槸鐩存帴鐢熸垚涓€涓殢鏈烘暟鎴栬€呮棩鏈熷啓鍏ワ紝姣忎竴娆″啓鍏ヤ唬琛ㄦ瘡涓€娆ommit銆傚悗闈㈠彲浠ユ敼杩涳紝鎶婁竴涓畬鏁寸殑浠g爜鎸夌収AST璇硶鏍戠瓑缁勬垚涓€涓鍒欑殑浠g爜鍧楋紝鐒跺悗闄勪笂姣忔浠g爜鎻愪氦鐨勭湡瀹炴彁浜よ褰曘€俢onstfs=require("fs");module.exports=(message)=>{returnnewPromise((resolve,reject)=>{fs.appendFile("message.txt",`${message}\n`,(err)=>{閿欒锛熸嫆缁濓紙锛夛細瑙e喅锛堬級;}锛?}锛?};鏈€鍚庢槸鏍稿績浠g爜锛岃繖閲屾渶閲嶈鐨勫叾瀹炴槸gitcommit-m"${commitTime}"--no-edit--date="${commitTime}"杩欎竴娈碉紝--date鍙傛暟鍙互鏀瑰埌鍏朵粬鏃堕棿锛堝鏋滄垜娌¤閿欑殑璇濓紝鏈€鏃╂槸1970骞?鏈?鏃ュ埌2038骞?鏈?9鏃ワ級锛屽叿浣撳師鍥犳槸鍥犱负杩欐槸鏃堕棿鎴崇殑鑼冨洿锛屾垜娌¤瘯杩囪繖鏍峰墠鍚庣殑鏃堕棿涓€涓椂闂淬€傛湁鍏磋叮鐨勫悓瀛﹀彲浠ヨ嚜琛屽皾璇曘€俢onstcmd=require("./cmd");constfile=require("./file");letday=10;constrandom=(lower,upper)=>{returnMath.floor(Math.random()*(upper-lower+1))+lower;};constcommit=async()=>{consttoday=newDate();today.setTime(today.getTime()-0*24*60*60*1000-澶?24*60*60*1000);璁ヽommitTime=`${today.getFullYear()}.${today.getMonth()+1}.${today.getDate()}`;濡傛灉(today.getFullYear()>2019){杩斿洖;}璁ヽommitNumber=random(1,10);璁ヾayNumber=random(1,3);while(commitNumber){awaitfile(commitTime);绛夊緟cmd("git鐘舵€?);绛夊緟cmd("git娣诲姞銆?);awaitcmd(`gitcommit-m"${commitTime}"--no-edit--date="${commitTime}"`);commitNumber--;}if(day>=10){day-=dayNumber;鐘姜锛堬級;}else{//awaitcmd('gitpushoriginmaster');}};commit();涓婇潰鐨勪唬鐮佹墽琛屾垚鍔熷悗锛屽氨浼氳嚜鍔ㄦ彁浜わ紝鐒跺悗甯綘濉啓Contributions鏃堕棿琛紝杩欐瘮浣犳墜鍔ㄦ洿鏀归潰鏉挎晥鐜囪楂樺緱澶氥€傛煡鐪嬪彲浠ヤ娇鐢ㄩ殢鏈哄嚱鏁板垱寤烘瘡澶╃殑commit閲忥紝涔熷彲浠ラ殢鏈哄垱寤虹浜屽ぉ鎻愪氦鐨勬搷浣滐紝褰撶劧涔熷彲浠ラ殢鏈烘彁浜ommit淇℃伅銆傛瘮濡傝繛鎺ヤ笂鏂囨彁鍒扮殑鍥剧伒鏈哄櫒浜猴紝鍙互瀹炵幇鑷垜瀵硅瘽鎻愪氦淇℃伅銆傚綋鐒讹紝鎴戜細鐗虹壊鑷繁锛岀敤鑷繁鐨凣ithub浣滀负瀹為獙鍝併€傚悇浣嶅悓瀛﹁鎱庣帺锛屽鏋滄渶鍚庡彧瀛︿細浜嗗~鏍煎瓙锛屼笉鐭ラ亾鎬庝箞鍒犳牸瀛愬氨灏村艾浜嗐€傝嚦浜庡浣曞垹闄よ繖浜涙牸瀛愶紝鍏跺疄澶у澶氫簡瑙d竴涓婫it鐨勭煡璇嗭紝灏变笉澶氳浜嗐€傚叿浣撳彲浠ュ幓鎴戠殑Github鐪嬬湅銆傪煈ㄢ€嶐煔抙ttps://github.com/Wscats閭d箞杩欓噷鐨勪唬鐮佸疄鐜板彲浠ュ憡璇夋垜浠紝寰堝鏃跺€欏湪闃呰鎶€鏈枃绔犵殑鏃跺€欙紝涓嶈鍙湅琛ㄩ潰鐨勯噺鍖栨暟鎹紝姣斿涓€浜涢槄璇汇€佺偣璧炲拰鎶曠閮芥槸涓€閮ㄥ垎鎴戜滑鐨勫弬鑰冧粎姝よ€屽凡锛岃繖鏇村鍙栧喅浜庝綔鑰呮墍鍛堢幇鐨勫唴瀹圭殑璐ㄩ噺銆傛悳浜嗕竴涓婫ithub锛岃繖鏍风殑鎿嶄綔杩樻槸寰堝鐨勶紝寮€婧愪唬鐮佺殑瀹炵幇涔熷緢澶氥€備綘鍙互鍙傝€冧竴涓嬨€備綔涓虹▼搴忓憳锛屽彲浠ュぉ澶╂嬁鏉ュū涔愶紝鍒囪涓嶈鎷挎潵绯婂紕浜恒€傚悜涓娿€備笂闈㈢殑渚嬪瓙鍙槸涓€涓鐐广€傚畠鐨勫簲鐢ㄥ叾瀹炲緢骞挎硾銆傛瘮濡傚悇绉嶆帓琛屾涓婄殑鎺掑悕锛屼竴瀹氳鍦ㄥ緢澶氭帓琛屾涓婁粩缁嗛槄璇汇€傛櫘閫氱敤鎴峰彲鑳藉緢闅惧彂鐜颁娇鐢ㄤ簡杩欓」鎶€鏈€傛椂闂磋繕鏈夊緢澶氾紝灏辩户缁惂锛岃繕鏄竴鏍凤紝鎴戜滑鐢ㄦ妧鏈ぞ鍖哄仛瀹為獙锛屾垜浠敤寰蒋VSCode鎻掍欢鎺掕姒滃仛瀹為獙锛屾湰鏉ユ兂鐢ㄥ井鍗氭垨鑰呮帢閲戝仛瀹為獙鐨勶紝浣嗘槸鎯虫兂杩欎釜鍙兘浼氫骇鐢熻礋闈㈠悗鏋溿€傝皥姝﹀姛锛屾垜浠繕鏄函绮圭敤鎶€鏈晫锛屾病鏈夊お澶氱殑鍔熷埄涓讳箟銆傝繖閲屾湁涓烘垜浠紑鍙戣€呮彁渚涗究鍒╃殑鎵€鏈夋彃浠躲€傝繖绉嶆鍗曟湰璐ㄤ笂鏄竴涓儹闂ㄦ鍗曪紝鍏锋湁涓€瀹氱殑鍙傝€冩剰涔夛紝浣嗘垜浠渶瑕佹洿鐞嗘€у湴鍒嗘瀽锛屽洜涓哄彲鑳芥湁涓€绉嶁€滄妧鏈€濆湪椹卞姩銆傝繖娆℃垜浠妸鍓嶇鎶€鏈鎴风鍜屾湇鍔$閮借瘯浜嗕竴閬嶏紝鐪嬫槸鍚﹀彲琛屻€傛垜浠瘯鍥惧府鍔╂垜浠鍔犱竴涓彃浠剁殑涓嬭浇閲忋€傛垜浠彂鐜扮綉椤典笂鍏跺疄鏄湁涓嬭浇鎸夐挳鐨勶紝鎵€浠ヤ笂闈粙缁嶇殑鎶€鏈氨澶熶簡銆傚疄鐜颁簡锛屾€濊矾寰堢畝鍗曘€傛壘鍒版寜閽悗闈㈢殑鑺傜偣浠g爜锛岀劧鍚庢牴鎹鐜囪Е鍙戠偣鍑讳笅杞姐€傝繖涓笅杞藉畬鍏ㄦā鎷熶簡涓€涓汉鍦ㄥ鎴风鐨勫熀鏈搷浣滐紝鐒跺悗涓嬭浇浼氭垚鍔熷彂閫佽姹傚苟鍦ㄥ悗鍙板畬鏁磋褰曚笅鏉ワ紝鐒跺悗鏈€鍚庢洿鏂板憟鐜板埌閲岄潰鐨勪笅杞介噺銆傚綋鐒讹紝杩欑鏂规硶绠€鍗曠矖鏆达紝鍙互蹇€熻揪鍒扮洰鐨勶紝浣嗘槸鏈夋病鏈夋瘮杩欑鏂规硶鏇村揩鏇存湁鏁堢殑鏂规硶鍛紵绛旀鑲畾鏄彲浠ョ殑锛岃€屼笖瑙e喅鏂规硶鏈夊緢澶氬緢澶氾紝鍏蜂綋鍙互鍙傝€冭繖涓彃浠躲€傛墽琛屽悗鐩存帴杩涘叆涓€澶╁唴涓嬭浇绗竴姊槦銆傚綋鐒朵篃鍙互鐩存帴濉埌涓嬭浇鐨勬渶鍓嶉潰锛屼笉杩囪繖瀵逛簬濞变箰鏉ヨ宸茬粡瓒冲浜嗐€傚鏋滃彧鏄负浜嗗埌澶勪簤绗竴锛屽お杩囧垎浜嗗氨杩濊儗浜嗘妧鏈彁渚涙彃浠剁殑鍒濊》鏄负鏇村鐨勫紑鍙戣€呮彁渚涙湇鍔°€傚勾杞讳汉杩樻槸瑕佽皥姝︾殑銆傛垜璇曢獙浜嗕竴浜涙彃浠讹紝鍙戠幇杩欓噷娌℃湁浠讳綍闄愬埗銆傛牴鎹垜鐨勮瀵燂紝澶у鏁皌op鎻掍欢閮芥槸瀹樻柟鎻掍欢锛屾湁浜涙彃浠舵槸杞诲井涓嬭浇鐨勩€傚湪姝や篃甯屾湜寰蒋浠ュ悗鑳藉淇杩欎釜婕忔礊銆傚拰鍥藉唴鐨凥builder涓€鏍凤紝缁戝畾璐﹀彿鍚庢墠鑳戒笅杞芥彃浠躲€傝繖閲岄『渚胯涓€涓嬪師鐞嗭紝鍥犱负鎻掍欢闄や簡鏀寔缃戦〉涓嬭浇澶栵紝杩樻敮鎸佸鎴风涓嬭浇锛屾墍浠ユ垜浠彧瑕佸湪瀹㈡埛绔洃鎺т笅杞藉氨鍙互妯℃嫙鏁翠釜涓嬭浇杩囩▼锛岀劧鍚庡惊鐜墽琛岋紝鏈夌偣鍍忓皬鍙峰埛娣樺疂鐨勫ソ璇勪竴鏍凤紝浣嗘槸涓€鑸晢涓氶」鐩殑杩欎簺鍏ュ彛閮戒細琚繚鎶よ捣鏉ワ紝浣犺鎵ц杩欎簺鑴氭湰灏辨病閭d箞瀹规槗浜嗐€傝繖閲屽彲浠ュ緢鐏垫椿銆傚彲浠ュ埄鐢ㄥ墠绔妧鏈姩鎬佹墽琛屼笅杞斤紝鎴栬€呭姭鎸佷笅杞借姹傚惊鐜彂閫佹潵娆洪獥鏈嶅姟鍣ㄣ€傚嵆鎴戜滑鍙互鍦ㄨ妭鐐圭浼€犺姹傜殑header鍜宐ody锛岀劧鍚庡彂閫佽繃鏉ャ€傛湇鍔″櫒銆傝繖涓柟妗堢◢浣滄敼鍔紝鍙兘浼氳鐢ㄤ簬鏆村姏鐮磋В锛坵ifi銆佹湇鍔″櫒瀵嗙爜锛夈€佷腑闂翠汉鏀诲嚮绛夛紝鍦ㄧ綉缁滀笘鐣屼腑锛屾瘡澶╅兘鏈夎繖鏍风殑浜鸿繍琛岃繖浜涜剼鏈潵鎵弿婕忔礊锛岀劧鍚庝吉閫犺姹備互瀹炵幇浠栦滑鐨勭洰鏍囥€傛垜鐨勬湇鍔″櫒缁忓父琚繖浜涗汉鍏夐【锛岃繖璁╀汉寰堜笉鑸掓湇銆傚綋鐒讹紝闄や簡node锛岃繕鏈夊緢澶氬叾浠栫殑宸ュ叿鍙互瀹炵幇杩欎釜鑳藉姏锛岃繖閲屽氨涓嶄竴涓€鍒椾妇浜嗐€傛垜浠彧鍒嗘瀽鍓嶇鑼冨洿銆傞偅涔堜负浠€涔堟垜浠湁鏃堕渶瑕侀偅涔堝鐨勯獙璇佹墠鑳界櫥褰曞拰娉ㄥ唽鍛紵涓嶅氨鏄紑鍙戣€呮兂淇濇姢鎴戜滑涓嶈鎭跺娍鍔涙姷鍒跺悧锛熷浜庝竴浜涙鍗曪紝姣斿鐑悳銆佺儹璇勶紝鎴戜滑鍙互浣滀负鍙傝€冿紝涓嶈杩囧害杩蜂俊銆傚浜嗭紝涓嶇鏄墜鏈虹杩樻槸鐢佃剳绔紝搴旂敤绋嬪簭鍜屾彃浠跺绯荤粺鐨勭洃鎺у叾瀹炴湁寰堝绉嶆柟寮忋€傚氨鍍忎笂闈㈢殑鎻掍欢涓€鏍凤紝灏介噺浣跨敤绋冲畾鐨勪唬鐮佹簮姣旇緝瀹夊叏锛屽洜涓哄畠浠叾瀹炲彲浠ュ緢鏂逛究鐨勫湪鏈湴鎿嶄綔绯荤粺銆備緥濡傦紝浣跨敤绠€鍗曠殑浠g爜鏉ョ洃鎺ф偍鐨勯敭鐩樿緭鍏ワ紝杞绘澗璇诲啓鎮ㄧ殑鏈湴鏂囦欢绛夌瓑銆傝繖浜涗唬鐮佹湁鏃剁敋鑷抽潪甯哥畝鍗曘€傚畠鍙互绂绘垜浠緢杩滐紝涔熷彲浠ョ鎴戜滑寰堣繎銆傚氨鍍忎笅闈㈣繖涓畝鍗曠殑浠g爜锛屽湪涓嶅悎閫傜殑鍦烘櫙涓嬩細鏄竴娈电碂绯曠殑浠g爜銆傞€氳繃鏌愮鎵嬫锛屽畠鍙互鎮勬倓杩涘叆浣犵殑绯荤粺锛岀劧鍚庤褰曚綘杈撳叆鐨勭偣鐐规淮婊达紝鍖呮嫭浣犺緭鍏ョ殑瀵嗙爜銆佽緭鍏ヤ範鎯€佽娉曚範鎯€佽櫄璇嶅拰瀹炶瘝鐨勫垎甯冦€佸父鐢ㄨ瘝鍜岃瑷€缁勭粐鑳藉姏绛夌瓑锛岀粨鍚堜竴浜涢殣钘忕殑鎶ュ憡锛屽彲浠ュ噯纭湴鍒嗘瀽浣犵殑鐢ㄦ埛銆傚彧瑕佺敤鎴疯緭鍏ヨ冻澶熷锛屽畠灏变細鏇存噦浣狅紝鍥犱负姣忎釜浜洪兘鏄湪鐙壒鐨勭幆澧冨拰鏃朵唬涓垚闀胯捣鏉ョ殑銆傝繖绉嶇幆澧冨鐢ㄦ埛鐨勮瑷€鏈夌潃娣辫繙鐨勫奖鍝嶃€傛瘮濡傘€婄孩妤兼ⅵ銆嬬殑涓や綅浣滆€呮浌闆櫞鍜岄珮楣楄櫧鐒朵笉鍦ㄤ簡锛屼絾鐣欎笅鐨勭弽璐垫枃鐚祫鏂欙紝閫氳繃鏁版嵁鍒嗘瀽锛岃冻浠ヨ瘉鏄庤繖鏈功鍓嶅悗椋庢牸杩ュ紓銆俢onstinputs=document.querySelectorAll("input");[].forEach.call(inputs,(input)=>{input.addEventListener("input",(e)=>{console.log(e.target);});});杩欎簺鎭舵剰浠g爜鍙兘浼氫互鍚勭鏂瑰紡杩炲悓鎻掍欢绛変竴璧锋鍏ユ偍鐨勭數鑴戯紝渚嬪濂楀3銆佲€滃彉鑹测€濈綉绔欏紩瀵笺€侀瓟鏀瑰北瀵ㄧ郴缁熸垨娴忚鍣ㄧ瓑鈥︹€︽妧鏈槸涓€鎶婂弻鍒冨墤锛屽叾鏈川搴旇鏄ソ鐨勩€傚皬鏃跺€欒儗杩囦笁瀛楁枃銆傚嵃璞℃渶娣辩殑涓€鍙ヨ瘽鏄紝浜轰箣鍒濓紝鎬у杽銆傛垜涔熻寰楁妧鏈箣鍒濓紝鏈川涔熶笉閿欍€備篃灏辨槸璇达紝涓€鑸潵璇达紝鎶€鏈殑鍒濊》鏄负鐢ㄦ埛甯︽潵浠峰€硷紝鑰屼笉鏄崯澶便€傛垜闈炲父涔愪簬鎸栨帢鍜屾帰绱㈡妧鏈殑浠峰€煎拰涔愯叮銆傛渶杩戝枩娆㈠湪寰俊閲屽啓涓€浜涚畝鍗曠殑鑴氭湰鑷姩鍥炲浜叉湅濂藉弸銆備笅鐝殑鏃跺€欒鏃╁畨鏅氬畨鍙兘浼氬緢娓╂殩銆傚畾鏃舵彁閱掕€佷汉鍚冮キ鐫¤锛屾寜鏃剁粰鏈嬪弸鍙戠敓鏃ュ揩涔愶紝瀵规柟涔熸尯寮€蹇冪殑銆傝繖浜涙槸鍏朵腑鐨勪竴浜涘叧閿唬鐮併€傚綋鐒讹紝浣犲彲浠ヨ祴浜堝畠鏇村鐨勫姛鑳姐€俿etInterval(function(){$(".edit_area").html("寰俊瑕佸彂閫佺殑鏂囧瓧");$(".edit_area").trigger($.Event("keydown",{keyCode:13,ctrlKey:鐪焳));$(".btn_send").click();},3000);褰撶劧锛屼綔涓虹▼搴忓憳锛屼綘瑕佽拷姹傜敓娲汇€傚伐浜虹殑鐢熸椿鏄浉浼肩殑銆傝姳鏃堕棿鍘荤湅鐪嬬編涓界殑涓栫晫銆傚府鎴戝埛浼樻儬鍒稿搱鍝堬紝璁╂祻瑙堝櫒鑷姩甯垜瀹屾垚涓€浜涗簨鎯咃紝绋嬪簭鍛樼殑涓栫晫鍙兘娉ㄥ畾鏄偅涔堝钩搴葛煒乴ety=0;letnum=0;letimgArr=[];setInterval(()=>{letimgs=document.querySelectorAll("img");letlength=imgs.length;if(num!==length){num=length;imgArr=imgs;console.log(length,imgArr);}y=y+1;scrollTo(0,y);},1);甯屾湜浠ュ悗鑳芥湁鏇村鐨勬椂闂磋础鐚洿澶氭湁瓒g殑浠g爜銆傚紑婧愪笉鏄擄紝浣嗗彲浠ュ仛鍒板苟鐝嶆儨銆傛渶鍚庯紝涓婇潰鎵€鏈夌殑浠g爜鍏跺疄鏈川涓婇兘寰堢畝鍗曘€傜函灞炲垎浜氦娴侊紝浠呬緵濞变箰銆傚鏈変笉瓒充箣澶勮澶氬鍖呮兜銆傚叾瀹炲湪寰堝鍦烘櫙涓嬭繕鏈夊緢澶氶棬妲涚瓑鐫€鎴戜滑鍘昏В鍐筹紝姣斿楠岃瘉鐮佽瘑鍒紝鐢ㄦ埛琛屼负鍜岃皟鐢ㄩ摼鍒嗘瀽锛屾湪椹鍏ョ瓑绛夛紝浠ュ悗濡傛灉鏈夋満浼氭壘鏃堕棿鍐欙紝浣滀负寮€鍙戣€咃紝鎴戜滑涔熷簲璇ユ湁涔夊姟鍜屾剰璇嗭紝鍦ㄧ敤鎴锋搷浣滅殑姣忎釜鍏ュ彛鐐瑰鐢ㄦ埛杩涜妫€鏌ュ拰鎻愰啋銆傚綋鐒讹紝鎶€鏈殑涔愯叮鍦ㄤ簬鎺㈢储锛岃€屼笉鍦ㄤ簬浣滄伓銆傛渶鍚庨檮涓婃垜蹇冪埍鐨勫皬閽㈢惔鍒嗕韩缁欏ぇ瀹讹細馃幑https://github.com/Wscats/piano涔嬪墠鐨勬枃绔犲彲浠ョЩ鍒拌繖閲岋細馃敄https://github.com/Wscats/articles澶у澶氬鏀寔锛圫tarandFork锛夋槸鎴戝墠杩涙渶澶х殑鍔ㄥ姏~鎰熻阿闊充箰鍜岀紪绋嬶紒涔熷悜鎵€鏈夊湪996/007涓鏂楃殑coder浠嚧鏁€傞煶涔愪粠鏉ユ病鏈夎緶璐熻繃浠讳綍浜猴紝姝e鐜嬪姏瀹忓湪姝屾洸涓墍鍞憋細濡傛灉涓栫晫澶嵄闄╋紝鍞湁闊充箰鏄渶瀹夊叏鐨勩€傚甫鎴戝叆姊︼紝璁╂瓕璇嶆垚鐪燂紒鈥斺€斻€婃垜浠殑姝屻€?/p>