2k23经纪人模式怎么模拟比赛,NodeMCU-API 中文完整版 word 版本 (2025)

https://github.com/nodemcu

鏂囨。銆嬭嫳璇€濇ā鍧椼€婣DC ADC妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 鎯呰妭涓瓧 Zeroday jmattsson adc.c ADC妯″潡鎻愪緵瀵瑰唴缃瓵DC鐨勮闂€?/p>

鍦‥SP8266卤鍙湁涓€涓崟閫氶亾锛屼笌鐢垫睜鐢靛帇澶嶇敤銆傛牴鎹€滅壒瀹氬垵濮嬪寲鏁版嵁"(瀛楄妭107)涓殑璁?缃紝鍙互浣跨敤ADC璇诲彇澶栭儴鐢靛帇锛屾垨璇诲彇绯荤粺鐢靛帇(vdd33),浣嗕笉鑳藉悓鏃惰鍙栦袱鑰呫€?鍙互閫氳繃璇dc.force_init_mode()鍔熻兘閰嶇疆浣跨敤鍝妯″紡鐨凙DC 鈻¤娉ㄦ剰锛屽湪浠庝竴涓垏鎹?鍒板彟涓€涓猲ode.restart()涔嬪悗锛屽湪鏇存敼鐢熸晥涔嬪墠闇€瑕侀噸鏂板惎鍔ㄧ郴缁?渚嬪锛岄噸鏂板惎鍔ㄧ數 婧愶紝閲嶇疆鎸夐挳)銆?adc.force_init_mode () 妫€鏌诲苟鍦ㄥ繀瑕佹椂閲嶆柊閰嶇疆ESP init鏁版嵁鍧椾腑鐨凙DC妯″紡璁剧疆銆?adc.read () 瀵笰DC杩涜閲嗘牱銆?adc.readvdd33 () 璇诲彇绯荤粺鐢靛帇銆?/p>

adc.force_init_mode () 妫€鏌诲苟鍦ㄥ繀瑕佹椂閲嶆柊閰嶇疆ESPinit鏁版嵁鍧椾腑鐨凙DC妯″紡璁剧疆銆?鍙ユ硶 adc.force_init_mode(mode_value) 鍙傛暟 mode_value 鍏朵腑涔嬩竴 adc.INIT_ADC 鎴?adc . INIT_VDD33銆?杩斿洖 濡傛灉鍑芥暟蹇呴』鏇存敼妯″紡锛屽垯涓簍rue;濡傛灉妯″紡宸茬粡閰嶇疆锛屽垯涓篺alse銆傚湪鐪熸鐨勫洖鎶ヤ笂锛孍SP闇€瑕?閲嶆柊鍚姩鎵嶈兘浣挎洿鏀圭敓鏁堛€?鈥搃n you init.Lua: if adc.force_init_mode(adc.INIT_VDD33) then node.restart() return 鈥?donrt bother continuing^ the restart is scheduLed end print(鈥淪ystem voltage (mV):鈥? adc.readvdd33(0)) 涔熷彲浠ョ湅鐪?node.restart() adc.read 锛堬級 瀵笰DC杩涜閲嗘牱銆?鍙ユ硶 adc 銉?read(channel) 鍙傛暟 channel鍦‥SP8266涓婂缁堜负0 杩斿洖 閲嗘牱鍊硷紙鏁伴噺锛?濡傛灉ESP8266閰嶇疆涓轰娇鐢ˋDC璇诲彇绯荤粺鐢靛帇锛屽垯姝ゅ姛鑳藉皢濮嬬粓杩斿洖65535.杩欐槸纭欢鍜?鎴朣DK 闄愬埗銆?val = adc.read(0) adc.readvdd33 锛堬級 璇诲彇绯荤粺鐢靛帇銆?鍙ユ硶 adc 銉?readvdd33() 鍙傛暟 娌℃湁 杩斿洖 绯荤粺鐢靛帇锛堟浼忥級锛堜釜鏁帮級 濡傛灉ESP8266閰嶇疆涓轰娇鐢ˋDC瀵瑰閮ㄥ紩鑴氳繘琛岄噰鏍凤紝鍒欐鍔熻兘灏嗗缁堣繑鍥?5535.杩欐槸涓€涓‖ 浠跺拰/鎴朣DK闄愬埗銆?ADS1115 妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2017骞?鏈?4鏃?fetchbot fetchbot ads!115.c

璇ユā鍧楁彁渚涘ADS1115 16浣嶆ā鏁拌浆鎹㈠櫒鐨勮闂畂 鉂惰鍛?鎵€鏈夋ā鎷熻緭鍏ョ殑缁濆鏈€澶ч瀹氬€奸兘-0.3V to VDD+0.3V绉颁负GND銆?ads!115.read () 鑾峰緱瀛樺偍鍦ㄥ厛鍓嶅彂甯冪殑杞崲鐨勫瘎瀛樺櫒涓殑缁撴灉锛?ads!115.setting () ADC鐨勯厤缃缃枲 ads!115.setup () 鍦ㄥ畾涔夌殑FC鍣ㄤ欢鍦板潃涓婂垵濮嬪寲鍣ㄤ欢銆?adslll5.startread () 鍦ㄥ崟娆℃ā寮忎笅鍚姩ADC璇绘暟锛岃浆鎹㈠畬鎴愬悗灏嗚皟鐢ㄤ竴涓彲閫夌殑鍥炶皟鍑芥暟锛屽湪璇ュ嚱 鏁颁腑鍙互鑾峰緱ADC杞崲缁撴灉銆?/p>

adslll5.read 锛堬級 鑾峰緱瀛樺偍鍦ㄥ厛鍓嶅彂甯冪殑杞崲鐨勫瘎瀛樺櫒涓殑缁撴灉锛屼緥濡傚湪杩炵画妯″紡鎴栬浆鎹㈠氨缁腑鏂€?鍙ユ硶 volt, volt_deCj adc = adslll5.read锛堬級 鍙傛暟 娌℃湁 杩斿洖 銉籿olt鐢靛帇锛堝崟浣峬V锛夛紙瑙佷笅闈㈢殑娉ㄩ噴锛?鈥olt_dec鐢靛帇鍗佽繘鍒讹紙瑙佷笅闈㈢殑娉ㄩ噴锛?鈥dc鍘熷鐨刟dc鍊?鉂舵敞鎰?濡傛灉浣跨敤娴偣鍥轰欢锛屽垯volt鏄诞鐐规暟銆傚湪鏁存暟鍥轰欢涓婏紝鏈€鍚庣殑鍊煎繀椤讳粠volt鍜岃繛鎺ヨ捣 鏉?volt_dec o local idj alert_pin, sda, scl = 0, 7, 6, 5 i2c.setup(id, sda, scl4 i2c.SLOW) adslll5.setup(adslll5.ADDR_GND) 鈥揷ontinuous mode adslll5.setting(adslll5.GAIN_6_144V, adslll5.DR_128SPSJ adslll5.SINGLE_銆? adslll5.CONI --read adc resuLt with read() volt, volt_dec, adc = adslll5.read() print(volt, volt_dec, adc) 鈥揷omparator adslll5.setting(adslll5.GAIN_6_144V, adslll5.DR_128SPS, adslll5.SINGLE_0, adslll5.CONI local function comparator(levels when) 鈥搑ead adc resuLt with read() when threshoLd reached voltj volt_decj adc = adslll5.read() print(volt4 volt_dec4 adc) end gpio.mode(alert_pinJ gpio.INT) gpio.trig(alert_pin, 鈥渂oth鈥? comparator) 鈥搑ead adc resuLt with read() volt, volt_decj adc = adslll5.read() print(volt, volt_dec, adc) adslll5.setting () ADC鐨勯厤缃缃€?鍙ユ硶 adslll5.setting(GAIN, SAMPLES, CHANNEL, MODE], CONVERSION_RDY][, COMPARATORj THRESHOLD_LOW, THRESHO 鍙傛暟 GAIN鍙紪绋嬪鐩婃斁澶у櫒

SAMPLES姣忕閲嗘牱鏁版嵁閫熺巼 adslll5.DR 8SPS

MODE璁惧鎿嶄綔妯″紡 銆俛dslll5.SINGLE_SHOT 鍗曞彂妯″紡 o adslll5.CONTINUOUS 杩炵画妯″紡 CONVERSION_RDY杞崲鍑嗗灏辩华鍚庣殑杞崲娆℃暟锛堝彲閫夛級 o adslll5.C0NV RDY 1 o adslll5.CONV_RDY_2 o adslll5.C0NV_RDY_4 鈥?COMPARATOR姣旇緝鍣ㄧ疆浣嶅悗鐨勮浆鎹㈡鏁?鍙€? O adslll5.COMP_lCONV O adslll5.COMP_2CONV O adslll5.C0MP_4C0NV 鈥?THRESHOLD_LOW O 0 - + GAIN_MAX鍗曠杈撳叆鐨勫崟浣嶄负mV O -GAIN_MAX - + GAIN_MAX 浠V涓哄樊鍒嗚緭鍏?鈥?THRESHOLD_HI O 0 - + GAIN_MAX鍗曠杈撳叆鐨勫崟浣嶄负mV O -GAIN_MAX - + GAIN_MAX 浠V涓哄樊鍒嗚緭鍏?/p>

杩斿洖 nil local id, sda, scl = 0, 6, 5 i2c.setup(id, sda, scl, i2c.SL0W) adslll5.setup(adslll5.ADDR_GND) adslll5.setting(adslll5.GAIN_6_144V4 adslll5.DR_128SPS, adslll5.SINGLE_0, adslll5.SING adslll5.setup () 鍦ㄥ畾涔夌殑FC鍣ㄤ欢鍦板潃涓婂垵濮嬪寲鍣ㄤ欢銆?鍙ユ硶 adslll5.setup(ADDRESS) 鍙傛暟 鈥?ADDRESS O adslll5.ADDR_ GND O adslll5.ADDR VDD O adslll5.ADDR SDA 0 adslll5.ADDR _SCL

杩斿洖 nil local idj sda, scl = 0, 6, 5 i2c.setup(id, sda, scl, i2c.SLOW) adslll5.setup(adslll5.ADDR_GND) adslll5.startread () 鍦ㄥ崟娆℃ā寮忎笅鍚姩ADC璇绘暟锛岃浆鎹㈠畬鎴愬悗灏嗚皟鐢ㄤ竴涓彲閫夌殑鍥炶皟鍑芥暟锛屽湪璇ュ嚱鏁颁腑鍙互鑾峰緱ADC杞?鎹㈢粨鏋溿€?鍙ユ硶 adslll5.startread([CALLBACK]) 鍙傛暟 鈥?CALLBACK鍥炶兇鍑借嚧搴滀粫MC鎶€鐜﹀厓鎴愬悗璋冪敤 銆?function(voltj volt_deCj adc) end 杩斿洖 鈥?nil 渚?local idj alert_pinj sda, scl = 0, 7, 6, 5 i2c.setup(id, sdaj scl, i2c.SLOW) adslll5.setup(adslll5.ADDR_GND) 鈥搒ingLe shot adslll5.setting(adslll5.GAIN_6_144V, adslll5.DR_128SPS, adslll5.SINGLE_03 adslll5.SING --start adc conversion and get resuLt in caLLback after conversion is ready adsill5.startread(function(volt4 volt_dec, adc) print(volt, volt_decj adc) end) 鈥揷onversion ready adslll5.setting(adslll5.GAIN_6_144V4 adslll5.DR_128SPS, adslll5.SINGLE_0J adslll5.SING local function conversion_ready(levelj when) voltj volt_deCj adc = adslll5.read() print(volt, volt_deCj adc) end gpio.mode(alert_pinj gpio.INT) gpio.trig(alert_pinj "down"j conversion_ready) 鈥搒tart conversion and get resuLt with read() after conversion ready pin asserts adslll5.startread() ADXL345妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016骞?鏈?鏃?Jason Schmidlapp Jason Schmidlapp adxl345.c

璇ユā鍧楁彁渚涘ADXL345涓夎酱鍔犻€熷害璁$殑璁块棶銆?adxl345.read () 閲嗘牱浼犳劅鍣ㄥ苟浠庡姞閫熷害璁¤繑鍥瀀, Y鍜孼鏁版嵁銆?adxl345.init () 鍒濆鍖栨ā鍧楀苟璁剧疆寮曡剼閰嶇疆銆?adxl345.setup () 鍒濆鍖栨ā鍧椼€?/p>

adxl345.read () 閲嗘牱浼犳劅鍣ㄥ苟浠庡姞閫熷害璁¤繑鍥瀀, Y鍜孼鏁版嵁銆?鍙ユ硶 adxl345 銉?read() 杩斿洖 X, Y, Z鏁版嵁(鏁存暟) 渚?local sdaj scl = 1, 2 i2c.setup(0j sda, scl, i2c.SL0W) 鈥?caLL i2c.setup() onLy once adxl345.setup() local x>y,z = adxl345.read() print(string.format("X = %d, Y = %d, Z = %d鈥? x, y, z)) adxl345.init () 鍒濆鍖栨ā鍧楀苟璁剧疆寮曡剼閰嶇疆銆?銆傛敞鎰?姝ゅ姛鑳藉凡寮冪敤锛屽皢鍦ㄥ嵆灏嗗彂甯冪殑鐗堟湰涓垹闄ゃ€俛dxl345.setup()鏀逛负浣跨敤銆?鍙ユ硶 adxl345.inittsda. scl) 鍙傛暟 銉籹da鏁版嵁寮曡剼 鈥?scl鏃堕挓寮曡剼 杩斿洖 nil adxl345.setup () 鍒濆鍖栨ā鍧椼€?鍙ユ硶 adx!345.setup() 鍙傛暟 娌℃湁 杩斿洖 nil AM2320妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016骞? 鏈?14 鏃?HenkVergonet HenkVergonet am2320.c 璇ユā鍧椾娇鐢╥2c鎺ュ彛璁块棶AM2320婀垮害鍜屾俯搴︿紶鎰熷櫒銆?am2320.init () 鍒濆鍖栨ā鍧楀苟璁剧疆寮曡剼閰嶇疆銆?am2320.read () 瀵逛紶鎰熷櫒杩涜閲嗘牱锛屽苟杩斿洖鐩稿婀垮害锛屽崟浣嶄负锛?娓╁害鍗曚綅涓烘憚姘忓害锛屽崟浣?涓?0銆?am2320.setup () 鍒濆鍖栨ā鍧椼€?/p>

am2320.init () 鍒濆鍖栨ā鍧楀苟璁剧疆寮曡剼閰嶇疆銆傝繑鍥炴ā鍨嬶紝鐗堟湰锛屽簭鍒楋紝浣嗘槸鍦ㄦ垜鐨勬ā鍨嬩腑锛岃繖浜涢兘鏄浂鎺?缂濄€?銆傛敞鎰?姝ゅ姛鑳藉凡寮冪敤锛屽皢鍦ㄥ嵆灏嗗彂甯冪殑鐗堟湰涓垹闄ゃ€俛m2320.setup()鏀逛负浣跨敤銆?鍙ユ硶 modelj version, serial = am2320.init(sda^ scl) 鍙傛暟 銉籹da鏁版嵁寮曡剼 鈥cl鏃堕挓寮曡剼 杩斿洖 鈥odel妯″瀷鐨?6浣嶆暟瀛?鈥ersion 8浣嶇増鏈彿 鈥erial 32浣嶅簭鍒楀彿 娉ㄦ剰锛氬浜庢墍鏈夎繖浜涳紝鎴戝彧瑙傚療鍒?鐨勫€硷紝涔熻鍏朵粬浼犳劅鍣ㄨ繑鍥炴洿鏄庢櫤鐨勮鏁般€?am2320.read () 瀵逛紶鎰熷櫒杩涜閲嗘牱锛屽苟杩斿洖鐩稿婀垮害锛屽崟浣嶄负锛?娓╁害鍗曚綅涓烘憚姘忓害锛屽崟浣嶄负10銆?鍙ユ硶 am2320.read() 杩斿洖 鈥elative humidity鐧惧垎姣斾箻浠?0 (鏁存暟) 鈥emperature 鍦ㄤ箻浠?10 (鏁存暟) 渚?sdaj scl = lj 2 i2c.setup(0, sdaj sclj i2c.SL0W) 鈥?caLL I2c.setup() onLy once am2320.setup() ph, t = am2320.read() print(string.format(MRH: %s%%\ rh / 10)) print(string.format(鈥淭emperature: %s degrees C鈥? t / 10)) am2320.setup () 鍒濆鍖栨ā鍧椼€傝繑鍥炴ā鍨嬶紝鐗堟湰锛屽簭鍒楋紝浣嗘槸鍦ㄦ垜鐨勬ā鍨嬩腑锛岃繖浜涢兘鏄浂鎺ョ紳銆?鍙ユ硶 model, version, serial = am2320.setup() 鍙傛暟 娌℃湁 杩斿洖 鈥odel妯″瀷鐨?6浣嶆暟瀛?鈥ersion 8浣嶇増鏈彿 鈥erial 32浣嶅簭鍒楀彿 娉ㄦ剰锛氬浜庢墍鏈夎繖浜涳紝鎴戝彧瑙傚療鍒?鐨勫€硷紝涔熻鍏朵粬浼犳劅鍣ㄨ繑鍥炴洿鏄庢櫤鐨勮鏁般€?APA102妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016骞?鏈?6鏃?缃椾集鐗光€㈢鏂?缃椾集鐗光€㈢鏂?apal02.c 璇ユā鍧楁彁渚汱ua瀵笰PA102 RGB LED鐨勮闂紝鍏跺姛鑳界被浼间簬甯歌鐨刉S2812鍙鍧€LED銆?DotStarLED鏄?050灏哄鐨凩ED,鍦↙ED鍐呴儴甯︽湁宓屽叆寮忓井鎺у埗鍣ㄣ€傛偍鍙互灏嗘瘡涓狶ED鐨?棰滆壊/浜害璁剧疆涓?4浣嶉鑹?姣忎釜绾㈣壊缁胯壊鍜岃摑鑹?浣?銆傛瘡涓狶ED鐨勫姛鑳界被浼间簬绉讳綅瀵?瀛樺櫒锛岃鍙栬緭鍏ュ紩鑴氫笂鐨勮緭鍏ラ鑹叉暟鎹紝鐒跺悗灏嗕箣鍓嶇殑棰滆壊鏁版嵁绉诲嚭杈撳嚭寮曡剼銆傞€氳繃鍙?閫佷竴涓查暱闀跨殑鏁版嵁锛屾偍鍙互鎺у埗鏃犻檺鏁伴噺鐨凩ED,鍙渶绮樿创鏇村鐨凩ED鎴栧垏鏂笉闇€瑕佺殑 LED鍗冲彲銆?鏉ユ簮锛欰dafruit apal02.write () 灏?浣嶇殑ABGR鏁版嵁鍙戦€佸埌APA102閾俱€?apal02.write () 灏?浣嶇殑ABG R鏁版嵁鍙戦€佸埌APA102閾俱€?鍙ユ硶 apal02.write(data_pin, clock_pin, string) 鍙傛暟 -data_pin 浠讳綍GPIO寮曡剼0,1,2, 鈥?銉?clock_pin 浠讳綍GPIO寮曡剼0,1,2, 鈥?-String鏈夋晥杞借嵎琚彂閫佸埌涓€涓垨澶氫釜APA102LED銆傚畠搴旇鐢辨瘡涓厓绱犵殑ABGR鍥涘厓缁勭粍 鎴愩€?0 ai绗竴涓儚绱犵殑Intensity閫氶亾(0-31) 鈻?bi绗竴涓儚绱犵殑钃濊壊閫氶亾(0-255) 0 G1绗竴涓儚绱犵殑缁胯壊閫氶亾(0-255) 0 R1绗竴涓儚绱犵殑绾㈣壊閫氶亾(0-255) 鈥︿綘鍙互杩炴帴寰堝APA102鈥?銆侫2 , B2 , G2 , R2鏄笅APA102S寮哄害锛岃摑锛岀豢鍜岀孩淇¢亾鍙傛暟 杩斿洖 nil a = 31 b = 0 g = 0 r = 255 leds_abgr = string.char(a, b, g, r, a, b, g, r) apal02.write(2, 3, leds_abgr) 鈥?turn two APA102s to red, connected to data_pin . 鈥搒et the first 30 Leds to red apal02.write(2, 3, string.char(31j 255, 0> 0):rep(30)) 浣嶆ā鍧楋紖 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 鎯呰妭涓瓧 https:鍊媡hub.com/LuaDist/bitlib, Zeroday Zeroday bite

浣嶆搷浣滄敮鎸侊紝鍦?2浣嶆暣鏁般€?bitarshift () 绠楁湳鍙崇Щ涓€涓浉褰撲簬c涓殑鍊?>> 绉讳綅鐨勬暟瀛?bitband () 鎸変綅涓庯紝鐩稿綋浜巚all&val2&銆?bitbit () 鐢?浣嶇敓鎴愪竴涓暟瀛楋紙鐢ㄤ簬鎺╃爜鐢熸垚锛? bitbnot () 鎸変綅鍚﹀畾锛岀浉褰撲簬C涓殑~鍊笺€?bitbor () 鎸変綅鎴栬繍绠楋紝鐩稿綋浜巚all|val2|銆?bitbxor () 鎸変綅X0R,绛夊悓^vallAval2Ao bitclear () 娓呴櫎涓€涓暟瀛椾腑鐨勪綅銆?bitisclear () 娴嬭瘯缁欏畾浣嶆槸鍚﹁娓呴櫎銆?bitisset () 娴嬭瘯缁欏畾浣嶆槸鍚﹁璁剧疆銆?bitdshift () 宸︾Щ涓€涓暟瀛楋紝鐩稿綋浜庘€滃湪C涓Щ浣嶁€?bitrshift () 閫昏緫鍙崇Щ涓€涓暟瀛楋紝鐩稿綋浜庯紙鏃犵鍙凤級鍊?>鍦紙锛氫腑绉讳綅 bitset () 鍦ㄤ竴涓暟瀛椾腑璁剧疆浣嶃€?/p>

bit.arshift () 绠楁湳鍙崇Щ涓€涓瓑浜巚alue >> shift C鐨勬暟瀛?鍙ユ硶 bit.arshift(value, shift) 鍙傛暟 鈥alue鍊肩殑杞Щ 鈥hift鑱屼綅杞Щ 杩斿洖 鏁板瓧鐭虫(绠楁湳) bit.band () 鎸変綅涓庯紝鐩稿綋浜?vail & val2 & . . . & vain C. 鍙ユ硶 bit.band(vallj val2 [,鈥︺兓 vain]) 鍙傛暟 鈥?vail鍏堝拰璁烘嵁 -val2绗簩涓狝ND鍙傛暟 銉烩€ain 鈥︾n涓鐐?杩斿洖 鎵€鏈夊弬鏁扮殑鎸変綅涓?鏁板瓧) bit.bit () 鐢?浣嶇敓鎴愪竴涓暟瀛?鐢ㄤ簬鎺╃爜鐢熸垚)銆傜浉褰撲簬1 鍙ユ硶 bit 銉?bit(position) 鍙傛暟 position浣嶇殑浣嶇疆灏嗚璁剧疆涓? 杩斿洖 涓€涓彧鏈変竴涓?浣嶇殑鏁板瓧(鍏朵綑鐨勮璁剧疆涓?) bit.bnot () 鎸変綅鍚﹀畾锛岀浉褰撲簬c涓殑~鍊笺€?鍙ユ硶 bit.bnot(value) 鍙傛暟 value瑕佸惁瀹氱殑鏁板瓧 杩斿洖 鏁板瓧鐨勬寜浣嶅彇鍙嶇殑鍊?bit.bor () 鎸変綅鎴栵紝鐩稿綋浜?vail I val2 | . . . | vain C. 鍙ユ硶 bit.bor(vallj val2 [, vain]) 鍙傛暟 銉籿ail绗竴涓狾R璁虹偣銆?鈥al2绗簩涓狾R璁虹偣銆?鈥⑩€?.vain 鈥︾n涓鐐?杩斿洖 鎵€鏈夊弬鏁扮殑鎸変綅鎴?鏁板瓧) bit.bxor () 鎸変綅XOR,绛夊悓 vail A val2 A 鈥?A vain 浜嶤. 鍙ユ硶 bit.bxor(vall, val2 vain]) 鍙傛暟 -vail绗竴涓猉OR鍙傛暟 -val2绗簩涓猉OR鍙傛暟 -鈥ain 鈥︾ n 涓猉OR 鍙傛暟 杩斿洖 鎵€鏈夊弬鏁扮殑鎸変綅XOR (鏁板瓧) bit.clear () 娓呴櫎涓€涓暟瀛椾腑鐨勪綅銆?鍙ユ硶 bit.clear(value, posl 銉?銉?posn]) 鍙傛暟 鈥alue鍩烘暟 銉籶osl绗竴浣嶇殑浣嶇疆娓呴櫎 銉烩€osn绗琻浣嶇殑浣嶇疆娓呴櫎 杩斿洖 鍦ㄧ粰瀹氫綅缃竻闆剁殑浣嶆暟(S) bit.isclear () 娴嬭瘯缁欏畾浣嶆槸鍚﹁娓呴櫎銆?鍙ユ硶 bit銉籭sclear(value, position) 鍙傛暟 鈥alue瑕佹祴璇曠殑鍊?鈥osition浣嶆祴璇?杩斿洖 濡傛灉缁欏畾浣嶇疆鐨勪綅鏄?,鍒欒繑鍥瀟rue,鍚﹀垯杩斿洖false bit.isset () 娴嬭瘯缁欏畾浣嶆槸鍚﹁璁剧疆銆?鍙ユ硶 bit.isset(value, position) 鍙傛暟 鈥alue瑕佹祴璇曠殑鍊?鈥osition浣嶆祴璇?杩斿洖 濡傛灉缁欏畾浣嶇疆鐨勪綅鏄?,鍒欒繑鍥瀟rue,鍚﹀垯杩斿洖false bit.lshift () 宸︾Щ涓€涓暟瀛楋紝鐩稿綋浜巚alue << shift C. 鍙ユ硶 bit.1shift(value, shift) 鍙傛暟 鈥alue鍊肩殑杞Щ 鈥hift鑱屼綅杞Щ 杩斿洖 鏁板瓧鍚戝乏绉诲姩 bit.rshift () 閫昏緫鐭崇Щ涓€涓暟瀛楋紝鐩稿綋鍗?unsigned )value 鍙ユ硶 bit 銉?rshift(value, shift) 鍙傛暟 鈥alue鍊肩殑杞Щ銆?鈥hift鑱屼綅杞Щ銆?杩斿洖 鏁板瓧鍙崇Щ(閫昏緫涓? bit.set () 鍦ㄤ竴涓暟瀛椾腑璁剧疆浣嶃€?鍙ユ硶 bit.set(value, posl [,銉?銉?posn ]) 鍙傛暟 鈥alue 鍩烘暟銆?鈥osl绗竴浣嶇殑浣嶇疆璁剧疆銆?鈥兓.銉籶osn绗琻浣嶇殑浣嶇疆璁剧疆銆?杩斿洖 鍦ㄧ粰瀹氫綅缃腑璁剧疆浜嗕綅鐨勬暟瀛?S) 鏂囨。銆嬭嫳璇?妯″潡禄bme280 BME280妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016骞?鏈?21 鏃?vsky279 vsky279 bme280.c

璇ユā鍧椾负BME280/BMP280m/^姘斿帇鍔?婀垮害浼犳劅鍣?BoschSensortec)鎻愪緵浜嗕竴涓畝鍗曠殑鐣?闈€?銆傝鍛?璇锋敞鎰忥紝鎮ㄥ繀椤诲厛鎵撶數璇濓紝setup銆傜劧鍚庢墠鑳藉紑濮嬭鍙栧€硷紒鑰屼笖锛屽湪setup()璇诲彇娴嬮噺鍊间箣闂?鐨勫嚑鍗佸埌鍑犵櫨姣涔嬮棿蹇呴』鏈変竴涓彲鍙樼殑寤惰繜銆傝€屼笉鏄娇鐢ㄥ浐瀹氱殑寤惰繜锛屼綘涔熷彲浠ヨ疆璇紶鎰熷櫒锛?鐩村埌鏁版嵁浼犻€掞紝渚嬪humi()涓嶅啀杩斿洖nil o bme280.altitude () 瀵逛簬缁欏畾鐨勭┖姘斿帇鍔涘拰娴峰钩闈㈡皵鍘嬶紝浠ョ背涓哄崟浣嶇殑楂樺害杩斿洖涔樹互100鐨勬暣 鏁般€?bme280.baro () 璇诲彇浼犳劅鍣紝骞惰繑鍥炵┖姘斿帇鍔涚櫨甯曟柉鍗′綔涓烘暣鏁颁箻浠?000鎴栭浂褰撹鍑轰笉鎴?鍔熴€?bme280.dewpoint () 瀵逛簬缁欏畾鐨勬俯搴﹀拰鐩稿婀垮害锛屽皢浠ユ憚姘忓害琛ㄧず鐨勬暣鏁颁箻浠?00銆?bme280.humi () 璇诲彇浼犳劅鍣ㄥ苟浠ョ櫨鍒嗘瘮褰㈠紡杩斿洖绌烘皵鐩稿婀垮害锛岃鏁颁笉鎴愬姛鏃讹紝浠ョ櫨鍒嗘暟涔?浠?00鎴栭浂銆?bme280.init () 鍒濆鍖栨ā鍧椼€?bme280.qfe2qnh () 瀵逛簬缁欏畾鐨勯珮搴︼紝灏嗘皵鍘嬭浆鎹负娴峰钩闈㈡皵鍘嬨€?bme280.read ()

bme280.startreadout () 寮€濮嬭鍑?灏嗕紶鎰熷櫒杞崲涓哄己鍒舵ā寮?= bme280.setup () 鍒濆鍖栨ā鍧椼€?bme280.temp () 璇诲彇浼犳劅鍣紝浠ユ憚姘忓害涓哄崟浣嶈繑鍥炴俯搴?涔樹互100銆?/p>

bme280.altitude () 瀵逛簬缁欏畾鐨勭┖姘斿帇鍔涘拰娴峰钩闈紝绌烘皵鍘嬪姏杩斿洖浠ョ背涓哄崟浣嶇殑楂樺害锛屼箻浠?00,鍗抽珮搴﹁鍔熻兘銆?鍙ユ硶 bme280.altitude(P, QNH) 鍙傛暟 .P娴嬮噺鍘嬪姏 鈥?QNH褰撳墠鐨勬捣骞抽潰鍘嬪姏 杩斿洖 娴嬮噺鐐圭殑楂樺害 bme280.baro () 璇诲彇浼犳劅鍣ㄥ苟浠ョ櫨鍒嗕箣涓€涔樹互1000鎴杗il璇诲彇涓嶆垚鍔熸椂浠ョ櫨甯曚负鍗曚綅杩斿洖绌烘皵鍘嬪姏銆傞渶瑕佸綋鍓嶇殑 娓╁害鏉ヨ绠楃┖姘斿帇鍔涳紝鍥犳鍦ㄨ鍙栧帇鍔涙暟鎹箣鍓嶈繘琛屾俯搴﹁鏁般€傜浜屼釜杩斿洖鍙橀噺鏄綋鍓嶇殑绌烘皵娓?搴︺€?鍙ユ硶 bme280.baro() 鍙傛暟 娌℃湁 杩斿洖 鈥?p鐧惧笗鐨勭┖姘斿帇鍔涗箻浠?000 -T娓╁害浠ユ憚姘忓害涓哄崟浣嶄箻浠?00 bme280.dewpoint () 瀵逛簬缁欏畾鐨勬俯搴﹀拰鐩稿婀垮害锛屽皢浠ユ憚姘忓害琛ㄧず鐨勬暣鏁颁箻浠?00銆?鍙ユ硶 bme280.dewpoint(H, T) 鍙傛暟 銉籋鐩稿婀垮害鐧惧垎姣斾箻浠?000銆?銉籘娓╁甫鎽勬皬涔樹互100銆?杩斿洖 鍦╟elsisus鐨勯湶鐐?bme280.humi () 璇诲彇浼犳劅鍣ㄥ苟浠ョ櫨鍒嗘瘮褰㈠紡杩斿洖绌烘皵鐩稿婀垮害锛屽崟浣嶄负鐧惧垎姣旓紝鎴栬€卬il褰撹鏁颁笉鎴愬姛鏃躲€傞渶瑕佸綋 鍓嶆俯搴︽潵璁$畻鐩稿婀垮害锛屽洜姝ゅ湪璇诲彇鍘嬪姏鏁版嵁涔嬪墠鎵ц娓╁害璇绘暟銆傜浜屼釜杩斿洖鐨勫彉閲忔槸褰撳墠鐨勬俯 搴︺€?鍙ユ硶 bme280.humi() 鍙傛暟 娌℃湁 杩斿洖 銉籋涓婃鐩稿婀垮害璇绘暟鐨勭櫨鍒嗘瘮涔樹互1000 銉籘娓╁害浠ユ憚姘忓害涓哄崟浣嶄箻浠?00 bme280.init () 鍒濆鍖栨ā鍧椼€傝鍙栧€间箣鍓嶏紝蹇呴』杩涜鍒濆鍖栥€?鉂舵敞鎰?姝ゅ姛鑳藉凡寮冪敤锛屽皢鍦ㄥ嵆灏嗗彂甯冪殑鐗堟湰涓垹闄ゃ€俠me280.setup()鏀逛负浣跨敤銆?鍙ユ硶 bme280.init(sda, sclj [temp_oss, press_ossj humi_osSj power_modej inactive_duration, IIR_fliter 鍙傛暟 鐪?setup() c bme280.qfe2qnh () 瀵逛簬缁欏畾鐨勯珮搴︼紝灏嗘皵鍘嬭浆鎹负娴峰钩闈㈡皵鍘嬨€?鍙ユ硶 bme280.qfe2qnh(Pj altitude) 鍙傛暟 銉籔娴嬮噺鍘嬪姏 銉籥ltitude娴嬮噺鐐圭殑楂樺害 杩斿洖 娴峰钩闈㈡皵鍘?bme280.read () 璇诲彇浼犳劅鍣ㄨ繑鍥炴俯搴︼紝姘斿帇锛岀┖姘旂浉瀵规箍搴﹀拰 鍙ユ硶 bme280.read([altitude]) 鍙傛暟 銉?鍙€?altitude -浠ョ背涓哄崟浣嶇殑楂樺害銆傚鏋滆繕鎻愪緵浜嗚浆鎹负娴峰钩闈㈡皵鍘嬬殑姘斿帇锛屽垯杩斿洖銆?杩斿洖 -T娓╁害浠ユ憚姘忓害涓哄崟浣嶄箻浠?00 鈥鐧惧笗鐨勭┖姘斿帇鍔涗箻浠?000 -H鐩稿婀垮害鐧惧垎姣斾箻浠?000 鈥NH鐧惧笗鐨勭┖姘斿帇鍔涗箻浠?000杞崲涓烘捣骞抽潰 杩欎簺鍙橀噺涓殑浠讳綍涓€涓兘鏄痭il濡傛灉缁欏畾搴﹂噺鐨勮鏁颁笉鎴愬姛鐨勮瘽銆?bme280.startreadout () 寮€濮嬭鍑?灏嗕紶鎰熷櫒杞崲涓哄己鍒舵ā寮?銆傝鏁颁箣鍚庯紝浼犳劅鍣ㄨ浆鍏ョ潯鐪犳ā寮忋€?鍙ユ硶 bme280.startreadout锛坉elay, callback锛?鍙傛暟 銉籨elay灏嗕紶鎰熷櫒璁剧疆涓哄己鍒舵ā寮忥紝骞禼allback鍦ㄧ粰瀹氭暟閲忕殑姣鍚庤皟鐢紙濡傛灉鎻愪緵锛夈€傚浜?0,榛樿寤惰繜璁剧疆涓?13ms 锛堣冻澶熺殑鏃堕棿鎵ц璇诲彇杩囬噯鏍疯缃?6x锛夈€傛湁鍏充笉鍚岀殑杩囬噯鏍疯缃紝 璇峰弬闃匓ME280M缁堟暟鎹〃-闄勫綍B锛氭祴閲忔椂闂村拰鐢垫祦璁$畻銆?銉籧allback濡傛灉鎻愪緵锛屽皢鍦ㄧ粰瀹氬悗璋冪敤delay銆備紶鎰熷櫒璇绘暟搴旇鍦ㄦ涔嬪墠瀹屾垚銆?杩斿洖 nil bme280.setup 锛堬級 鍒濆鍖栨ā鍧椼€傝鍙栧€间箣鍓嶏紝蹇呴』杩涜鍒濆鍖栥€?鍙ユ硶 bme280.setup锛堬蓟temp_ossj press_oss, humi_oss> powep_mode, inactive_durationj IIR_fliter锛斤級 鍙傛暟 銉伙紙鍙€夛級temp_oss -鎺у埗娓╁害鏁版嵁鐨勮繃閲囨牱銆傞粯璁ょ殑杩囬噰鏍锋槸16鍊嶃€?銉伙紙鍙€夛級press_oss -鎺у埗鍘嬪姏鏁版嵁鐨勮繃閲嗘牱銆傞粯璁ょ殑杩囬噯鏍锋槸16鍊嶃€?銉伙紙鍙€夛級humi_oss -鎺у埗婀垮害鏁版嵁鐨勮繃閲囨牱銆傞粯璁ょ殑杩囬噰鏍锋槸16鍊?銉伙紙鍙€夛級sensor_mode -鎺у埗璁惧鐨勪紶鎰熷櫒妯″紡銆傞粯璁や紶鎰熷櫒鏇村鏄甯哥殑銆?.锛堝彲閫夛級inactive_duration -鎺у埗姝e父妯″紡涓嬬殑闈炴椿鍔ㄦ寔缁椂闂淬€傞粯璁ら潪娲诲姩鎸佺画鏃堕棿鏄?20ms o 銉伙紙鍙€夛級IIR_filter -鎺у埗IIR婊ゆ尝鍣ㄧ殑鏃堕棿甯告暟銆傞粯璁ら厤鍚堢郴鏁版槸16銆?銉伙紙鍙€夛級cold_start -濡傛灉0,閭d箞BME280鑺墖涓嶄細琚垵濮嬪寲銆傚綋ESP娣卞害鐫$湢鍜屽敜閱掗渶瑕佸垵 濮嬪寲椹卞姩绋嬪簭锛堟ā鍧楋級鑰屼笉鏄姱鐗囨湰韬椂锛屽湪鐢垫睜渚涚數鐨勮缃腑鏈夌敤銆傝鑺墖淇濇寔渚涚數锛堢潯 鐪狅級锛屽苟淇濇寔鏈€鏂扮殑璇绘暟锛屽簲蹇€熸彁鍙栧彟涓€涓槄璇诲紑濮嬶紙bme280.startreadout锛堬級锛夈€傝姱鐗囬粯 璁よ鍒濆鍖栥€?temp_oss , press_oss , humi_oss 鏁版嵁瓒呴噰鏍?0 璺宠繃锛堣緭鍑鸿涓?x80000锛?1 杩囬噯鏍稾1 2 杩囬噯鏍穢2 3 杩囬噯鏍穢4 4 杩囬噯鏍风磤 浜?杩囬噯鏍穢l6

sensor_mode 浼犳劅鍣ㄦā寮?0 鐫$湢妯″紡 1鍜? 寮哄埗妯″紡 3 姝e父妯″紡

瀵瑰崄甯岃垑浣庣背绉ょ巼鎴栧熀鍗佺帇鏈烘棾鍐嬫鏃冲簲鐢紝寤鸿浣跨敤寮峰埗妫嬫銆傛灊鍒惰鑷村悗浼犳劅鍣ㄧ彮浜烘嵍鐪犳ā 寮忋€傛湁鍏虫洿澶氳缁嗕俊鎭紝璇峰弬闃匓ME280M缁堟暟鎹〃銆?inactive_duration t寰呮満锛坢s锛?0 0.5 1 62.5 2 125 3 250 4 500 浜?1000 6 10 7 20

IIR_filter 婊ゆ尝鍣ㄧ郴鏁?0 杩囨护鎺?1 2 2 4 3 8 4 16 杩斿洖

nil濡傛灉鍒濆鍖栧け璐ワ紙娌℃湁浼犳劅鍣ㄨ繛鎺ワ紵锛夛紝2濡傛灉浼犳劅鍣ㄦ槸BME280, BMP280 alt=320 鈥?aLtitude of the measurement pLace sda, scl = 3, 4 i2c.setup(0, sdaj scl, i2c.SL0W) 鈥?caLL i2c.setup() onLy once bme280.setup() P, T = bme280.baro() print(string.format(鈥淨FE=%d.%03d鈥? P/1000^ P%1000)) 鈥揷onvert measure air pressure to sea LeveL pressure QNH = bme280.qfe2qnh(PJ alt) print (string.format(,QNH=%d.%03dH, QNH/1000, QNH%1000)) Hj T = bme280.humi() local Tsgn = (T < 0 and -1 or 1); T = TsgnT print(st ring.format(鈥淭=%s%d.%02d鈥? Tsgn<0 and 鈥?鈥?or 鈥溾€? T/100, T%100)) print(string.format("humidity=%d.%03d%%"j H/1000, H%1000)) D = bme280.dewpoint(H, T) local Dsgn = (D < 0 and -1 or 1); D = DsgnD print(string.format(鈥渄ew_point=%s%d.%02d鈥? Dsgn<0 and 鈥?鈥?or 鈥溾€? D/100, D%100)) 鈥揳Ltimeter function - caLcuLate aLtitude based on current sea LeveL pressure (QNH) c P = bme280.baro() curAlt = bme280.altitude(Pj QNH) local curAltsgn = (curAlt < 0 and -1 or 1); curAlt = curAltsgncurAlt print(string.format(,altitude=%s%d.%02d,J curAltsgn<0 and or curAlt/100, curAl 鎴栬€呮洿绠€鍗曪紝鏇撮珮鏁?alt=320 鈥?aLtitude of the measurement pLace sda, scl = 3, 4 i2c.setup(0j sdaj scl, i2c.SLOW) 鈥?caLL i2c.setup() onLy once bme280.setup() T, P, H, QNH = bme280.read(alt) local Tsgn = (T < 0 and -1 or 1); T = TsgnT print ( st ring. format (HT=%s%d. %02d H, Tsgn<0 and or T/l銆傘€傦紝T%100)) print (st ring. format("QFE=%d.%03d,J P/1000, P%1000)) print(string.format(nQNH=%d.%03d\ QNH/1000, QNH%1000)) print(string.format("humidity=%d.%03d%%"j H/1000, H%1000)) D = bme280.dewpoint(H, T) local Dsgn = (D < 0 and -1 or 1); D = DsgnD print(string.format("dew_point=%s%d.%02d"3 Dsgn<0 and "or ""3 D/100, D%100)) --aLtimeter function - caLcuLate aLtitude based on current sea Level pressure (QNH) c P = bme280.baro() curAlt = bme280.altitude(Pj QNH) local curAltsgn = (curAlt < 0 and -1 or 1); curAlt = curAltsgncurAlt print(string.format("altitude=%s%d.%02d"j cunAltsgn<0 and "or 鈥溾€? curAlt/100, curAl 浣跨敤bme280.setup(lj 3, 0, 3, 0, 4)涓衡€滄父鎴忔ā寮忊€?鈻犺繃閲嗘牱鐨勮缃帇鍔泋4,娓╁害xl,婀垮害x銆? 浼犳劅鍣ㄦā寮忥細姝e父妯″紡锛岄潪娲诲姩鏈熼棿=0.5ms鐨勶紝IIR婊ゆ尝鍣ㄨ瀹氱殑婊ゆ尝鍣ㄧ郴鏁?6銆?寮哄埗妯″紡涓嬭鍑虹ず渚?寮傛) sda, scl = 3, 4 i2c.setup(0, sdaj scl, i2c.SLOW) 鈥?caLL i2c.setup() onLy once bme280.setup(nilj nil, nil, 0) 鈥?initiaLize to sLeep mode bme280.startreadout(0, function () T, P = bme280.read() local Tsgn = (T < 0 and -1 or 1); T = Tsgn*T print(string.format("T=%s%d.%02d"Tsgn<0 and "or T/100J T%100)) end) bme280.temp () 璇诲彇浼犳劅鍣紝浠ユ憚姘忓害涓哄崟浣嶈繑鍥炴俯搴︼紝涔樹互100銆?鍙ユ硶 bme280.temp() 鍙傛暟 娌℃湁 杩斿洖 -T娓╁害浠ユ憚姘忓害涓哄崟浣嶄箻浠?00鎴杗il璇诲彇涓嶆垚鍔?銉籺 fine娓╁害娴嬮噺涓娇鐢ㄧ殑鍘嬪姏鍜屾箍搴﹁ˉ鍋垮叕寮?涓€鑸笉闇€瑕佷娇鐢ㄨ繖涓€? BMP085妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2015骞?鏈?鏃?搴锋媺寰疯礉鍏嬫浖 搴锋媺寰疯礉鍏嬫浖 bmp085.c

璇ユā鍧楁彁渚涘BMP085娓╁害鍜屽帇鍔涗紶鎰熷櫒鐨勮闂€傝妯″潡涔熼€傜敤浜嶣MP180銆?bmp085.init () 鍒濆鍖栨ā鍧楀苟璁剧疆寮曡剼閰嶇疆銆?bmp085.setup () 鍒濆鍖栨ā鍧椼€?bmp085.temperature () 瀵逛紶鎰熷櫒杩涜閲囨牱锛屽苟浠ヤ竴涓暣鏁颁箻浠?0鏉ヨ繑鍥炴憚姘忔俯搴︺€?bmp085.pressure () 閲嗘牱浼犳劅鍣ㄥ苟浠ュ笗鏂崱褰㈠紡杩斿洖鍘嬪姏浣滀负鏁存暟銆?bmp085.pressure_raw () 閲嗘牱浼犳劅鍣ㄥ苟浠ュ唴閮ㄥ崟浣嶈繑鍥炲師濮嬪帇鍔涖€?/p>

bmp085.init () 鍒濆鍖栨ā鍧楀苟璁剧疆寮曡剼閰嶇疆銆?銆傛敞鎰?姝ゅ姛鑳藉凡寮冪敤锛屽皢鍦ㄥ嵆灏嗗彂甯冪殑鐗堟湰涓垹闄ゃ€俠mP085.setup()鏀逛负浣跨敤銆?鍙ユ硶 bmp085.init(sda, scl) 鍙傛暟 -sda鏁版嵁寮曡剼 鈥?SC1鏃堕挓寮曡剼 杩斿洖 nil bmp085.setup () 鍒濆鍖栨ā鍧椼€?鍙ユ硶 bmp085.set鍙╋紙锛?鍙傛暟 娌℃湁 杩斿洖 nil bmp085.temperature () 瀵逛紶鎰熷櫒杩涜閲囨牱锛屽苟浠ヤ竴涓暣鏁颁箻浠o鏉ヨ繑鍥炴憚姘忔俯搴︺€?鍙ユ硶 bmp085.temperature() 杩斿洖 娓╁害涔樹互10 (鏁存暟) 渚?local sdaj scl = 1, 2 i2c.setup(0, sda, scl, i2c.SL0W) bmp085.setup() local t = bmp085.temperature() print(string.format("Temperature: %s.锛卻 degrees C"3 t / 10, t % 10)) bmp085.pressure () 閲嗘牱浼犳劅鍣ㄥ苟浠ュ笗鏂崱褰㈠紡杩斿洖鍘嬪姏浣滀负鏁存暟銆?鍙€塷versampling_setting鍙傛暟鍐冲畾浼犳劅鍣ㄩ噰鏍锋暟鎹殑鏃堕棿銆傞粯璁ゅ€兼槸3鏈€闀块噰鏍疯缃€?鍙兘鐨勫€兼槸0,1,2,3銆傛湁鍏虫洿澶氫俊鎭紝璇峰弬闃呮暟鎹〃銆?鍙ユ硶 bmp085 . pressure(oversampling_setting) 鍙傛暟 oversampling_setting 鏁存暟鍙互鏄?,1,2鎴? 杩斿洖 鍘嬪姏(甯曟柉鍗?(鏁存暟) 渚?local sda, scl = 1^ 2 i2c.setup(0, sdaj scl, i2c.SLOW) 鈥?caLL i2c.setup() onLy once bmp085.setup() local p = bmp085.pressure() print(string.format(鈥淧ressure: %s.锛卻 mbar鈥? p / 10銆傦紝 p % 100)) bmp085.pressure_raw () 閲嗘牱浼犳劅鍣ㄥ苟浠ュ唴閮ㄥ崟浣嶈繑鍥炲師濮嬪帇鍔涖€傚鏋滀綘闇€瑕佹洿楂樼殑绮惧害锛屽彲鑳戒細鏈夌敤銆?鍙ユ硶 bmp085.pressure_raw(oversampling_setting) 鍙傛暟 oversampling_setting 鏁存暟鍙互鏄?,1,2鎴? 杩斿洖 鍘熷鍘嬪姏閲嗘牱鍊?鏁存暟) 鏂囨。銆嬭嫳璇€濇ā鍧椔籆OAP CoAP妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2015骞?鏈?鏃?Toby Jaffey toby@1248.io} Zeroday Zeroday coap.c

CoAP妯″潡鏍规嵁CoAP鍗忚鎻愪緵浜嗕竴涓畝鍗曠殑瀹炵幇銆傚熀鏈殑绔偣鏈嶅姟鍣ㄩ儴鍒嗗熀浜巑icrocoap,浠ュ強璁?澶氬叾浠栦唬鐮佸弬鑰僱ibcoap., 杩欎釜妯″潡瀹炵幇浜嗗鎴风鍜屾湇鍔″櫒绔€傚鎴风閮ㄥ垎鏀寔GET/PUT/POST/DELETEo鏈嶅姟鍣ㄥ彲浠ユ敞鍐?Lua鍑芥暟鍜屽彉閲忋€傛病鏈夎瀵熸垨鍙戠幇鏀寔銆?鉂惰鍛?杩欎釜妯″潡鍙槸鍦ㄥ緢鏃╃殑闃舵锛岃繕娌℃湁瀹屾垚銆?甯搁噺 鍚勭鍔熻兘鐨勫父閲忋€?coap.Client () 鍒涘缓涓€涓狢oAP瀹㈡埛绔€?coap.Server () 鍒涘缓涓€涓狢oAP鏈嶅姟鍣ㄣ€?coap.Client锛氬緱鍒帮紙锛?鍚戞湇鍔″櫒鍙戝嚭GET璇锋眰銆?coap.Client锛氭妸() 鍙戝嚭PUT璇锋眰鍒版湇鍔″櫒銆?coap.Client锛氬悗() 鍚戞湇鍔″櫒鍙戝嚭POST璇锋眰銆?coap.Client锛氬垹闄わ紙锛?鍙戝嚭DELETE璇锋眰鍒版湇鍔″櫒銆?coap.server锛氬惉() 鍚姩缁欏畾绔彛涓婄殑CoAP鏈嶅姟鍣ㄣ€?coap.server锛?鍏抽棴锛堬級 鍏抽棴CoAP鏈嶅姟鍣ㄣ€?coap.server锛?VAR () 鍦ㄦ湇鍔″櫒涓敞鍐屼竴涓狶ua鍙橀噺浣滀负绔偣銆?coap.server锛氬嚱鏁?) 灏哃ua鍑芥暟娉ㄥ唽涓烘湇鍔″櫒绔偣銆?/p>

甯搁噺 鍚勭鍔熻兘鐨勫父閲忋€?coap.CON , coap.NON 琛ㄧず璇锋眰绫诲瀷銆?coap.TEXT_PLAIN , coap.LINKFORMAT , coap.XML , coap.OCTET_STREAM 锛?coap.EXI , coap.JSON 琛ㄧず鐨勫唴瀹硅殼鍨嬨€?coap.Client () 鍒涘缓涓€涓狢OAP鍚勫案鐟炪€?鍙ユ硶 coap.Client() 鍙傛暟 娌℃湁 杩斿洖 CoAP瀹㈡埛绔?渚?cc = coap.Client() 鈥揳ssume there is a coap server at ip 192.168.100 cc:get(coap.CONj 鈥渃oap://192.168.18.100:5683/.well-known/core鈥? 鈥揋ET is not compLetej the resuLt/payLoad onLy print out in consoLe. cc:post(coap.NON, 鈥渃oap://192.168.18.100:5683/鈥? 鈥淗ello鈥? coap.Server () 鍒涘缓涓€涓狢oAP鏈嶅姟鍣ㄣ€?鍙ユ硶 coap.Server() 鍙傛暟 娌℃湁 杩斿洖 CoAP鏈嶅姟鍣?渚?鈥搖se copper addon for fire fox cs=coap.Server() cs:listen(5683) myvar=l cs:var(鈥渕yvar鈥? 鈥?get coap://192.168.18.103:5683/vl/v/myvar wiLL return the vaLue of cs:varCall鈥? coap.JSON) 鈥?sets content type to json 鈥揻unction shouLd tack one string^ return one string. function myfun(payload) print(鈥渕yfun called鈥? respond = 鈥渉ello鈥?return respond end cszfuncCmyfun鈥? 鈥?post coap://192.168.18.103:5683/vl/f/myfun wiLL caLL myfun CoAP瀹㈡埛绔?coap.client锛氬緱鑷砋 () 鍚戞湇鍔″櫒鍙戝嚭GET璇锋眰銆?鍙ユ硶 coap.client:get(typej uri[j payload]) 鍙傛暟 鈥ype coap.CON , coap.NON ,榛樿涓篊ON=濡傛灉绫诲瀷涓篊ON涓旇姹傚け璐ワ紝鍒欏湪鏀惧純涔嬪墠锛?璇ュ簱鍐嶉噸璇曞洓娆°€?鈥ri URI濡傗€渃oap锛?^192.168.18.103锛?5683/vl/v/myvar鈥?鍙敮鎸両P鍦板潃锛屽嵆涓嶆敮鎸佷富鏈哄悕 瑙f瀽銆?鈥ayload鍙€夌殑锛屾湁鏁堣浇鑽峰皢琚斁鍏ヨ姹傜殑鏈夋晥杞借嵎閮ㄥ垎銆?杩斿洖 nil coap.client锛氭妸() 鍙戝嚭PUT璇锋眰鍒版湇鍔″櫒銆?鍙ユ硶 coap.client:put(type, uri[payload]) 鍙傛暟 鈥?type coap.CON , coap.NON ,榛樿涓篊ON=濡傛灉绫诲瀷涓篊ON涓旇姹傚け璐ワ紝鍒欏湪鏀惧純涔嬪墠锛?璇ュ簱鍐嶉噸璇曞洓娆°€?-uri URI濡傗€渃oap锛?銆?92.168.18.103锛?5683/vl/v/myvar鈥濓紝鍙敮鎸両P鍦板潃锛屽嵆涓嶆敮鎸佷富鏈哄悕 瑙f瀽銆?-payload鍙€夌殑锛屾湁鏁堣浇鑽峰皢琚斁鍏ヨ姹傜殑鏈夋晥杞借嵎閮ㄥ垎銆?杩斿洖 nil coap.client锛氬悗() 鍚戞湇鍔″櫒鍙戝嚭POST璇锋眰銆?鍙ユ硶 coap.client:post(type, uri[, payload]) 鍙傛暟 -type co.CON, coap.NON,榛樿涓篊ON銆傚綋绫诲瀷鏄疌ON,骞朵笖璇锋眰澶辫触鏃讹紝璇锋眰浼氬湪鏀惧純涔?鍓嶉噸璇曞彟澶?娆°€?銉?uri uri濡俢cae //192.168.18.103锛?5683/v1 /v/mwar.鍙彜鎸両P銆?-payload鍙湴鏃筹紝鏈夊弻鍩疯嵎灏嗚浠ヤ汉璇蜂笉鏃虫湁鍙岃浇鑽烽儴鍒嗐€?杩斿洖 nil coap.client锛氬垹闄わ紙锛?鍙戝嚭DELETE璇锋眰鍒版湇鍔″櫒銆?鍙ユ硶 coap.client:delete锛坱ype, uri[, payload]锛?鍙傛暟 鈥ype coap.CON , coap.NON ,榛樿涓篊ON銆傚鏋滅被鍨嬩负CON涓旇姹傚け璐ワ紝鍒欏湪鏀惧純涔嬪墠锛?璇ュ簱鍐嶉噸璇曞洓娆°€?鈥ri URI濡?coap锛?>7192.168.18.103锛?5683/vl/v/myvar",鍙敮鎸両P鍦板潃锛屽嵆涓嶆敮鎸佷富鏈哄悕 瑙f瀽銆?銉籶ayload鍙€夌殑锛屾湁鏁堣浇鑽峰皢琚斁鍏ヨ姹傜殑鏈夋晥杞借嵎閮ㄥ垎銆?杩斿洖 nil CoAP鏈嶅姟鍣?coap.server锛氬惉锛堬級 鍚姩缁欏畾绔彛涓婄殑CoAP鏈嶅姟鍣ㄣ€?鍙ユ硶 coap.server:listen(port[ip]) 鍙傛暟 -port鏈嶅姟鍣ㄧ鍙o紙鍙风爜锛?銉籭p鍙€夌殑IP鍦板潃 杩斿洖 nil coap.server锛氬叧闂紙锛?鍏抽棴CoAP鏈嶅姟鍣ㄣ€?鍙ユ硶 coap.server:close() 鍙傛暟 娌℃湁 杩斿洖 nil coap.server锛?VAR () 鍦ㄦ湇鍔″櫒涓敞鍐屼竴涓狶ua鍙橀噺浣滀负绔偣銆傞偅涔堝彉閲忓€煎彲浠ラ€氳繃GET鏂规硶鐢卞鎴风妫€绱紝琛ㄧず涓哄鎴?绔殑URI銆傚彉閲忕殑绔偣璺緞鏄?vl/v/鈥榦 鍙ユ硶 coap.server:van(namecontent_type]) 鍙傛暟 銉籲ame Lua鍙橀噺鐨勫悕瀛?鈥?content_type鍙€夛紝榛樿涓篶oap.TEXT_PLAIN ,璇峰弬闃呭唴瀹瑰崗鍟?杩斿洖 nil 渚?鈥?use copper addon for fire fox cs=coap.Server() cs:listen(5683) myvar=l cs:varCrnyvar鈥?) 鈥?get coap://192.168.18.103:5683/vl/v/myvar wiLL return the vaLue of --cs:var(myvar)j WRONG, this api accept the name string of the variaLbe. but not the 311=*[1,2,3]鈥?cs:var(鈥渁ll鈥? coap.JSON) 鈥?sets content type to json coap.server锛氬嚱鏁?) 灏哃ua鍑芥暟娉ㄥ唽涓烘湇鍔″櫒绔偣銆傝繖涓嚱鏁板彲浠ヨ瀹㈡埛绔€氳繃POST鏂规硶璋冪敤銆傝〃绀轰负瀹㈡埛绔殑URI銆?鍑芥暟鐨勭鐐硅矾寰勬槸7vl/f/'o 褰撳鎴风鍚戣繖涓猆RI鍙戝嚭POST璇锋眰鏃讹紝鏈夋晥杞借嵎灏嗕綔涓哄弬鏁颁紶閫掔粰鍑芥暟銆傝鍑芥暟鐨勮繑鍥炲€煎皢鎴愪负瀹?鎴风娑堟伅涓殑璐熻浇銆?娉ㄥ唽鐨勫嚱鏁板簲璇ュ彧鎺ュ彈涓€涓瓧绗︿覆绫诲瀷鍙傛暟锛屽苟杩斿洖涓€涓瓧绗︿覆鍊兼垨涓嶈繑鍥炰换浣曞唴瀹广€?鍙ユ硶 coap.server:func(name[, content_type]) 鍙傛暟 鈥ame Lua鍑芥暟鐨勫悕瀛?鈥ontent_type鍙€夛紝榛樿涓篶oap.TEXT_PLAIN ,璇峰弬闃呭唴瀹瑰崗鍟?杩斿洖 nil 渚?鈥搖se copper addon for fire fox cs=coap.Server() cs:listen(5683) 鈥揻unction shouLd take onLy one string, return one string. function myfun(payload) print(鈥渕yfun called鈥? respond = 鈥渉ello鈥?return respond end cs:func(鈥渕yfun鈥? 鈥?post coup://192.168.18.103:5683/vl/f/myfun wiLL caLL myfun --cs:func(myfun)j WRONG, this apt accept the name string of the function, but not th( 鏂囨。銆嬭嫳璇€濇ācron鐨?Cron妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016 骞?12 鏈?18 H 鍑ゅ嚢 鍑ゅ嚢 cron.c 绫讳技Cron鐨勮皟搴︾▼搴忔ā鍧椼€?/p>

銆傞噸瑕?璇ユā鍧楅渶瑕丷TC鏃堕棿鎵嶈兘姝e父宸ヤ綔銆備笉瑕佸繕璁板寘鍚玶tctime妯″潡銆?cron.schedule () 鍒涘缓涓€涓柊鐨勬棩绋嬪畨鎺掓潯鐩€?cron.reset () 鍒犻櫎鎵€鏈夐瀹氱殑鏉$洰銆?cron.entry锛氬鐞嗗櫒() 璁剧疆涓€涓柊鐨勮緭鍏ュ鐞嗙▼搴忋€?cron.entry锛氭椂闂磋〃() 璁剧疆涓€涓柊鐨勬椂闂磋〃鎺╃爜銆?cron.entry锛氬彇娑堣皟搴?) 绂佺敤璁″垝銆?/p>

cron.schedule () 鍒涘缓涓€涓柊鐨勬棩绋嬪畨鎺掓潯鐩€?鍙ユ硶 cron,schedule(mask, callback) 鍙傛暟 銉籱ask -鐢ㄤ簬璁″垝鐨刢rontab绫诲瓧绗︿覆鎺╃爜 鈥?callback - function(entry)鍦ㄩ瀹氭椂闂存墽琛岀殑鍥炶皟 杩斿洖 cron.entry 瀛愭ā鍧?cron.schedule("*/5 * * * function(e) print(鈥淓very 5 minutes鈥? end) cron.schedule(鈥? /2 * * function(e) print(鈥淓very 2 hours鈥? end) cron.reset () 鍒犻櫎鎵€鏈夐瀹氱殑鏉$洰銆?鍙ユ硶 cron.reset() 鍙傛暟 娌℃湁 杩斿洖 闆?cron.entry 妯″潡 cron.entry锛氬鐞嗗櫒() 璁剧疆涓€涓柊鐨勮緭鍏ュ鐞嗙▼搴忋€?鍙ユ硶 handler(callback) 鍙傛暟 鈥?callback - function(entry)鍦ㄩ瀹氭椂闂存墽琛岀殑鍥炶皟 杩斿洖 闆?ent = cron.schedule(" * * * 鈥? function(e) print(鈥淓very minute鈥? end) ent:handler(function(e) print(鈥淣ew handler: Every minute鈥? end) cron.entry锛?鏃堕棿琛?() 璁剧疆涓€涓柊鐨勬椂闂磋〃鎺╃爜銆?鍙ユ硶 schedule(mask) 鍙傛暟 銉籱ask -鐢ㄤ簬璁″垝鐨刢rontab绫诲瓧绗︿覆鎺╃爜 杩斿洖 娌℃湁 渚?ent = cron.schedule(鈥?* * * , function(e) printCTick") end) 鈥揈very 5 minutes is reaLLy better! ent:schedule("/5 * * * ") cron.entry锛氬彇娑堣皟搴?) 绂佺敤璁″垝銆?绂佺敤鐨勬椂闂磋〃鍙兘浼氶€氳繃璋冪敤鍐嶆鍚敤锛歴chedule (mask)銆?鍙ユ硶 unschedule() 鍙傛暟 娌℃湁 杩斿洖 闆?ent = cron.schedule銆傗€?* * * *鈥? function(e) print(鈥漈ick鈥? end) 鈥揥e don鈥檛 need this anymore ent:unschedule() 鏂囨。銆嬭嫳璇?妯″潡銆嬪姞瀵?鍔犲瘑妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2015骞?鏈?鏃?DiUS, Johny Mattsson Johny Mattsson crypto.c 鍔犲瘑妯″潡鎻愪緵鐢ㄤ簬浣跨敤鍔犲瘑绠楁硶鐨勫悇绉嶅姛鑳姐€?/p>

鏀寔浠ヤ笅鍔犲瘑/瑙e瘑绠楁硶/妯″紡锛?"AES-ECB"瀵逛簬ECB妯″紡涓嬬殑128浣岮ES 锛堜笉鎺ㄨ崘锛? 鈻犫枲aes-cbc11瀵逛簬CBC妯″紡涓嬬殑128浣岮ES 鏀寔浠ヤ笅鏁e垪绠楁硶锛?MD2锛堥粯璁ゆ儏鍐典笅涓嶅彲鐢紝蹇呴』鏄惧紡鍚?鐢?app/include/user_config.h 锛?- MD5 - SHA1 - SHA256, SHA384, SHA512 锛堥櫎闈炵 鐢?app/include/user_config.h 锛?crypto.encrypt () 鍔犲瘑Lua瀛楃涓层€?crypto.decrypt () 瑙e瘑浠ュ墠鍔犲瘑鐨勬暟鎹€?crypto.fhash () 璁$畻涓€涓枃浠剁殑鍔犲瘑鏁e垪銆?crypto.hash () 璁$畻涓€涓狶ua瀛楃涓茬殑鍔犲瘑鏁e垪0 crypto.new_hash () 鍒涘缓涓€涓彲浠ユ坊鍔犱换鎰忔暟閲忓瓧绗︿覆鐨勬憳瑕?鏁e垪瀵硅薄銆?crypto.hmac () 璁$畻涓€涓狶ua瀛楃涓茬殑HMAC 锛堟暎鍒楁秷鎭璇佺爜锛夌鍚嶃€?crypto.new_hmac () 鍒涘缓涓€涓彲浠ユ坊鍔犱换鎰忔暟閲忓瓧绗︿覆鐨刪mac瀵硅薄銆?crypto.mask () 灏嗕竴涓猉OR鎺╃爜搴旂敤浜嶭ua瀛楃涓层€?crypto.toBase64 () 鎻愪緵锛堜簩杩涘埗锛塋ua瀛楃涓茬殑Base64琛ㄧず褰㈠紡銆?crypto.toHex () 鎻愪緵锛堜簩杩涘埗锛塋ua瀛楃涓茬殑ASCII鍗佸叚杩涘埗琛ㄧず褰㈠紡銆?/p>

crypto.encrypt () 鍔犲瘑Lua瀛楃涓层€?鍙ユ硶 crypto.encrypt(algo, key, plain iv]) 鍙傛暟 algo鏀寔鐨勫姞瀵嗙畻娉曠殑鍚嶇О -key鍔犲瘑瀵嗛挜浣滀负涓€涓瓧绗︾敳锛涘澹獳ES鍔犲瘑锛岃繖涓暱搴﹀繀椤绘槸16涓瓧鑺?-plain瑕佸姞瀵嗙殑瀛楃涓?濡傛湁蹇呰锛屽畠灏嗚鑷姩濉浂鍒?6瀛楄妭鐨勮竟鐣?銉籭v濡傛灉浣跨敤AES-CBC,鍚姩杞戒綋;濡傛灉娌℃湁缁欏嚭锛屽垯榛樿涓哄叏闆?杩斿洖 鍔犲瘑鏁版嵁涓轰簩杩涘埗瀛楃涓层€傚浜嶢ES,杩欐€绘槸16涓瓧鑺傜殑鍊嶆暟銆?渚?print(crypto.toHex(crypto.encrypt(鈥淎ES-ECB鈥? 鈥?234567890abcdef鈥? "Hi, I鈥檓 secret 涔熷彲浠ョ湅鐪?鈥rypto.decrypt() crypto.decrypt () 瑙e瘑浠ュ墠鍔犲瘑鐨勬暟鎹€?鍙ユ硶 crypto.decrypt(algokey, cipher [, iv]) 鍙傛暟 -algo鏀寔鐨勫姞瀵嗙畻娉曠殑鍚嶇О -key鍔犲瘑瀵嗛挜浣滀负涓€涓瓧绗︿覆;瀵逛簬AES鍔犲瘑锛岃繖涓暱搴﹀繀椤绘槸16涓瓧鑺?銉籧ipher瑕佽В瀵嗙殑瀵嗘枃(浠庝腑鑾峰緱crypto.encrypt()) 銉籭v濡傛灉浣跨敤AES-CBC,鍚姩杞戒綋;濡傛灉娌℃湁缁欏嚭锛屽垯榛樿涓哄叏闆?杩斿洖 瑙e瘑鐨勫瓧绗︿覆銆?璇锋敞鎰忥紝瑙e瘑鍚庣殑瀛楃涓叉渶鍚庡彲鑳戒細鍖呭惈棰濆鐨勯浂濉厖瀛楄妭銆傚墺绂昏繖绉嶅~鍏呯殑涓€绉嶆柟娉?鏄細match(鈥?.-)%z*$鈥?鍦ㄨВ瀵嗙殑瀛楃涓蹭笂浣跨敤銆傚鏋滀娇鐢ㄤ簩杩涘埗鏁版嵁锛岄渶瑕侀澶栨敞鎰忥紝鍦?杩欑鎯呭喌涓嬶紝瀹為檯闀垮害鍙兘闇€瑕佺敤鏁版嵁杩涜缂栫爜锛屽苟涓旓細sub(l, n)鍙互浣跨敤璇ラ暱搴﹀幓闄ゅ~ 鍏呫€?渚?key = 鈥?234567890abcdef鈥?cipher = crypto.encrypt(鈥淎ES-ECB鈥? key, 鈥淗i, I鈥檓 secret!鈥? print(crypto, toHex(cipher)) print(crypto.decrypt(鈥淎ES-ECB鈥? key, cipher)) 涔熷彲浠ョ湅鐪?鈥rypto.encrypt() crypto.fhash () 璁$畻涓€涓枃浠剁殑鍔犲瘑鏁e垪銆?鍙ユ硶 hash = crypto.fhash(algofilename) 鍙傛暟 -algo浣跨敤鏁e垪绠楁硶锛屼笉鍖哄垎澶у皬鍐欑殑瀛楃涓?鈥?filename鏂囦欢鐨勬暎鍒楄矾寰?杩斿洖 鍖呭惈娑堟伅鎽樿鐨勪簩杩涘埗瀛楃涓层€傝鑾峰彇鏂囨湰鐗堟湰(ASCII鍗佸叚杩涘埗瀛楃)锛岃浣?鐢?crypto.toHex()銆?渚?print(crypto.toHex(crypto.fhash(鈥渟hal鈥?鈥渕yfile.lua鈥?)) crypto.hash () 璁$畻涓€涓狶ua瀛楃涓茬殑鍔犲瘑鏁e垪銆?鍙ユ硶 hash = crypto.hash(algOj str) 鍙傛暟 algo浣跨敤鏁e垪绠楁硶锛屼笉鍖哄垎澶у皬鍐欑殑str瀛楃涓叉潵鏁e垪鍐呭 杩斿洖 鍖呭惈娑堟伅鎽樿鐨勪簩杩涘埗瀛楃涓层€傝鑾峰彇鏂囨湰鐗堟湰(ASCII鍗佸叚杩涘埗瀛楃)锛岃浣?鐢?crypto.toHex()銆?渚?print(crypto.toHex(crypto.hash(鈥渟hal鈥?鈥渁bc鈥?)) crypto.new_hash () 鍒涘缓涓€涓彲浠ユ坊鍔犱换鎰忔暟閲忕殑瀛楃涓茬殑鎽樿/鏁e垪瀵硅薄銆傚璞℃湁update鍜宖inalize鍔熻兘銆?鍙ユ硶 hashobj = crypto.new_hash(aIgo) algo渚跨敤鏁e绠楁硶锛屽皬鍖哄垎澶у皬涓庢棾瀛戠鐢?杩斿洖 鐢ㄦ埛鏁版嵁瀵硅薄update鍜宖inalize鍙敤鐨勫姛鑳姐€?渚?hashobj = crypto.new_hash(鈥淪HAl鈥? hashobj:update(鈥淔irstString鈥?) hashobj:update(鈥淪econdString鈥?) digest = hashobj:finalize() print(crypto.toHex(digest)) crypto.hmac () 璁$畻涓€涓狶ua瀛楃涓茬殑HMAC (鏁e垪娑堟伅璁よ瘉鐮?绛惧悕銆?鍙ユ硶 signature = crypto.hmac(algostrkey) 鍙傛暟 -algo鏁e垪绠楁硶浣跨敤锛屼笉鍖哄垎澶у皬鍐欑殑瀛楃涓?銉籹tr鏁版嵁鏉ヨ绠楀搱甯屽€?-key鐢ㄤ簬绛惧悕鐨勫瘑閽ュ彲鑳芥槸涓€涓簩杩涘埗瀛楃涓?杩斿洖 鍖呭惈HMAC绛惧悕鐨勪簩杩涘埗瀛楃涓层€備娇鐢╟rypto.toHex()鑾峰緱鐨勬枃鏈増鏈€?渚?print(crypto.toHex(crypto.hmacC鈥檚hal1鈥? 鈥渁bc鈥? 鈥渕ysecret鈥?)) crypto.new_hmac () 鍒涘缓涓€涓彲浠ユ坊鍔犱换鎰忔暟閲忓瓧绗︿覆鐨刪mac瀵硅薄銆傚璞℃湁update鍜宖inalize鍔熻兘銆?鍙ユ硶 hmacobj = crypto.new_hmac(algoj key) 鍙傛暟 -algo浣跨敤鏁e垪绠楁硶锛屼笉鍖哄垎澶у皬鍐欑殑瀛楃涓?-key浣跨敤鐨勫叧閿?鍙兘鏄竴涓簩杩涘埗瀛楃涓? 杩斿洖 鐢ㄦ埛鏁版嵁瀵硅薄update鍜宖inalize鍙敤鐨勫姛鑳姐€?渚?hmacobj = crypto.new_hmac(鈥淪HA1鈥? 鈥渟3kr3t鈥? hmacobj:update(鈥淔irstString鈥?) hmacobj:update(鈥淪econdString鈥?) digest = hmacobj:finalize() print(crypto.toHex(digest)) crypto.mask () 灏嗕竴涓猉OR鎺╃爜搴旂敤浜嶭ua瀛楃涓层€傝娉ㄦ剰锛岃繖涓嶆槸涓€涓悎閫傜殑鍔犲瘑鏈哄埗锛屼絾鏄湁浜涘崗璁彲鑳?浼氫娇鐢ㄥ畠銆?鍙ユ硶 crypto.mask(message, mask) 鍙傛暟 鈥?message娑堟伅鎺╃洊 -mask瑕佸簲鐢ㄧ殑闈㈠叿锛屽鏋滅煭浜庢秷鎭垯閲嶅 杩斿洖 琚睆钄界殑娑堟伅锛屼綔涓轰簩杩涘埗瀛楃涓层€傜敤crypto.toHex()寰楀埌瀹冪殑鏂囧瓧琛ㄨ堪銆?渚?print(crypto.toHex(crypto.mask(鈥渟ome message to obscure鈥?鈥淴0Y7鈥?)) crypto.toBase64 () 鎻愪緵(浜岃繘鍒?Lua瀛楃涓茬殑Base64琛ㄧず褰㈠紡銆?鍙ユ硶 b64 = crypto.toBase64(binary) 鍙傛暟 binary杈撳叆瀛楃涓插埌Base64缂栫爜 杩斿洖 涓€涓狟ase64缂栫爜鐨勫瓧绗︿覆銆?渚?print(crypto.toBase64(crypto.hash(鈥渟hal鈥?鈥渁bc鈥?)) crypto.toHex () 鎻愪緵(浜岃繘鍒?Lua瀛楃鍗樻棾ASCII鍗佸叚杩涘埗琛ㄤ笉褰㈠紡銆傝緭浜哄瓧绗︾敵涓棾姣嶄釜瀛楄妭鍦ㄨ緭鍑轰腑琛?绀轰负涓や釜鍗佸叚杩涘埗瀛楃銆?鍙ユ硶 hexstr = crypto.toHex(binary) 鍙傛暟 binary杈撳叆瀛楃涓叉潵鑾峰彇鍗佸叚杩涘埗琛ㄧず 杩斿洖 ASCII鍗佸叚杩涘埗瀛楃涓层€?渚?print(crypto.toHex(crypto.hash(鈥渟hal鈥?鈥渁bc鈥?)) 鏂囨。銆嬭嫳璇€濇ā鍧椼€婦HT DHT妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2015-06-17 RobTillaart Vowstar dhtlib

甯搁噺 鍚勭鍔熻兘鐨勫父閲忋€?dhtread () 璇诲彇鍚勭DHT浼犳劅鍣紝鍖呮嫭DHT11,21,22,33,44庐搴︽俯搴︾粍鍚堜紶鎰熷櫒銆?dhtreadll () 闃呰DHT11婀垮害娓╁害缁勫悎浼犳劅鍣ㄣ€?dhtreadxx () 闃呰闄HT11浠ュ鐨勫悇绉岲HT浼犳劅鍣ㄣ€?/p>

甯搁噺 鍚勭鍔熻兘鐨勫父閲忋€?dht.OK , dht.ERROR_CHECKSUM , dht. ERROR_TIMEOUT 浠h〃浜?DHT 鐨勫彲鑳藉€艰鍙栫姸鎬?dht.read 锛堬級 璇诲彇鍚勭DHT浼犳劅鍣紝鍖呮嫭DHT11,21,22,33,44婀垮害娓╁害缁勫悎浼犳劅鍣ㄣ€?鍙ユ硶 dht 銉?read锛坧in锛?鍙傛暟 pin DHT浼犳劅鍣ㄧ殑寮曡剼鍙凤紙涓嶈兘鏄?锛?绫诲瀷鏄暟瀛?杩斿洖 鈥tatus濡傚父閲忎腑鎵€瀹氫箟 -temp娓╁害锛堣涓嬮潰鐨勬敞閲婏級 鈥umi婀垮害锛堣涓嬮潰鐨勬敞閲婏級 銉籺emp_dec娓╁害鍗佽繘鍒?鈥umi_dec婀垮害灏忔暟 鉂舵敞鎰?濡傛灉浣跨敤娴姩鍥轰欢鐒跺悗temp鍜宧umi鏄诞鐐规暟銆傚湪鏁存暟鍥轰欢涓婏紝鏈€鍚庣殑鍊煎繀椤讳粠temp 鍜寍 temp_dec |鍜岃繛鎺ヨ捣鏉 hum_dec |銆?渚?pin = 5 status, temp, humi, temp_deCj humi_dec = dht.read(pin) if status == dht.OK then 鈥揑nteger firmware using this exampLe print(string.format(鈥淒HT Temperature:%d.%03d;Humidity:%d.%03d\r\n"4 math,floor(temp), temp_deCj math.floor(humi), humi_dec )) 鈥揊Loat firmware using this exampLe print(鈥淒HT Temperature:鈥濃€emp鈥︹€?"鈥︹€淗umidity:鈥濃€umi) elseif status == dht.ERROR_CHECKSUM then print( 鈥淒HT Checksum error.鈥? elseif status == dht.ERROR_TIMEOUT then print( 鈥淒HT timed out.鈥? end dht.readll () 闃呰DHTll婀垮害娓╁害缁勫悎浼犳劅鍣ㄣ€?鍙ユ硶 dht.readll(pin) 鍙傛暟 pin DHTll浼犳劅鍣ㄧ殑寮曡剼鍙?涓嶈兘鏄?),绫诲瀷鏄暟瀛?杩斿洖 鈥tatus濡傚父閲忎腑鎵€瀹氫箟 鈥emp娓╁害(瑙佷笅闈㈢殑娉ㄩ噴) 鈥umi婀垮害(瑙佷笅闈㈢殑娉ㄩ噴) 鈥emp_dec娓╁害鍗佽繘鍒?鈥umi_dec婀垮害灏忔暟 銆傛敞鎰?濡傛灉浣跨敤娴姩鍥轰欢鐒跺悗temp鍜宧umi鏄诞鐐规暟銆傚湪鏁存暟鍥轰欢涓婏紝鏈€鍚庣殑鍊煎繀椤讳粠temp 鍜寍 temp_dec |/|Tumi |鍜岃繛鎺ヨ捣鏉~hum_dec |銆?涔熷彲浠ョ湅鐪?dhtread () dht.readxx () 闃呰闄HTll浠ュ鐨勫悇绉岲HT浼犳劅鍣ㄣ€?鍙ユ硶 dht 銉?readxx(pin) 鍙傛暟 pin DHT浼犳劅鍣ㄧ殑寮曡剼鍙凤紙涓嶈兘鏄?锛?绫诲瀷鏄暟瀛?杩斿洖 鈥tatus濡傚父閲忎腑鎵€瀹氫箟 -temp娓╁害锛堣涓嬮潰鐨勬敞閲婏級 銉籬umi婀垮害锛堣涓嬮潰鐨勬敞閲婏級 鈥emp_dec娓╁害鍗佽繘鍒?鈥umi_dec婀垮害灏忔暟 銆傛敞鎰?濡傛灉浣跨敤娴姩鍥轰欢鐒跺悗temp鍜宧umi鏄诞鐐规暟銆傚湪鏁存暟鍥轰欢涓婏紝鏈€鍚庣殑鍊煎繀椤讳粠temp 鍜寍 temp_dec |/|~humi |鍜岃繛鎺ヨ捣鏉 hum_dec |銆?涔熷彲浠ョ湅鐪?dhtread 锛堬級 DS18B20 妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2017骞?鏈?1鏃?fetchbot fetchbot dsl8b20.c

璇ユā鍧楁彁渚涘DS18B201-Wire鏁板瓧娓╁害璁$殑璁块棶銆傝娉ㄦ剰锛孨odeMCU涓烘浼犳劅鍣ㄦ彁渚涗簡涓€涓狢妯?鍧?杩欎竴涓?鍜屼竴涓狶ua妯″潡銆傝鍙傞槄#2003, 浜嗚В浠栦滑鍚勮嚜鐨勪紭鐐广€?dsl8b20.read () 鍦ㄥ崟绾挎€荤嚎涓婂彂鍑烘墍鏈夎繛鎺ョ殑浼犳劅鍣ㄧ殑娓╁害杞崲锛屽苟鍦ㄥ洖璋冨嚱鏁颁腑鐨勮浆鎹㈠欢杩熶箣 鍚庤繑鍥炴祴閲忕粨鏋溿€?ds!8b20.setting () 閰嶇疆娓╁害鍒嗚鲸鐜囪缃€?ds!8b20.setup () 鍒濆鍖栨墍閫夊紩鑴氫笂鐨勫崟绾挎€荤嚎銆?/p>

dsl8b20.read () 鍦ㄥ崟绾挎€荤嚎涓婂彂鍑烘墍鏈夎繛鎺ョ殑浼犳劅鍣ㄧ殑娓╁害杞崲锛屽苟鍦ㄥ洖璋冨嚱鏁颁腑鐨勮浆鎹㈠欢杩熶箣鍚庤繑鍥炴祴閲忕粨鏋溿€?杩斿洖鐨勬祴閲忕粨鏋滃彲浠ラ€氳繃浠ヨ〃鏍兼垨瀹跺涵绫诲瀷浼犻€掔殑ROM鍦板潃杩涜杩囨护銆備负姣忎釜鎸囧畾鐨勪紶鎰熷櫒璋冪敤鍥?璋冨嚱鏁般€?鍙ユ硶 dsl8b20.read(CALLBACK, ROM], FAMILY_ADDRESS]) 鍙傛暟 銉籆ALLBACK涓烘瘡涓紶鎰熷櫒鎵ц鍥炶皟鍑芥暟 銆備緥濡?functionClNDEX^ ROM, RES, TEMP, TEMP_DEC, PAR) print(INDEX, ROM, RES, TEMP, TEMP_DEC, PAR) 鈥OM鍖呭惈鎸囧畾浼犳劅鍣ㄥ湴鍧€鐨勮〃鏍硷紝鎴栬€呯暀绌鸿鎵ц鎵€鏈変紶鎰熷櫒鐨勫崟绾挎€荤嚎鎼滅储 銆備緥濡倇鈥?8锛欶F锛欶F锛欶F锛欶F锛欶F锛欶F锛欶F鈥?鈥?8锛欶F锛欶F锛欶F锛欶F锛欶F锛欶F锛欶F鈥潁 , {} 鈥AMILY_ADDRESS鍙€夛紝灏嗚澶囨悳绱㈤檺鍒朵负鐗瑰畾鐨勫搴被鍨?銆備緥濡?x28 杩斿洖 nil 鍥炶皟鍑芥暟鍙傛暟 銉籌NDEX鎬荤嚎涓婁紶鎰熷櫒鐨勭储寮?鈥OM浼犳劅鍣?4浣嶆縺鍏変唬鐮?o 28锛欶F锛欶F锛欶F锛欶F锛欶F锛欶F锛欶F LSB, 8浣嶅鏃忎唬鐮侊紝48浣嶅簭鍒楀彿锛孧SB8{icrc -RES娓╁害鍒嗚鲸鐜?鈥EMP娓╁害 銉籘EMP_DEC娓╁害灏忔暟鏁存暟鍥轰欢 鈥AR浼犳劅鍣ㄥ瘎鐢熸棗 銆傛敞鎰?濡傛灉浣跨敤鍋滅偣鍥炰欢锛屽垯temp鏄牱鐐规暒銆備换鏁存晭鍥炰欢涓婏紝鏈€鍚庢棾鍊煎繀椤讳粠temp鍜屽鎶€璧?鏉?temp_dec 銆?渚?local ow_pin = 3 dsl8b20.setup(ow_pin) 鈥搑ead aLL sensors and print aLL measurement resuLts dsl8b20.read( function(ind,rom? res,temp,tdec^ par) print(ind,string.format(鈥?02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X,Jstring.match end,{}); 鈥搑ead onty sensors with famity type 0x28 and print aLL measurement resuLts dsl8b20.read( function(ind,rom,res,temp,tdec4 par) print (ind, st ring 銉籪opmat(鈥濓紖02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X鈥漘,stping銉籱at:cl鈥?end,{},0x28); 鈥搒ave device roms in a variabLe local addr = (} dsl8b20.read( function(ind,rom,res,tempjtdec^ par) addr[ind] = {string.format(鈥?02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X,Jstring.me end,{}); 鈥搑ead onLy sensors Listed in the variabLe addr dsl8b20.read( function(ind,rom,res,temp,tdec^ par) print(ind,string.format(鈥?02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X"4string.match end,addr); 鈥損rint onLy parasitic sensors dsl8b20.read( function(indJ rom,restemp,tdec^ par) if (par == 1) then print(ind, string.format(,%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X,J string.rr end end,{}); 鈥損rint if temperature is greater or Less than a defined vaLue dsl8b20.read( function(ind,rom,res^tempjtdec,par) if (t > 25) then print(ind, string.format (,%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X,J string.rr end if (t < 20) then print (ind, st ring. format(,%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X,J string, rr end end,{}); dsl8b20.setting () 閰嶇疆娓╁害鍒嗚鲸鐜囪缃€?鍙ユ硶 dsl8b20.setting(ROM, RES) 鍙傛暟 銉籖OM鍖呭惈鎸囧畾浼犳劅鍣ㄥ湴鍧€鐨勮〃鏍硷紝鎴栬€呮墍鏈変紶鎰熷櫒閮戒负绌虹殑琛ㄦ牸 銆備緥濡倇鈥?8锛欶F锛欶F锛欶F锛欶F锛欶F锛欶F锛欶F鈥?鈥?8锛欶F锛欶F锛欶F锛欶F锛欶F锛欶F锛欶F"} , {} -RES娓╁害浣嶅垎杈ㄧ巼 杩斿洖 nil local ow_pin = 3 dsl8b20.setup(ow_pin) dsl8b20.setting((,28锛欶F锛欶F锛欶F锛欶F锛欶F锛欶F锛欶F,/,28锛欶F锛欶F锛欶F锛欶F锛欶F锛欶F锛欶F"}J 9) dsl8b20.setup () 鍒濆鍖栨墍閫夊紩鑴氫笂鐨勫崟绾挎€荤嚎銆?鍙ユ硶 dsl8b20.setup(OW_BUS_PIN) 鍙傛暟 鈥?OW_BUS_PIN 0 1 - 12 杩斿洖 nil local ow_pin = 3 dsl8b20.setup(ow_pin) 鏂囨。銆嬭嫳璇€濇ā鍧椼€嬬紪鐮佸櫒 缂栫爜鍣ㄦā鍧?浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016骞?鏈?6鏃?鐗归噷鍩冮噷妫?鐗归噷鍩冮噷妫?encoder.c

缂栫爜鍣ㄦā鍧楁彁渚涚敤浜庣紪鐮佸拰瑙g爜瀛楄妭鏁版嵁鐨勫悇绉嶅姛鑳絆 encoder.toBase64 () 鎻愪緵(浜岃繘鍒?Lua瀛楃涓茬殑Base64琛ㄧず褰㈠紡銆?encoder.fromBase64 () 灏?浜岃繘鍒?Lua瀛楃涓茬殑Base64琛ㄧず瑙g爜鍥炲師濮嬪瓧绗︿覆銆?encoder.toHex () 鎻愪緵(浜岃繘鍒?Lua瀛楃涓茬殑ASCII鍗佸叚杩涘埗琛ㄧず褰㈠紡銆?encoder.fromHex () 杩斿洖ASCII鍗佸叚杩涘埗瀛楃涓茬殑Lua浜岃繘鍒跺瓧绗︿覆瑙g爜銆?/p>

encoder.toBase64 () 鎻愪緵(浜岃繘鍒?Lua瀛楃涓茬殑Base64琛ㄧず褰㈠紡銆?鍙ユ硶 b64 = encoder.toBase64(binary) 鍙傛暟 binary杈撳叆瀛楃涓插埌Base64缂栫爜 杩斿洖 涓€涓狟ase64缂栫爜鐨勫瓧绗︿覆銆?渚?print(encoder.toBase64(crypto.hash(鈥渟hal鈥?鈥渁bc鈥?)) encoder.fromBase64 () 灏?浜岃繘鍒?Lua瀛楃涓茬殑Base64琛ㄧず瑙g爜鍥炲師濮嬪瓧绗︿覆銆傚鏋滃瓧绗︿覆涓嶆槸鏈夋晥鐨刡ase64缂?鐮侊紝鍒欎細寮曞彂閿欒銆?鍙ユ硶 binary_string = encoder.toBase64(b64) 鍙傛暟 b64 Base64缂栫爜鐨勮緭鍏ュ瓧绗︿覆 杩斿洖 瑙g爜鐨凩ua (浜岃繘鍒?瀛楃涓层€?print(encoder.fromBase64(encoder.toBase64(鈥渉ello world鈥?)) encoder.toHex () 鎻愪緵(浜岃繘鍒?Lua瀛楃涓茬殑ASCII鍗佸叚杩涘埗琛ㄧず褰㈠紡銆傝緭鍏ュ瓧绗︿覆涓殑姣忎釜瀛楄妭鍦ㄨ緭鍑轰腑琛?绀轰负涓や釜鍗佸叚杩涘埗瀛楃銆?鍙ユ硶 hexstr = encoder.toHex(binary) 鍙傛暟 binary杈撳叆瀛楃涓叉潵鑾峰彇鍗佸叚杩涘埗琛ㄧず 杩斿洖 ASCII+鍏繘鍒跺瓧绗︿覆銆?渚?print(encoder.toHex(crypto.hash(鈥渟hal鈥?鈥渁bc鈥?)) encoder.fromHex () % 杩斿洖ASCII鍗佸叚杩涘埗瀛楃涓茬殑Lua浜岃繘鍒跺瓧绗︿覆瑙g爜銆傝緭鍑哄瓧绗︿覆涓殑姣忎釜瀛楄妭鍦ㄨ緭鍏ヤ腑琛ㄧず 涓轰袱涓崄鍏繘鍒跺瓧绗︺€傚鏋滃瓧绗︿覆涓嶆槸鏈夋晥鐨刡ase64缂栫爜锛屽垯浼氬紩鍙戦敊璇€?鍙ユ硶 binary = encoder.fromHex(hexstr) 鍙傛暟 hexstr ASCII鍗佸叚杩涘埗瀛楃涓层€?杩斿洖 鍗佸叚杩涘埗琛ㄧず鐨勮В鐮佸瓧绗︿覆銆?渚?print(encoder.fromHexC鈥檈aSaea"))) 鏈€缁堢敤鎴疯缃ā鍧?浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2015骞?鏈?鏃?缃椾集鐗光€㈢鏂?缃椾集鐗光€㈢鏂?enduser_setup.c 璇ユā鍧楁彁渚涗簡涓€绉嶇畝鍗曠殑閰嶇疆ESP8266鑺墖鐨勬柟娉曪紝鏃犻渶浣跨敤涓茶鎺ュ彛鎴栭鍏堢紪绋媁iFi鍑瘉鍒拌姱鐗?涓娿€?/p>

杩愯鍚?enduser_setup.start锛堬級,鍚嶄负鈥淪etupGadget_XXXXXX"鐨勬棤绾跨綉缁滃皢鍚姩锛堝彲 浠ser_config.h閫氳繃瀹氫箟瑕嗙洊姝ゅ墠缂€ENDUSER_SETUP_AP_SSID 锛夈€傝繛鎺ュ埌璇SID,鐒跺悗瀵艰埅鍒?浠讳綍缃戠珯鐨勬牴锛堜緥濡傦紝http://example. com/灏嗗伐浣滐紝浣嗕笉浣跨敤.local鍩燂紝鍥犱负瀹冨皢鍦╥OS涓婂け 璐ワ級銆傜被浼间簬涓婇潰鐨勫浘鐗囩殑缃戦〉灏嗚鍔犺浇锛屽厑璁告渶缁堢敤鎴锋彁渚涗粬浠殑Wi-Fi淇℃伅銆?鎴愬姛鑾峰彇IP鍦板潃鍚庯紝璇ユā鍧楀皢浼氬儚enduser_setup.stop锛堬級璋冪敤涓€鏍峰仠姝€傚湪鎷嗗嵏涔嬪墠鏈?0绉掔殑寤?杩燂紝浠ュ厑璁歌繛鎺ョ殑瀹㈡埛绔湪SoftAP浠嶅浜庣箛鐘舵€佹椂鑾峰緱鏈€鍚庣殑鐘舵€佹秷鎭€?鏇夸唬HTML鍙互閫氳繃鍦ㄦ枃浠秂nduser_setup.html绯荤粺涓婅皟鐢ㄤ竴涓枃浠舵潵鎻愪緵鏈嶅姟銆傜綉椤垫墍闇€鐨勪竴 鍒囬兘蹇呴』鍖呭惈鍦ㄨ繖涓枃浠朵腑銆傝繖涓枃浠跺皢琚繚瀛樺湪RAM涓紝鎵€浠ヤ繚鎸佸敖鍙兘灏忋€傝鏂囦欢鍙互鎻愬墠 gzip鈥檇鏉ュ噺灏忓ぇ灏忥紙鍗充娇鐢╣zip -n鎴杬opfli 锛?骞跺湪鏈嶅姟鏃讹紝鏈€缁堢敤鎴疯缃ā鍧楀皢娣诲姞閫傚綋 鐨凜ontent-Encoding鏍囬鐨勫搷搴斻€?娉ㄦ剰锛氬鏋滆鍘嬬缉锛屾枃浠朵篃鍙互琚懡鍚峞nduser_setup.htmL.gz涓鸿涔夌洰鐨勩€侴zip缂栫爜鐢辨枃浠剁殑鍐?瀹瑰喅瀹氾紝鑰屼笉鏄枃浠跺悕銆?浠ヤ笅HTTP绔偣瀛樺湪锛?绔偣 鎻忚堪 / 杩斿洖缃戦〉鐨凥TMLo灏嗚繑鍥瀍nduser_setup.html鏂囦欢绯荤粺涓婂瓨鍦ㄧ殑鍐呭锛屽惁鍒欒繑鍥炲祵鍏ュ埌鍥轰欢鏄犲儚涓殑浜?鈥?寮哄埗ESP8266瀵规墍鏈夋笭閬撹繘琛岀幇鍦鸿皟鏌伙紝鎶ュ憡鍙互鎵惧埌鐨勬帴鍏ョ偣銆傝繑鍥炴湁鏁堣礋杞芥槸涓€涓狫SON鏁?/apllst 缁勶細[{鈥渟sid鈥? 鈥渇oobar鈥? 鈥渞ssi鈥? -36, 鈥渃han鈥?:3}] 7 ccx 杩斿洖HTTP 204鐘舵€侊紙鍦╓i-Fi杩炴帴妫€鏌绘湡闂存煇浜汚ndroid瀹㈡埛绔鏈燂級 generate_204 /鐘舵€?杩斿洖鐢辩綉椤典娇鐢ㄧ殑绾枃鏈姸鎬佹弿杩?绔偣 鎻忚堪 杩斿洖鍖呭惈鍗佸叚杩涘埗鏍煎紡鐨凟SP8266鐨勮姱鐗嘔D鍜岀姸鎬佺爜鐨勬湁鏁堣浇鑽稪SON锛?0=绌洪棽锛?=杩炴帴锛?=瀵嗙爜閿欒锛? = 鏈夋壘鍒帮紝4=澶辫触锛?=鎴愬姛 绔偣鏃ㄥ湪鐢ㄤ簬璁剧疆鏃犵嚎缃戠粶鍑瘉鐨勬湇鍔°€備笌/update except#鍚岃繑鍥炵浉鍚岀殑鏈夋晥杞借嵎锛?status.]son鑰?鍚戝埌/銆?琛ㄥ崟鎻愪氦鐩爣銆備緥 濡傦細 http://example.com/update?wifi_ssid=foobar&wifi_password=CorrectHorseBatterySta|锛?椤绘槸GET璇锋眰銆傚皢閲嶅畾鍚戝埌/瀹屾垚鏃躲€?enduser_setup.manual () 鎺у埗鏄惁浣跨敤鎵嬪姩AP閰嶇疆銆?enduser_setup.start () 鍚姩寮哄埗闂ㄦ埛銆?enduser.setup.stop () 鍋滄寮哄埗闂ㄦ埛銆?/p>

enduser_setup.manual () 鎺у埗鏄惁浣跨敤鎵嬪姩AP閰嶇疆銆?榛樿鎯呭喌涓嬶紝enduser_setup妯″潡浼氬湪鍚姩鏃惰嚜鍔ㄩ厤缃紑鏀炬帴鍏ョ偣锛屽苟鍦ㄨ澶囨垚鍔熷姞AWiFi缃戠粶鍚?鍋滄銆傚鏋滃惎鐢ㄤ簡鎵嬪姩纰哄紡锛屽垯涓嶄細杩欐牱鍋氥€倃ifi.SOFTAP鍦ㄥ懠鍙箣鍓嶏紝璁惧蹇呴』鎵嬪姩閰嶇疆涓烘ā 寮廵nduser_setup.start()銆傛澶曞崪锛岃澶囨垚鍔熷姞鍏iFi缃戠粶鍚庯紝闂ㄦ埛涓嶄細鍋滄銆?鍙ユ硶 enduser_setup.manual([on_off]) 鍙傛暟 銉籵n_off鎸囩ず鏄惁浣跨敤鎵嬪姩妯″紡鐨勫竷灏斿€?濡傛灉娌℃湁缁欏嚭锛岃鍔熻兘鍙繑鍥炲綋鍓嶈缃€?杩斿洖 褰撳墠璁剧疆锛屽鏋滃惎鐢ㄦ墜鍔ㄦā寮忓垯涓簍rue,鍚﹀垯涓篺alse銆?渚?wifi.setmode(wifi.STATIONAP) wifi.ap.config({ssid="MyPersona1SSID"j auth=wifi.OPEN}) enduser_setup.manual(true) enduser_setup.start( function() print(鈥淐onnected to wifi as:鈥濄兓鈥?wifi.sta.getip()) end, function(err4 str) print(鈥渆nduser_setup: Err #鈥?.銉?err 鈥?": " 鈥?str) end )锛?enduser_setup.start () 鍚姩寮哄埗闂ㄦ埛銆?娉ㄦ剰锛氬綋EUS宸茬粡杩愯鏃惰皟鐢╯tart ()鏄竴涓敊璇紝骞朵笖浼氬鑷磗top ()琚皟鐢ㄦ潵鍏抽棴EUS銆?鍙ユ硶 enduser_setup. start([onConnected() ], [onError(err_nurrij string) ], [onDebug(string)]) 鍙傛暟 鈥?onConnected()褰撹幏寰桰P鍦板潃鏃讹紝鍦╡nduser_setup妯″潡灏嗚嚜琛岀粓姝箣鍓嶏紝灏嗕細瑙﹀彂鍥炶皟 鈥nError()濡傛灉閬囧埌閿€璇欙紝鍥炶皟灏嗗郊鏈熷弸銆俥rr_num鏄弿杩伴攢璇欐棾鍙屽瓙锛屽紑string鐨勬渻閿€淇?鐨勬弿杩般€?鈥nDebugO 鍥炶皟鍦ㄩ粯璁ゆ儏鍐典笅琚鐢?鐢?#define ENDUSER_SETUP_DEBUG_ENABLE in 鎺?鍒秂nduser_setup.c ) o瀹冩棬鍦ㄧ敤浜庢熁鎵炬ā鍧椾腑鐨勫唴閮ㄩ棶棰樸€俿tring鍖呭惈姝e湪杩涜鐨勬弿杩般€?杩斿洖 nil 渚?enduser_setup.start( function() print(鈥淐onnected to wifi as:鈥?銉?wifi.sta.getip()) end, function(errj str) print(鈥渆nduser_setup: Err #鈥?銉?err 鈥?": " 鈥?str) end, print 鈥?Lua print function can serve as the debug calLback ); enduser_setup.stop () 鍋滄寮哄埗闂ㄦ埛銆?鍙ユ硶 enduser_setup.stop() 鍙傛暟 娌℃湁 杩斿洖锛?nil 鏂囦欢妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 鎯呰妭涓瓧 Zeroday Zeroday file.c

鏂囦欢妯″潡鎻愪緵瀵规枃浠剁郴缁熷強鍏跺崟涓枃浠剁殑璁块棶銆?鏂囦欢绯荤粺鏄竴涓钩闈㈡枃浠剁郴缁燂紝娌℃湁瀛愮洰褰?鏂囦欢澶圭殑姒傚康銆?闄や簡鍐呴儴闂瓨涓婄殑SPIFFS鏂囦欢绯荤粺澶栵紝濡傛灉鍚敤浜咶atFS,璇ユā鍧楄繕鍙互璁块棶澶栭儴SD鍗′笂鐨?FAT鍒嗗尯銆?鈥搊pen fiLe in flash: if file.open(鈥渋nit.lua鈥? then print(file.read()) file.close() end 鈥搊r with fuLL pathspec file.open(鈥?FLASH/init.lua鈥? 鈥搊pen fiLe on SD card if file.open(鈥?SD0/somefile.txt鈥? then print(file.read()) file.close() end file.chdir () 鏇存敼褰撳墠鐩綍锛堝拰椹卞姩鍣級銆?鏂囦欢宸插瓨鍦紙锛?纭畾鎸囧畾鐨勬枃浠舵槸鍚﹀瓨鍦ㄣ€?鏂囦欢鏍煎紡锛堬級 鏍煎紡鍖栨枃浠剁郴缁熴€?file.fscfg () 浠ュ瓧鑺備负鍗曚綅杩斿洖鏂囦欢绯荤粺鍖哄煙鐨勯棯瀛樺湴鍧€鍜岀墿鐞嗗ぇ灏忋€?file.fsinfo () 杩斿洖鏂囦欢绯荤粺鐨勫ぇ灏忎俊鎭€?鐨?File. Li st () 鍒楀嚭鏂囦欢绯荤粺涓殑鎵€鏈夋枃浠躲€?file.mount () 鍦⊿D鍗′笂瀹夎FatFs鍗枫€?file.on () 娉ㄥ唽鍥炶皟鍑芥暟銆?file.open () 鎵撳紑涓€涓枃浠惰繘琛岃闂紝鍙兘鍒涘缓瀹冿紙瀵逛簬鍐欏叆妯″紡锛塐 file.remove () 浠庢枃浠剁郴缁熶腑鍒犻櫎鏂囦欢銆?file.rename () 閲嶅懡鍚嶄竴涓枃浠躲€?/p>

file.stat () 鑾峰彇琛ㄤ腑鏂囦欢鎴栫洰褰曠殑灞炴€с€?鍩烘湰妯″瀷 鍦ㄥ熀鏈ā鍨嬩腑锛屼竴娆℃渶澶氭墦寮€涓€涓枃浠躲€?瀵硅薄妯″瀷 鏂囦欢鐢辨枃浠跺垱寤虹殑鏂囦欢瀵硅薄琛ㄧず銆?filexlose () , file.obj锛?close () 鍏抽棴鎵撳紑鐨勬枃浠讹紝濡傛灉鏈夌殑璇濄€?file.flush () , fileobj锛?flush () 鍒锋柊鏂囦欢绯荤粺鐨勬寕璧峰啓鍏ワ紝纭繚閲嶆柊鍚姩鏃朵笉浼氫涪澶辨暟鎹€?file.read () , fileobj锛?read () 浠庢墦寮€鐨勬枃浠朵腑璇诲彇鍐呭銆?file.readline (), fileobj锛?read line () 浠庢墦寮€鐨勬枃浠朵腑璇诲彇涓嬩竴琛屻€?file.seek () , file.obj锛?seek () 璁剧疆骞惰幏鍙栨枃浠剁殑浣嶇疆锛屼粠鏂囦欢鐨勫紑澶寸畻璧凤紝鍒扮敱銆俧fset鎸囧畾鐨勪綅缃?鍔犱笂鐢眞hence瀛楃涓叉寚瀹氱殑鍩烘暟銆?file.write () , fileobj锛?write () 鍐欎竴涓瓧绗︿覆鍒版墦寮€鐨勬枃浠躲€?file.writeline (), file.obj锛?writeline () 鍐欎竴涓瓧绗︿覆鍒版墦寮€鐨勬枃浠跺苟鍦ㄦ湯灏鹃檮鍔犫€橽

file.chdir () 鏇存敼褰撳墠鐩綍(鍜岄┍鍔ㄥ櫒)銆?褰撴病鏈夐┍鍔ㄥ櫒/鐩綍浣滀负鏂囦欢鍚嶆椂锛屽皢浣跨敤杩欎釜鍛戒护銆?/FLASH绯荤粺鍚姩鍚庯紝褰撳墠鐩綍榛樿涓哄唴閮⊿PIFFS ()鐨勬牴鐩綍銆?/p>

鉂舵敞鎰?鍔熻兘鍙湁鍦‵atFS鏀寔琚紪璇戝埌鍥轰欢涓椂鎵嶅彲鐢ㄣ€?鍙ユ硶 file.chdir(dir) 鍙傛暟 dir 鐩綍鍚?FLASH , /SD0 , /SD1 绛夈€?杩斿洖 true false鍚﹀垯灏辨垚鍔熶簡 鏂囦欢宸插瓨鍦?) 纭畾鎸囧畾鐨勬枃浠舵槸鍚﹀瓨鍦ㄣ€?鍙ユ硶 file.exists(filename) 鍙傛暟 銉籪ilename鏂囦欢鏉ユ鏌?杩斿洖 鏂囦欢鐨勭湡瀹炲瓨鍦?鍗充娇澶у皬涓?瀛楄妭)锛屽鏋滀笉瀛樺湪锛屽垯涓篺alse files = file.list() if files[鈥渄evice.config鈥漖 then print(鈥淐onfig file exists鈥? end if file.exists(鈥渄evice.config鈥? then print(鈥淐onfig file exists鈥? end 涔熷彲浠ョ湅鐪?file.list() 鏂囦欢鏍煎紡() 鏍煎紡鍖栨枃浠剁郴缁熴€傚畬鍏ㄦ摝闄や换浣曠幇鏈夌殑鏂囦欢绯荤粺骞跺啓鍏ヤ竴涓柊鐨勬枃浠剁郴缁熴€傛牴鎹瓻SP涓棯瀛樿姱 鐗囩殑澶у皬锛岃繖鍙兘闇€瑕佸嚑绉掗挓鐨勬椂闂淬€?鉂舵敞鎰?鍔熻兘涓嶆敮鎸丼D鍗°€?鍙ユ硶 file.format() 鍙傛暟 娌℃湁 杩斿洖 nil 涔熷彲浠ョ湅鐪?file.remove() file.fscfg () 浠ュ瓧鑺備负鍗曚綅杩斿洖鏂囦欢绯荤粺鍖哄煙鐨勯棯瀛樺湴鍧€鍜岀墿鐞嗗ぇ灏忋€?鉂舵敞鎰?鍔熻兘涓嶆敮鎸丼D鍗°€?鍙ユ硶 file.fscfg() 鍙傛暟 娌℃湁 杩斿洖 鈥lash address (鏁? 鈥ize (鏁? 渚?print (st ring, format (鈥?x%x,J file.fscfg())) file.fsinfo () 杩斿洖鏂囦欢绯荤粺鐨勫ぇ灏忎俊鎭€傚崟浣嶆槸瀛楄妭涓篠PIFFS鍜宬Byte涓篎atFS銆?鍙ユ硶 file.fsinfo() 鍙傛暟 娌℃湁 杩斿洖 鈥emaining (鏁? 鈥sed (鏁? 鈥otal (鏁? 渚?鈥揼et file system info remaining, used, total=file>fsinfo() print(鈥漒nFile system info:\nTotal : 鈥溾€otal鈥︹€?(k)Bytes\nUsed : 鈥溾€sed鈥︹€?(k)B锛?鐨凢ile.List () 鍒楀嚭鏂囦欢绯荤粺涓殑鎵€鏈夋枃浠躲€?鍙ユ硶 file.list() 鍙傛暟 娌℃湁 杩斿洖 涓€涓寘鍚經鏂囦欢鍚嶏細鏂囦欢澶у皬锝濆鐨刲ua琛?1 = file, list銆傦紱 for k,v in pairs(l) do print(鈥渘ame:鈥濃€鈥︹€渏 size:鈥濃€) end file.mount () 鍦⊿D鍗′笂瀹夎FatFs鍗枫€?銆傛敞鎰?鍔熻兘浠呭湪FatFS鏀寔琚紪璇戝埌鍥轰欢涓椂鎵嶅彲鐢紝骞朵笖鍐呴儴闂瓨涓嶆敮鎸併€?鍙ユ硶 file.mount(ldrv[, pin]) 鍙傛暟 鈥?Idrv閫昏緫椹卞姩鍣ㄧ殑鍚嶇О锛?SD0 , /SD1绛夈€?-pin 1銆?2, SS/CS鐨?0绱㈠紦I,鐪佺暐鏃堕粯璁や负8銆?杩斿洖 鍗峰璞?渚?vol = file.mount(鈥?SOQ鈥? vol:umount() file.on () 娉ㄥ唽鍥炶皟鍑芥暟銆?瑙﹀彂浜嬩欢鏄? -rtc灏嗗綋鍓嶆棩鏈熷拰鏃堕棿浼犻€佸埌鏂囦欢绯荤粺銆傚姛鑳介璁″皢杩斿洖涓€涓寘鍚瓧娈电殑 琛▂ear , mon , day , hour , min , sec褰撳墠鐨勬棩鏈熷拰鏃堕棿銆備笉鏀寔鍐呴儴闂瓨銆?鍙ユ硶 file.on(event[j function()]) 鍙傛暟 鈥vent 涓?鈥unction()鍥炶皟鍑芥暟銆傚鏋渇unction()鐪佺暐锛屽垯鍙栨秷娉ㄥ唽鍥炶皟銆?杩斿洖 nil 渚?sntp.sync(server_ipj function() print(鈥渟ntp time sync ok鈥? file.onCrtc", function() return rtctime.epoch2cal(rtctime鈥et()) end) end) 涔熷彲浠ョ湅鐪?rtctime.epoch2cal() file.open () 鎵撳紑涓€涓枃浠惰繘琛岃闂紝鍙兘鍒涘缓瀹?瀵逛簬鍐欏叆妯″紡)銆?褰撳畬鎴愭枃浠讹紝瀹冨繀椤诲叧闂娇鐢╢ile.close()銆?鍙ユ硶 file.open(filename, mode) 鍙傛暟 鈥ilename鏂囦欢琚墦寮€ 鈥ode : 銆傗€渞"锛氳鍙栨ā寮?榛樿) 銆傗€渨鈥濓細鍐欏叆妯″紡 銆傗€渁鈥濓細杩藉姞妯″紡 銆傗€渞+鈥濓細鏇存柊妯″紡锛屾墍鏈変互鍓嶇殑鏁版嵁琚繚瀛?銆傗€渨+鈥滐細鏇存柊妯″紡锛屾墍鏈変互鍓嶇殑鏁版嵁琚摝闄?銆傗€渁+鈥濓細杩藉姞鏇存柊妯″紡锛屼繚鐣欎互鍓嶇殑鏁版嵁锛屽彧鍏佽鍦ㄦ枃浠舵湯灏惧啓鍏?杩斿洖 鏂囦欢瀵硅薄锛屽鏋滄枃浠舵墦寮€纭畾銆俷il濡傛灉鏂囦欢娌℃湁鎵撳紑锛屾垨鑰呬笉瀛樺湪(璇诲彇妯″紡)銆?绀轰緥(鍩烘湰妯″瀷) 鈥?open ^nit.Lua \ print the first Line. if file.open(,init.lua,J nrn) then print(file.readline()) file.close() end 绀轰緥(瀵硅薄妯″瀷) 鈥搊pen 'init.Lua \ print the first Line. fd = file.openC鈥檌nit.lua鈥? 鈥渞鈥? if fd then print(fd:readline()) fd:close(); fd = nil end 涔熷彲浠ョ湅鐪?鈥ile.close() 鈥ile.readline() file.remove () 浠庢枃浠剁郴缁熶腑鍒犻櫎鏂囦欢銆傝鏂囦欢涓€瀹氫笉鑳芥墦寮€銆?鍙ユ硶 file.remove(filename) 鍙傛暟 filename鏂囦欢鍒犻櫎 杩斿洖 nil 鈥搑emove 鈥渇oo. Lua鈥?from fiLe system. file.remove(鈥渇oo.lua鈥? 涔熷彲浠ョ湅鐪?file.open() file.rename () 閲嶅懡鍚嶄竴涓枃浠躲€傚鏋滀竴涓枃浠跺綋鍓嶆墦寮€锛屽畠灏嗚棣栧厛鍏抽棴銆?鍙ユ硶 file.rename(oldname, newname) 鍙傛暟 鈥ldname鏃ф枃浠跺悕绉?鈥ewname鏂扮殑鏂囦欢鍚嶇О 杩斿洖 true鎴愬姛锛宖alse閿欒銆?渚?鈥搑ename fiLe 鈥榯emp. Lua 鈥?to 鈥榠nit. Lua鈥? file.rename(鈥渢emp.lua"j"init.lua鈥? file.stat () 鑾峰彇琛ㄤ腑鏂囦欢鎴栫洰褰曠殑灞炴€с€傝〃鐨勫厓绱犳槸锛?鈥ize鏂囦欢澶у皬浠ュ瓧鑺備负鍗曚綅 鈥ame鏂囦欢鍚?鈥ime琛ㄤ笌鏃堕棿鎴充俊鎭€傚鏋滄椂闂存埑涓嶅彈鏀寔(鍦⊿P鍦S涓?,鍒欓粯璁や负1970-01-01 00:00:00o O year 掳 mon o day o hour o min 銆俿ec 鈥s_dir true濡傛灉item鏄竴涓洰褰曪紝鍒欐爣蹇楋紝鍚﹀垯false 鈥s_rdonly true濡傛灉椤圭洰鏄彧璇绘爣蹇楋紝鍚﹀垯鏍囧織false 鈥s_hidden true濡傛灉椤圭洰琚殣钘忥紝鍒欐爣蹇楋紝鍚﹀垯false 鈥s_sys true濡傛灉椤圭洰鏄郴缁熷垯鏍囧織锛屽惁鍒檉alse 鈥s_arch true濡傛灉椤圭洰褰掓。鍒欐爣蹇楋紝鍚﹀垯false 鍙ユ硶 file.stat(filename) 鍙傛暟 filename鏂囦欢鍚?杩斿洖 鍖呭惈鏂囦欢灞炴€х殑琛?渚?s = file.stat(鈥?SDO/myfile鈥? print(鈥渘ame: " 鈥⑩€?s.name) printf鈥檚ize:鈥濃€?s.size) t = s.time print(string.format(鈥?02d:%02d:%02d鈥? t.hour, t銉籱in, t.sec)) print(string.format(鈥?04d-%02d-%02d鈥? t.year, t.mon, t.day)) if s.is_dir then print(鈥渋s directory鈥? else print(鈥渋s file鈥? end if s.is_rdonly then print(鈥渋s read-only鈥? else print(鈥渋s writable鈥? end if s.is_hidden then print(鈥渋s hidden鈥? else print(鈥渋s not hidden鈥? end if s.is_sys then print(鈥渋s system鈥? else print(鈥渋s not system鈥? end if s.is_arch then print(鈥渋s archive鈥? else print(鈥渋s not archive鈥? end s = nil t = nil 鏂囦欢璁块棶鍔熻兘 璇ile妯″潡鎻愪緵浜嗗嚑涓姛鑳芥潵璁块棶鎵撳紑鏂囦欢鍚庣殑鍐呭file.oPen()銆傚畠浠彲浠ョ敤浣滃熀鏈ā 鍨嬫垨瀵硅薄妯″瀷鐨勪竴閮ㄥ垎锛?鍩烘湰妯″瀷 鍦ㄥ熀鏈ā鍨嬩腑锛屼竴娆℃渶澶氭墦寮€涓€涓枃浠躲€傛枃浠惰闂姛鑳介粯璁ゅ姝ゆ枃浠惰繘琛屾搷浣溿€傚鏋滄墦寮€鍙?涓€涓枃浠讹紝鍒欓渶瑕佷簨鍏堝叧闂厛鍓嶇殑榛樿鏂囦欢銆?鈥搊pen rinit.Lua \ print the first Line. if file.open(,init.lua,J 鈥渞鈥? then print(file.readline()) file.close() end 瀵硅薄妯″瀷 鏂囦欢鐢卞垱寤虹殑鏂囦欢瀵硅薄琛ㄧずfile.open()銆傛枃浠惰闂姛鑳藉彲鐢ㄤ綔姝ゅ璞$殑鏂规硶锛屽涓枃浠跺 璞″彲浠ュ叡瀛樸€?src = file.openC鈥檌nit.lua", 鈥渞鈥? if src then dest = file.openC鈥檆opy.lua", 鈥渨鈥? if dest then local line repeat line = src:read() if line then dest:write(line) end until line == nil dest:close(); dest = nil end src:close(); dest = nil end 娉ㄩ煶 寤鸿鍦ㄥ簲鐢ㄧ▼搴忎腑鍙娇鐢ㄤ竴涓ā鍨嬨€傚悓鏃朵娇鐢ㄨ繖涓や釜妯″瀷鍙兘浼氫骇鐢熶笉鍙鐭ョ殑琛屼负锛氫粠 鍩烘湰妯″瀷鍏抽棴榛樿鏂囦欢涔熷皢鍏抽棴鐩稿簲鐨勬枃浠跺璞°€傚鏋滄枃浠舵槸鐩稿悓鐨勬枃浠讹紝浠庡璞℃ā鍨嬪叧 闂枃浠朵篃灏嗗叧闂粯璁ゆ枃浠躲€?鉂舵敞鎰?SPIFFS涓婃墦寮€鏂囦欢鐨勬渶澶ф暟閲忔槸鍦ㄧ紪璇戞椂閫氳繃SPIFFS_MAX_OPEN_FILES in纭畾 鐨?user_config.h銆?file.close () , file.obj锛?close () 鍏抽棴鎵撳紑鐨勬枃浠讹紝濡傛灉鏈夌殑璇濄€?鍙ユ硶 file.close() fd:close() 鍙傛暟 娌℃湁 杩斿洖 nil 涔熷彲浠ョ湅鐪?file.open() file.flush () , file.obj锛?flush () 鍒锋柊鍒版枃浠剁郴缁熺殑浠讳綍鎸傝捣鍐欏叆锛岀‘淇濆湪閲嶆柊鍚姩鏃朵笉浼氫涪澶辨暟鎹€備娇 鐢╢ile.close() / fd:close()鍏抽棴鎵撳紑鐨勬枃浠朵篃浼氭墽琛屼竴涓殣寮忓埛鏂般€?鍙ユ硶 file.flush() fd:flush() 鍙傛暟 娌℃湁 杩斿洖 nil 绀轰緥(鍩烘湰妯″瀷) 鈥?open Lua 1 in 1a+ 1 mode if file.open(鈥渋nit.lua鈥? na+") then 鈥?write rfoo bar鈥?to the end of the fiLe file.write(鈥榝oo bar鈥? file.flush() 鈥?write 鈥榖az鈥?too file.write(鈥榖az鈥? file.close() end 涔熷彲浠ョ湅鐪?file.close() / file.obj:close() file.read 锛堬級 , file.obj锛?read 锛堬級 浠庢墦寮€鐨勬枃浠朵腑璇诲彇鍐呭銆?銆傛敞鎰?璇ュ嚱鏁版殏鏃跺湪鍫嗕笂鍒嗛厤2* 锛堣姹傜殑瀛楄妭鏁帮級鏉ョ紦鍐插拰澶勭悊璇诲彇鐨勬暟鎹€傞粯璁ゅ潡澶у皬 锛團ILE_READ_CHUNK 锛夋槸1024瀛楄妭锛岃璁や负鏄畨鍏ㄧ殑銆傛帹鍔ㄨ繖涓?鍊嶆垨鏇村鍙兘浼氬鑷村爢 婧㈠嚭鍙栨埧浜庡簲瑙掔▼搴忋€備负鍙傛暟閫夋嫨涓€涓€兼椂鑰冭檻杩欎竴鐐筺_or_char銆?鍙ユ硶 file.read([n_or_char]) fd:read([n_or_char]) 鍙傛暟 鈥?n_or_char : 銆傚鏋滄病鏈変紶鍏ワ紝鍒欒鍙朏ILE_READ_CHUNK瀛楄妭鎴栨暣涓枃浠讹紙浠ヨ緝灏忚€呬负鍑嗭級銆?鈻″鏋滀紶閫掍竴涓暟瀛梟 ,鐒跺悗璇诲彇n瀛楄妭鎴栨暣涓枃浠讹紙浠ヨ緝灏忚€呬负鍑嗭級銆?鈻″鏋滀紶閫掍竴涓寘鍚崟涓瓧绗︾殑瀛楃涓瞔har ,鍒欒鍙栫洿鍒癱har鍑虹幇鍦ㄦ枃浠剁殑涓嬩竴 涓狥ILE_READ_CHUNK瀛楄妭宸茬粡琚鍙栵紝鎴栬€呭埌杈綞OF銆?杩斿洖 鏂囦欢鍐呭浣滀负瀛楃涓诧紝鎴朎IL鏃朵负闆?绀轰緥(鍩烘湰妯″瀷) 鈥損rint the first Line of rinit. Lua if file.open(鈥渋nit.lua鈥? 鈥渞鈥? then print(file.read(鈥榎n鈥?) file.close() end 绀轰緥锛堝璞℃ā鍨嬶級 鈥損rint the first 5 bytes of 鈥榠nit. Lua1 fd = file.openC鈥檌nit.lua", nrn) if fd then print(fd:read(5)) fd:close(); fd = nil end 涔熷彲浠ョ湅鐪?鈥ile.open() 鈥ile.readline() / file.obj:readline() file.readline () , file.obj锛?readline () 浠庢墦寮€鐨勬枃浠朵腑璇诲彇涓嬩竴琛屻€傝瀹氫箟涓洪浂涓垨澶氫釜浠OL C\n鈥?瀛楄妭缁撳熬鐨勫瓧鑺傘€傚鏋滀笅涓€ 琛屾瘮1024闀匡紝杩欎釜鍑芥暟鍙繑鍥炲墠1024涓瓧鑺傘€?鍙ユ硶 file.readline() fd:readline() 鍙傛暟 娌℃湁 杩斿洖 鎸夊瓧绗︿覆閫愪釜鏂囦欢鍐呭锛屽寘鎷珽OL C\n鈥? 0 nil EOF鏃惰繑鍥炪€?绀轰緥(鍩烘湰妯″瀷) 鈥損rint the first Line of rinit. Lua鈥?if file.open(鈥渋nit.lua,\ 鈥渞鈥? then print(file.readline()) file.close() end 涔熷彲浠ョ湅鐪?鈥ile.open() 鈥ile.close() / file.obj:close() 鈥ile.read() / file.obj:read() file.seek () , file.obj锛?seek () 璁剧疆骞惰幏鍙栨枃浠剁殑浣嶇疆锛屼粠鏂囦欢鐨勫紑澶寸畻璧凤紝鍒扮敱銆俧fset鎸囧畾鐨勪綅缃姞涓婄敱whence瀛楃涓叉寚瀹?鐨勫熀鏁般€?鍙ユ硶 file.seek([whence [, offset]]) fd:seek([whence [, offset]]) 鍙傛暟 鈥hence 銆傗€渟et鈥濓細 base鏄綅缃? (鏂囦欢鐨勫紑澶? 銆傗€渃ur鈥濓細 base鏄綋鍓嶄綅缃?榛樿鍊? 銆傗€滅粨鏉熲€濓細鍩哄湴鏄枃浠剁殑缁撳熬 鈥ffset榛樿涓? 濡傛灉娌℃湁缁欏嚭鍙傛暟锛屽嚱鏁板彧鏄繑鍥炲綋鍓嶇殑鏂囦欢鍋忕Щ閲忋€?杩斿洖 缁撴灉鏂囦欢鐨勪綅缃紝鎴杗il閿欒 绀轰緥(鍩烘湰妯″瀷) if file.open(鈥渋nit.lua鈥? 鈥渞鈥? then --skip the first 5 bytes of the fiLe fileeSeekC鈥檚et鈥? 5) print(file.readline()) file.close() end 涔熷彲浠ョ湅鐪?file.open() file.wnte () , file.obj锛?write () 鍐欎竴涓瓧绗︿覆鍒版墦寮€鐨勬枃浠躲€?鍙ユ硶 file.write(string) fd:write(string) 鍙傛暟 string瑕佸啓鍏ユ枃浠剁殑鍐呭 杩斿洖 true濡傛灉鍐欏叆娌℃湁闂锛岄偅灏眓il閿欒浜?绀轰緥(鍩烘湰妯″瀷) 鈥?open ^nit.Lua 1 in 1a+ 1 mode if file.open(鈥渋nit.lua鈥? na+") then 鈥?write rfoo bar鈥?to the end of the fiLe file.write(鈥榝oo bar鈥? file, close銆?end 绀轰緥(瀵硅薄妯″瀷) 鈥搊pen linit.Lua 1 in 'a+ 1 mode fd = file.open("init.lua\ 鈥渁+鈥? if fd then 鈥?write 鈥榝oo bar1 to the end of the fiLe fd:write(鈥榝oo bar鈥? fd:close() end 涔熷彲浠ョ湅鐪?鈥ile.open() 鈥ile.writeline() / file.obj:writeline() file.wnteline () , file.obj锛?writeline () 鍐欎竴涓瓧绗︿覆鍒版墦寮€鐨勬枃浠跺苟鍦ㄦ湯灏鹃檮鍔犫€橽n鈥檕 鍙ユ硶 file.writeline(string) fd:writeline(string) 鍙傛暟 string瑕佸啓鍏ユ枃浠剁殑鍐呭 杩斿洖 true濡傛灉鍐欏緱濂斤紝nil閿欒 绀轰緥(鍩烘湰妯″瀷) 鈥搊pen rinit.Lua1 in 鈥榓+鈥?mode if file.open(,init.lua,J na+n) then 鈥?write 'foo bar1 to the end of the fiLe file.writeline(鈥榝oo bar鈥? file.close() end 涔熷彲浠ョ湅鐪?鈥ile.open() 鈥ile.readline() / file.obj:readline() 鏂囨。銆嬭嫳璇€濇ā鍧椔籫dbstub gdbstub 妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016骞?9鏈?18 H 鑿插埄鏅€㈡牸鑾辨柉椤?鑿插埄鏅€㈡牸鑾辨柉椤?gdbstub.c

褰撲笌涓?x106鏋勫缓鐨刧db鐗堟湰涓€璧蜂娇鐢ㄦ椂锛岃妯″潡鎻愪緵鍥轰欢鐨勫熀鏈簮浠g爜璋冭瘯銆傚鏋滀綘鍚敤杩?涓ā鍧楋紝閭d箞鑷村懡鐨勯敊璇?濡傛棤鏁堢殑鍐呭瓨璇诲彇)灏嗛櫡Agdbstubo杩欎娇鐢║ART0涓嶨DB杩涜閫?淇°€傚鏋滃湪UART0杩炴帴鍒扮粓绔?鎴栬€呭儚esplorer杩欐牱鐨処DE)鏃跺彂鐢熻繖绉嶆儏鍐碉紝閭d箞浣犱細鐪嬪埌 涓€涓瓧绗︿覆寮€濮嬶紝鐒跺悗鍐嶇湅$t鍑犱釜瀛楃銆傝繖鏄櫡闃卞彂鐢熺殑淇″彿锛屾帶鍒舵潈搴旇浼犻€掔粰gdb銆?gdb鐒跺悗鍙互寮€濮嬭繛鎺ュ埌NodeMCU骞冲彴銆傚鏋滆繖鏄€氳繃涓插彛杩炴帴鍒颁富鏈虹郴缁燂紝閭d箞浠ヤ笅 (鎴栧叧闂殑鍙樹綋)搴旇宸ヤ綔锛?gdb bin/firmwarefile.bin target remote /dev/ttyUSB0 鍦ㄨ繖涓€鐐逛笂锛屼綘鍙互寰樺緤锛岀湅鐪嬪彂鐢熶簡浠€涔堬紝浣嗕綘涓嶈兘缁х画鎵ц銆?涓轰簡杩涜浜や簰寮忚皟璇曪紝璇穏dbstub.brk()鍦ㄦ偍鐨凩ua浠g爜涓坊鍔犱竴涓皟鐢ㄣ€傝繖灏嗚Е鍙戜竴涓?break鎸囦护锛屽苟灏嗛櫡鍏db濡備笂銆備絾鏄紝鏂偣鎸囦护鏀寔continuation,鍥犳鎮ㄥ彲浠ュ崟姝ヨ缃柇鐐?绛夈€傝娉ㄦ剰锛岀敱EspressifME缃殑1x106澶勭悊鍣ㄥ彧鏀寔涓€涓‖浠舵柇鐐广€傝繖鎰忓懗鐫€鎮ㄥ彧鑳藉湪Flash浠?鐮佷腑鏀剧疆涓€涓柇鐐广€備綘鍙互灏藉彲鑳藉湴鍗曟鎵ц銆?gdbstub.brk () 閫氳繃鎵цbreak 0,0鎸囦护鏉ヨ繘鍏db銆?gdbstub.gdboutput () 鎺у埗绯荤粺杈撳嚭鏄惁灏佽鍦╣db杩滅▼璋冭瘯鍗忚涓€?/p>

gdbstub.brk () 閫氳繃鎵ц涓€鏉reak 0,0鎸囦护杩涘叆gdb銆?鍙ユ硶 gdbstub.brk() gdbstub.gdboutput () 鎺у埗绯荤粺杈撳嚭鏄惁灏佽鍦╣db杩滅▼璋冭瘯鍗忚涓€備簨瀹炶瘉鏄庯紝杩欏苟涓嶅儚浣犲笇鏈涚殑閭f牱鏈夌敤-涓昏 鏄洜涓轰綘鏃犳硶灏嗚緭鍏ュ彂閫佸埌NodeMCU鏉裤€傚彟澶栵紝鍥犱负鍦ㄨ繍琛実db骞惰繛鎺ュ埌NodeMCU涔嬪悗锛?鎮ㄧ‘瀹炲簲璇ヨ皟鐢ㄦ璋冪敤銆備笅闈㈢殑渚嬪瓙棣栧厛杩涜涓柇锛岀劧鍚庡垏鎹㈠埌閲嶅畾鍚戣緭鍑恒€傝繖宸ヤ綔(浣嗕綘 鏃犳硶鍙戦€佹洿澶氱殑鎺у埗鍙拌緭鍏?銆?gdbstub.gdboutput(enable) 鍙傛暟 enable濡傛灉涓簍rue,鍒欒緭鍑哄皢琚皝瑁呭湪gdb杩滅▼璋冭瘯鍗忚涓€傚鏋滀负false,鍒欑洿鎺ュ彂閫佸埌 UARTo function entergdb() gdbstub.brk() gdbstub.gdboutput(1) print(鈥淎ctive鈥? end entergdb() 绗旇 涓€鏃﹀皢gdb杩炴帴鍒癗odeMCU,鍒橬odeMCU鐨勪换浣曞叾浠栬緭鍑哄皢琚涪寮冿紙鍥犱负瀹冧笉绗﹀悎gdb杩滅▼ 璋冭瘯鍗忚锛夈€傝繖鍙兘锛堟垨鍙兘涓嶏級鏄竴涓棶棰樸€傚鏋滀綘鎯冲湪gdb涓嬭繍琛屽苟涓旂湅鍒癗odeMCU鐨?杈撳嚭锛岄偅涔堣皟鐢╣dbstub.gdboutput锛坙锛夌劧鍚庤緭鍑哄皢琚寘瑁呭湪gdb鍗忚涓苟鏄剧ず鍦╣db鎺у埗鍙?涓娿€備綘涓嶆兂杩欐牱鍋氾紝鐩村埌gdb杩炴帴锛屽洜涓烘瘡涓暟鎹寘闇€瑕佷竴涓槑纭殑纭鎵嶈兘缁х画銆?GPIO妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 鎯呰妭涓瓧 Zeroday Zeroday gpio.c 璇ユā鍧楁彁渚涘GPIO 锛堥€氱敤杈撳叆/杈撳嚭锛夊瓙绯荤粺鐨勮闂€?/p>

鎵€鏈夎闂潎鍩轰簬NodeMCU寮€鍙戝伐鍏峰寘涓婄殑I/O绱㈠紩缂栧彿锛岃€屼笉鏄唴閮℅PIO寮曡剼銆備緥濡傦紝寮€ 鍙戝浠朵笂鐨凞O寮曡剼琚槧灏勫埌鍐呴儴GPI銆傚紩鑴?6銆?濡傛灉涓嶄娇鐢∟odeMCU寮€鍙戝伐鍏峰寘锛岃鍙傝€冧笅闈㈢殑GPIO寮曡剼鍥炬潵鑾峰彇indexgpio鏄犲皠銆?IO绱㈠紩 ESP8266寮曡剼 1銆傜储寮?ESP8266寮曡剼 0[*] GPIO16 7 GPIO13 1 GPIO5 8 GPIO15 2 GPIO4 9 GPIO3 3 GPIOO 10 GPIO1 4 GPIO2 11 GPIO9 浜?GPIO14 12 GPIO10 6 GPIO12

DO (GPIO16)鍙兘鐢ㄤ綔gpio璇?鍐欍€備笉鏀寔0pen-drain/interrupt/pwm/i2c/ow0 gpio.mode () 灏嗗紩鑴氬垵濮嬪寲涓篏PIO妯″紡锛岃缃紩鑴氱殑杈撳叆鐎氬嚭鏂瑰悜浠ュ強鍙€夌殑鍐呴儴寮变笂鎷夈€?gpio.read () 璇诲彇鏁板瓧GPIO寮曡剼鍊笺€?gpio.serout () 鍩轰簬涓€绯诲垪寤惰繜鏃堕棿锛堜互|JS涓哄崟浣嶏級搴忓垪鍖栬緭鍑恒€?gpio.trig () 寤虹珛鎴栨竻闄や竴涓洖璋冨嚱鏁板湪涓€涓紩鑴氱殑涓柇涓婅繍琛屻€?gpio.write () 璁剧疆鏁板瓧GPI銆傚紩鑴氬€笺€?/p>

gpio.mode 锛堬級 灏嗗紩鑴氬垵濮嬪寲涓篏PIO妯″紡锛岃缃紩鑴氱殑杈撳叆/杈撳嚭鏂瑰悜浠ュ強鍙€夌殑鍐呴儴寮变笂鎷夈€?gpio.modeCpin, mode [, pullup]) 鍙傛暟 -pin寮曡剼鏉ラ厤缃甀O绱㈠紩 -mode gpio.OUTPUT, gpio.OPENDRAIN, gpio.INPUT鎴杇pio.INT (涓柇妯″紡) , pullup gpio.PULLUP浣胯兘寮变笂鎷夌數闃?榛樿鏄痝pio.FLOAT 杩斿洖 nil 渚?gpio.mode(0, gpio.OUTPUT) 涔熷彲浠ョ湅鐪?鈥pio.read() 鈥pio.write() gpio.read () 璇诲彇鏁板瓧GPIO寮曡剼鍊笺€?鍙ユ硶 gpio.read(pin) 鍙傛暟 pin寮曡剼璇诲彇锛孖銆傜储寮?杩斿洖 涓€涓暟瀛楋紝0=浣庯紝1=楂?渚?鈥搑ead vaLue of gpio 0. gpio.read(0) 涔熷彲浠ョ湅鐪?gpio.mode() gpio.serout () 鍩轰簬涓€绯诲垪寤惰繜鏃堕棿(浠JS涓哄崟浣?搴忓垪鍖栬緭鍑恒€傚湪姣忔寤惰繜涔嬪悗锛屽紩鑴氳鍒囨崲銆傚湪鏈€鍚庝竴 涓懆鏈熷拰鏈€鍚庝竴涓欢杩熶箣鍚庯紝寮曡剼涓嶄細琚垏鎹€?璇ュ姛鑳芥湁鐗╃宸ヤ綔妯″紡锛氬唻姝?瀵瑰崄灏忓崄50寰潽鏃冲垎杈ㄧ巼锛岄檺鍒朵负鏈€澶с€傛€讳綋鎸佺画鏃堕棿锛屽紓 姝?鍚屾鎿嶄綔锛岀矑搴﹁緝灏忎絾鎸佺画鏃堕棿鍑犱箮涓嶅彈闄愬埗銆?鏄惁閫夋嫨寮傛妯″紡鐢眂allback鍙傛暟鐨勫瓨鍦ㄦ潵瀹氫箟銆傚鏋滃瓨鍦ㄥ苟涓旀槸鍑芥暟绫诲瀷鐨勶紝鍒欒鍑芥暟 鍙樹负寮傛锛屽苟涓斿湪搴忓垪缁撴潫鏃惰皟鐢ㄥ洖璋冨嚱鏁般€傚鏋滃弬鏁版槸鏁板瓧锛屽垯璇ュ嚱鏁颁粛鐒舵槸寮傛鐨勶紝浣?鏄畬鎴愬悗涓嶄細璋冪敤鍥炶皟銆?瀵逛簬寮傛鐗堟湰锛屾渶灏忓欢杩熸椂闂翠笉搴斿皬浜?0|JS,鏈€澶у欢杩熸椂闂村簲涓篛x7fffff|js 锛堛€?.3绉掞級鈻″湪杩?绉嶆ā寮忎笅锛屽嚱鏁颁笉浼氶樆濉炲爢鏍堬紝骞跺湪杈撳嚭搴忓垪瀹屾垚涔嬪墠绔嬪嵆杩斿洖銆傜‖浠跺畾鏃跺櫒FRC1_SOURCE 妯″紡鐢ㄤ簬鏀瑰彉鐘舵€併€傜敱浜庡彧鏈変竴涓‖浠跺畾鏃跺櫒锛屾墍浠ュ彲浠ュ悓鏃朵娇鐢ㄥ摢浜涙ā鍧椼€傚鏋滃鏃跺櫒宸?缁忓湪浣跨敤涓紝灏嗕細寮曞彂閿欒銆?璇锋敞鎰忥紝鍚屾鍙橀噺锛坣o鎴杗il callback鍙傛暟锛夊嚱鏁颁細闃诲鍫嗘爤锛屽洜姝ゅ畠鐨勪换浣曚娇鐢ㄩ兘蹇呴』閬?瀹圫DK鍑嗗垯锛堣繖閲屼篃瑙i噴锛夈€備笉杩欐牱鍋氬彲鑳戒細瀵艰嚧WiFi闂鎴栧交搴曞穿婧?閲嶆柊鍚姩銆傜畝鑰岃█ 涔嬶紝杩欐剰鍛崇潃鎵€鏈夊欢杩熸椂闂寸殑鎬诲拰涔樹互鍛ㄦ湡鏁颁笉搴旇秴杩?5姣銆?鍙ユ硶 gpio.serout锛坧in., start_level, delay_times [, cycle_num[, callback]]锛?鍙傛暟 -pin寮曡剼浣跨敤锛孖O绱㈠紩 鈥tart_level 绾у埆寮€濮嬶紝鏃犺鏄?gpio.HIGH 鎴?gpio. LOW 鈥elay_times gpio寮曡剼鐨勬瘡涓紑鍏充箣闂寸殑寤惰繜鏃堕棿锛堜互鍗㏒涓哄崟浣嶏級掳 鈥ycle.num鍦ㄥ簭鍒椾腑杩愯鐨勫彲閫夋鏁般€傦紙榛樿鏄?锛?鈥allback 涓€涓彲閫夌殑鍥炶皟鍑芥暟鎴栨暟瀛楋紝濡傛灉瀛樺湪鐨勮瘽锛屽嚱鏁扮珛鍗宠繑鍥炲苟寮傛銆?杩斿洖 nil gpio.mode(1,gpio.OUTPUT,gpio.PULLUP) gpio.serout(1jgpio.HIGH,{30,30,60,60,30,30}) 鈥?seriaL one byte, bl0110010 gpio.serout(1,gpio.HIGH,(30,70),8) 鈥?seriaL 30% pwm 10kj Lasts 8 eye Les gpio.serout(lj gpio.HIGH,(3,7}^ 8) 鈥?seriaL 30% pwm 100kj Lasts 8 eye Les gpio.sepout(l,gpio.HIGH,{0,0},8) 鈥?seriaL 50% pwm as fast as possibLej Lasts 8 gpio. serout(1 jgpio. LOW^ (20,10,10,20,10,10,10,100)) 鈥?siin uart one byte 0x5A at i gpio.serout(lj gpio.HIGH,(8?18},8) 鈥?seriaL 30% pwm 38k, Lasts 8 eye Les gpio.serout(1,gpio.HIGH,{5000,995000),100, function() print(鈥漝one鈥? end) 鈥?asyn^ gpio.serout(1jgpio.HIGH,{5000,995000),100, 1) 鈥?asynchronous 100 fLoshes 5 ms Li gpio.trig 锛堬級 寤虹珛鎴栨竻闄や竴涓洖璋冨嚱鏁板湪涓€涓紩鑴氱殑涓柇涓婅繍琛屻€?濡傛灉GPIO_lNTERRUPT_ENABLE鍦ㄧ紪璇戞椂鏈畾涔夛紝鍒欐鍑芥暟涓嶅彲鐢ㄣ€?gpio.trig(pin, [type [, callbackfunction]]) 鈥in 1-12,寮曡剼瑙﹀彂锛孖O绱㈠紩銆傝娉ㄦ剰锛屽紩鑴?涓嶆敮鎸佷腑鏂€?鈥ype 鈥渦p鈥? 鈥渄own鈥濓紝鈥渂oth鈥? Tow鈥濓紝鈥渉igh鈥?鍒嗗埆琛ㄧず涓婂崌娌匡紝涓嬮檷娌匡紝鍙岃竟娌匡紝浣庣數 骞冲拰楂樼數骞宠Е鍙戞ā寮忋€傚鏋滅被鍨嬩负鈥渘one鈥濇垨鐪佺暐锛屽垯鍥炶皟鍑芥暟琚Щ闄わ紝涓柇琚鐢ㄣ€?鈥al lback_f unction (levels when)瑙﹀彂鍙戠敓鏃剁殑鍥炶皟鍑芥暟銆備腑鏂鐨勬寚瀹氬紩鑴氱殑鐢靛钩浣?涓虹涓€涓弬鏁颁紶閫掔粰鍥炶皟鍑芥暟銆備簨浠剁殑鏃堕棿鎴充綔涓虹浜屼釜鍙傛暟浼犻€掋€傝繖鏄互寰涓哄崟浣嶏紝 涓庡熀鏁扮浉鍚宼mr.nowO銆傝繖涓椂闂存埑鍦ㄤ腑鏂骇鎶撳彇锛屾瘮鍦ㄥ洖璋冨嚱鏁颁腑鑾峰緱鏃堕棿鏇村姞涓€ 鑷淬€傚鏋滆鍑芥暟琚渷鐣ワ紝鍒欏墠闈㈢殑鍥炶皟鍑芥暟灏嗚浣跨敤銆?杩斿洖 nil 渚?do 鈥搖se pin 1 as the input puLse width counter local pin, pulselj du, now, trig = 1, 0, 0, tmr.now3 gpio.trig gpio.mode(pinjgpio.INT) local function pinlcb(level, pulse2) print( level, pulse2 - pulsel ) pulsel = pulse2 trigCpin, level == gpio.HIGH and 鈥渄own鈥?or 鈥渦p鈥? end trig(pin, "down"pinlcb) end 涔熷彲浠ョ湅鐪?gpio.mode() gpio.write () 璁剧疆鏁板瓧GPIO寮曡剼鍊笺€?鍙ユ硶 gpio.write(pin, level) 鍙傛暟 -pin寮曡剼鍐欏叆锛孖銆傜储寮?鈥evel gpio.HIGH 瑕佷箞 gpio. LOW 杩斿洖 nil 鈥搒et pin index 1 to GPIO mode, and set the pin to high. pin = l gpio.mode(pin, gpio.OUTPUT) gpio.write(pin4 gpio.HIGH) 涔熷彲浠ョ湅鐪?銉籫pio.mode() 鈥pio.read() HDC1080妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2017骞?鏈?鏃?Metin KOC Metin KOC hdc!080.c

璇ユā鍧楀彲浠ヨ闂甫鏈夋俯搴︿紶鎰熷櫒鐨凥DC1080浣庡姛鑰楋紝楂樼簿搴︽暟瀛楁箍搴︿紶鎰熷櫒銆?hdcl080.read () 瀵逛紶鎰熷櫒杩涜閲嗘牱锛岀劧鍚庤繑鍥炴俯搴﹀拰婀垮害鍊笺€?hdcl080.setup () 鍒濆鍖栨ā鍧椼€?hdcl080.init (SDA, SCL) 鍒濆鍖栨ā鍧楀苟璁剧疆寮曡剼閰嶇疆銆?/p>

hdcl080.read () 瀵逛紶鎰熷櫒杩涜閲囨牱锛岀劧鍚庤繑鍥炴俯搴﹀拰婀垮害鍊笺€?鍙ユ硶 hdcl080.read() 杩斿洖 娓╁害鏁版嵁(鎽勬皬搴?鍜屾箍搴︽暟鎹?鐧惧垎姣?(0-100)(鏁存暟/娴偣鏁? 渚?local sdaj scl = 1, 2 i2c.setup(0j sda, scl, i2c.SL0W) 鈥?caLL i2c.setup() onLy once hdcl080.setup() local temperature^humidity = hdcl080.read() print(temperature) print(humidity) hdcl080.setup () 鍒濆鍖栨ā鍧椼€?鍙ユ硶 hdcl080.setup() 鍙傛暟 -娌℃湁 杩斿洖 nil hdcl080.init (SDA, SCL) 鍒濆鍖栨ā鍧楀苟璁剧疆寮曡剼閰嶇疆銆?銆傛敞鎰?姝ゅ姛鑳藉凡寮冪敤锛屽皢鍦ㄥ嵆灏嗗彂甯冪殑鐗堟湰涓垹闄ゃ€俬dcl080.setup()鏀逛负浣跨敤銆?鍙ユ硶 hdcl080.init(sda, scl) 鍙傛暟 銉籹da鏁版嵁寮曡剼 鈥?scl鏃堕挓寮曡剼 杩斿洖 nil HMC5883L 妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016 骞?鏈?9 鏃?Jason Schmidlapp Jason Schmidl 鍙?p hmc5883l.c 璇ユā鍧楁彁渚涘HMC5883L涓夎酱鏁板瓧缃楃洏鐨勮闂€?hmc5883Lread () 閲嗘牱浼犳劅鍣ㄥ苟杩斿洖X, Y鍜孼鏁版嵁銆?hmc5883l.init () 鍒濆鍖栨ā鍧楀苟璁剧疆寮曡剼閰嶇疆銆?hmc5883l.setup () 鍒濆鍖栨ā鍧椼€?/p>

hmc58831.read () 閲嗘牱浼犳劅鍣ㄥ苟杩斿洖X, Y鍜孼鏁版嵁銆?鍙ユ硶 hmc58831.read() 杩斿洖 x, y, z娴嬮噺(鏁存暟)娓╁害涔樹互10 (鏁存暟) 渚?local sdaj scl = 1, 2 i2c.setup(0j sda, scl, i2c.SL0W) 鈥?caLL i2c.setup() onLy once hmc58831.setup() local x>y,z = hmc58831.read() print(string.format("x = %d, y = %d, z = %d鈥? x, y, z)) hmc58831.init () 鍒濆鍖栨ā鍧楀苟璁剧疆寮曡剼閰嶇疆銆?銆傛敞鎰?姝ゅ姛鑳藉凡寮冪敤锛屽皢鍦ㄥ嵆灏嗗彂甯冪殑鐗堟湰涓垹闄ゃ€俬mc58831.setup()鏀逛负浣跨敤銆?hmc58831.initfsda銉?scl) 銉籹da鏁版嵁寮曡剼 鈥?scl鏃堕挓寮曡剼 杩斿洖 nil hmc58831.setup () 鍒濆鍖栨ā鍧椼€?鍙ユ硶 hmc58831. set upQ 鍙傛暟 娌℃湁 杩斿洖 nil HTTP妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016骞?1 鏈?15 H esphttpclient /Vowstar Vowstar http.c

鍩烘湰鐨凥TTP瀹㈡埛绔ā鍧楋紝瀹冩彁渚涗簡涓€涓€氳繃HTTP (S)杩涜GET/POST/PUT/DELETE鐨勬帴 鍙o紝浠ュ強鑷畾涔夌殑璇锋眰銆傜敱浜嶦SP8266鐨勫唴瀛橀檺鍒讹紝鏀寔鐨勯〉闈?涓讳綋澶у皬鍙楀彲鐢ㄥ唴瀛樼殑闄?鍒躲€傝瘯鍥炬帴鏀舵瘮杩欐洿澶х殑椤甸潰灏嗗け璐ャ€傚鏋滈渶瑕佹洿澶х殑椤甸潰/涓讳綋澶у皬锛岃鑰?铏憂et. createConnection()鍦ㄦ暟鎹腑浣跨敤鍜屼紶杈撱€?鉂舵敞鎰?瀹冩槸涓嶆槸鑳藉鎵ц浣跨敤姝ゆā鍧楀苟鍙戠殑HTTP璇锋眰銆?姣忎釜璇锋眰鏂规硶閮芥湁涓€涓洖璋冿紝褰撲粠鏈嶅姟鍣ㄦ帴鏀跺埌鍝嶅簲鏃惰皟鐢ㄨ鍥炶皟銆傜涓€涓弬鏁版槸鐘舵€佺爜锛?鍙互鏄父瑙勭殑HTTP鐘舵€佺爜锛屼篃鍙互鏄?1琛ㄧずDNS,杩炴帴鎴栧唴瀛樹笉瓒虫晠闅滐紝鎴栬秴鏃?鐩墠涓?0 绉?銆?瀵逛簬姣忎釜鎿嶄綔锛岄兘鍙互鎻愪緵鑷畾涔塇TTP澶存垨瑕嗙洊鏍囧噯澶淬€傞粯璁ゆ儏鍐典笅锛孒ost鏍囬浠嶶RL鎺?瀵糢ser-Agent鏄疎SP8266銆備絾鏄紝璇锋敞鎰忥紝Connection鏍囬涓嶈兘琚鐩栵紒瀹冩€绘槸璁剧疆 涓?close o HTTP閲嶅畾鍚?HTTP鐘舵€?00-308)鑷姩璺熼殢鍒?0鐨勯檺鍒讹紝浠ラ伩鍏嶅彲鎬曠殑閲嶅畾鍚戝惊鐜€?褰撹皟鐢ㄥ洖璋冩椂锛屼細浼犻€扝TTP鐘舵€佺爜锛屾敹鍒扮殑姝f枃鍜屽搷搴斿ご鐨勮〃鏍笺€傛墍鏈夌殑鏍囬鍚嶇О宸茬粡琚檷 浣庡埌瀹规槗璁块棶銆傚鏋滄湁澶氫釜鐩稿悓鍚嶇О鐨勬爣棰橈紝鍒欏彧杩斿洖鏈€鍚庝竴涓爣棰樸€?SSL/TLS 鏀寔 娉ㄦ剰缃戠粶妯″潡涓褰曠殑绾︽潫鏉′欢銆?http.delete () 鎵цHTTP DELETE璇锋眰銆?http.get () 鎵цHTTP GET璇锋眰銆?http.post () 鎵цHTTP POST璇锋眰銆?http.put () 鎵цHTTP PUT璇锋眰銆?http.request () 涓轰换浣旽TTP鏂规硶鎵ц鑷畾涔塇TTP璇锋眰銆?/p>

http.delete () 鎵цHTTP DELETE!#姹傘€傝娉ㄦ剰锛屽苟鍙戣姹備笉鍙楁敮鎸併€?鍙ユ硶 http.delete(urlj headers^ body, callback) 鍙傛暟 -url璇RL鎶撳彇锛屽寘鎷琱ttp://鎴杊ttps://鍓嶇紑 鈥eaders鍙€夌殑闄勫姞澶存枃浠讹紝鍖呮嫭\r\n锛涗篃璁竛il -body韬悗寮犺创;蹇呴』宸茬粡浠ラ€傚綋鐨勬牸寮忕紪鐮侊紝浣嗗彲鑳芥槸绌虹殑 -callback褰撴敹鍒板搷搴旀垨鍙戠敓閿欒鏃惰璋冪敤鐨勫洖璋冨嚱鏁?瀹冭璋冪敤鐨勫弬 鏁?status_code , body 鍜?headers銆傚鏋滃彂鐢熼敊璇紝status_code 鍒欒缃负-1銆?杩斿洖 nil 渚?http.delete(鈥榟ttp://httpbin.org/delete鈥? 鈻營 it 3 鈻?I it 鈻燜unction(code, data) if (code < 0) then print(鈥淗TTP request failed鈥? else print(codej data) end end) http.get () 鎵цHTTPGETiW姹傘€傝娉ㄦ剰锛屽苟鍙戣姹備笉鍙楁敮鎸併€?鍙ユ硶 http.get(urlj headers, callback) 鍙傛暟 -url璇RL鎶撳彇锛屽寘鎷琱ttp://鎴杊ttps://鍓嶇紑 鈥eaders鍙€夌殑闄勫姞澶存枃浠讹紝鍖呮嫭\r\n;涔熻nil 銉籧allback褰撴敹鍒板搷搴旀垨鍙戠敓閿欒鏃惰璋冪敤鐨勫洖璋冨嚱鏁?瀹冭璋冪敤鐨勫弬 鏁?status_code , body 鍜?headers 銆傚鏋滃彂鐢熼敊璇紝status_code 鍒欒缃负-1銆?杩斿洖 nil http.get(鈥渉ttp://httpbin.org/ip"j nil, function(codej data) if (code < 0) then print ('鈥淗TTP request failed鈥? else print(codej data) end end) http.post () 鎵цHTTP POST璇锋眰銆傝娉ㄦ剰锛屽苟鍙戣姹備笉鍙楁敮鎸併€?鍙ユ硶 http.post(urlj headers, body, callback) 鍙傛暟 銉籾rl璇RL鎶撳彇锛屽寘鎷琱ttp://鎴杊ttps://鍓嶇紑 鈥?headers鍙€夌殑闄勫姞澶存枃浠讹紝鍖呮嫭\r\n锛涗篃璁竛il -body韬悗寮犺创;蹇呴』宸茬粡浠ラ€傚綋鐨勬牸寮忕紪鐮侊紝浣嗗彲鑳芥槸绌虹殑 -callback褰撴敹鍒板搷搴旀垨鍙戠敓閿欒鏃惰璋冪敤鐨勫洖璋冨嚱鏁?瀹冭璋冪敤鐨勫弬 鏁?status_code , body 鍜?headers 銆傚鏋滃彂鐢熼敊璇紝status_code 鍒欒缃负-1銆?杩斿洖 nil http.post(鈥榟ttp://httpbin.org/post鈥? 鈥楥ontent-Type: application/json\r\n鈥? 锛寋鈥漢mo鈥濓細nwop Id}, function(code, data) if (code < 0) then print(鈥淗TTP request failed鈥? else print(codej data) end end) http.put () 鎵цHTTP PUT璇锋眰銆傝娉ㄦ剰锛屽苟鍙戣姹備笉鍙楁敮鎸併€?鍙ユ硶 http.put(urlj headers, body, callback) 鍙傛暟 -url璇RL鎶撳彇锛屽寘鎷琱ttp://鎴杊ttps://鍓嶇紑 鈥?headers鍙€夌殑闄勫姞澶存枃浠讹紝鍖呮嫭\r\n;涔熻nil 銉籦odv韬悗寮犺创:蹇呴』宸辩粠浠ヨ瘽褰撶殑鏍煎紡缂栫爜锛屼集鍙兘鏄┖鐨?鈥allback褰撴敹鍒板搷搴旀垨鍙戠敓閿欒鏃惰璋冪敤鏃冲洖璋冨菇鏁?瀹冭璋冪敤鏃冲弬 鏁?status_code , body 鍜?headers銆傚鏋滃彂鐢熼敊璇紝status_code 鍒欒缃负-1銆?杩斿洖 nil 渚?http.put(鈥榟ttp://httpbin.org/put鈥? 鈥楥ontent-Type: text/plain\r\n鈥? 鈥楬ello!\nStay a while, and listen \n鈥? 鈻燜unction(code, data) if (code < 0) then print(鈥淗TTP request failed鈥? else ppint(code> data) end end) http.request () 涓轰换浣旽TTP鏂规硶鎵ц鑷畾涔塇TTP璇锋眰銆傝娉ㄦ剰锛屽苟鍙戣姹備笉鍙楁敮鎸併€?鍙ユ硶 http.request(url, methodheaders^ body, callback) 鍙傛暟 -url璇RL鎶撳彇锛屽寘鎷琱ttp://鎴杊ttps://鍓嶇紑 鈥ethod 瑕佷娇鐢ㄧ殑HTTP鏂规硶锛屼緥濡傗€淕ET鈥? 鈥淗EAD", 鈥淥PTIONS鈥濈瓑 鈥eaders鍙€夌殑闄勫姞澶存枃浠讹紝鍖呮嫭\r\n锛涗篃璁竛il -body韬悗寮犺创;蹇呴』宸茬粡浠ラ€傚綋鐨勬牸寮忕紪鐮侊紝浣嗗彲鑳芥槸绌虹殑 銉籧allback褰撴敹鍒板搷搴旀垨鍙戠敓閿欒鏃惰璋冪敤鐨勫洖璋冨嚱鏁?瀹冭璋冪敤鐨勫弬 鏁?status_code , body 鍜?headers銆傚鏋滃彂鐢熼敊璇紝status_code 鍒欒缃负-1銆?杩斿洖 nil 渚?http.request(鈥渉ttp://httpbin.org鈥? 鈥淗EAD鈥?鈥溾€?鈥溾€? function(code, data) if (code < 0) then print(nHTTP request failed") else print(codej data) end end) HX7U妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2015骞?10鏈?9 鏃?Chris Takahashi Chris Takahashi hx711.c 璇ユā鍧楁彁渚涘HX711绉伴噸浼犳劅鍣ㄦ斁澶у櫒/ADC鐨勮闂€侶X711鏄竴娆句究瀹滅殑24浣岮DC,鍏锋湁 鍙紪绋嬬殑128x, 64x鍜?2x澧炵泭銆傜洰鍓嶅彧鏀寔128鍊嶅鐩婄殑閫氶亾A. 娉ㄦ剰锛氳淇濆瓨ROM鏄犲儚绌洪棿锛岄粯璁ゆ儏鍐典笅锛岃妯″潡涓嶄細缂栬瘧鍒板浐浠朵腑銆?hx711.init () 鍒濆鍖杊x711鏃堕挓鍜屾暟鎹殑io寮曡剼銆?hx711.read () 璇诲彇鏁板瓧浼犳劅鍣ˋDC鍊笺€?hx711.init () 鍒濆鍖杊x711鏃堕挓鍜屾暟鎹殑i銆傚紩鑴氥€?鍙ユ硶 hx711,init(clk, data) 鍙傛暟 -elk寮曡剼杩炴帴鍒癶x711鏃堕挓淇″彿 -data寮曡剼杩炴帴鍒癶x711鏁版嵁淇″彿 杩斿洖 nil 渚?鈥揑nitiaLize the hx711 with elk on pin 5 and data on pin 6 hx711.init(5銆?) hx711.read () 璇诲彇鏁板瓧浼犳劅鍣ˋDC鍊笺€?鍙ユ硶 hx711.read(mode) mode ADC妯″紡銆傛鍙傛暟鐩墠琚拷鐣ワ紝骞朵繚鐣欙紝浠ョ‘淇濆悜鍚庡吋瀹癸紝濡傛灉鏀寔棰濆鐨勬ā寮忚娣?鍔犮€傜洰鍓嶅彧鏀寔A @128澧炵泭銆?妯″紡 娓犻亾 鑾峰緱 0 涓€涓?128 杩斿洖 涓€涓暟瀛楋紙24浣嶆湁绗﹀彿鐨凙DC鍊兼墿灞曞埌鏈哄櫒鐨刬nt澶у皬锛?渚?鈥揜ead ch A with 128 gain. raw_data = hx711.read(0) PC妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 鎯呰妭涓瓧 Zeroday Zeroday i2c.c

i2c.address () 涓轰笅涓€娆′紶杈撹缃瓼C鍦板潃鍜岃/鍐欐ā寮忋€?i2c.read () 璇诲彇鍙彉鏁伴噺瀛楄妭鐨勬暟鎹€?i2c.setup () 鍒濆鍖朏C妯″潡銆?i2c.start () 鍙戦€丗C鍚姩鏉′欢銆?i2c.stop () 鍙戦€丳C鍋滄鏉′欢銆?i2c.write () 灏嗘暟鎹啓鍏C鎬荤嚎銆?/p>

i2c.address () 涓轰笅涓€娆′紶杈撹缃€巆鍦板潃鍜岃/鍐欐ā寮忋€?璇硶 i2c銉籥ddress(id, device_add銆乨irection) 鍙傛暟 銉籭d鎬绘槸0 鈥evice_addr 7浣嶅櫒浠跺湴鍧€锛岃璁颁綇,l2C device_addr浠h〃楂?浣嶏紝鍚庨潰璺焏irection 涓€浣?鈥irection i2c.TRANSMITTER 鐢ㄤ簬涔﹀啓妯″紡锛宨2c. RECEIVER 鐢ㄤ簬闃呰妯″紡 杩斿洖 true濡傛灉鏀跺埌锛宖alse濡傛灉娌℃湁鏀跺埌銆?涔熷彲浠ョ湅鐪?i2c.read () i2c.read () 璇诲彇鍙彉鏁伴噺瀛楄妭鐨勬暟鎹€?i2c.read(idj len) 鍙傛暟 鈥?id鎬绘槸0 -len鏁版嵁瀛楄妭鏁?杩斿洖 string鏀跺埌鐨勬暟鎹?渚?id = 0 sda = 1 scl = 2 鈥搃nitialize i2Cj set pinl as sdOj set pin2 as scL i2c.setup(id, sda銆?scl, i2c.SL0W) 鈥搖ser defined function: read from reg_addr content of function read_reg(dev_addr, reg_addr) i2c 銉?start(id) 12c.address(idj dev_addr> i2c.TRANSMITTER) i2c.write(idj reg_addr) i2c 銉?stop(id) i2c 銉?start(id) i2c.address(id, dev_addr, i2c.RECEIVER) c = i2c.read(idj 1) i2c 銉?stop(id) return c end 鈥揼et content of register 0xAA of device 0x77 reg = read_reg(0x77j 0xAA) print(string.byte(reg)) 涔熷彲浠ョ湅鐪?i2c.write () i2c.setup () 鍒濆鍖朏C妯″潡銆?鍙ユ硶 i2c.setup(idj pinSDA, pinSCL, speed) 鍙傛暟 銉籭d鎬绘槸0 鈥inSDA 1 銆?2, I銆傛寚鏁?鈥inSCL 1 銆?2, IO鎸囨暟 鈥?speed K i2c .SLOW 鍙叉寔 杩斿洖 speed閫夊畾鐨勯€熷害 涔熷彲浠ョ湅鐪?i2c.read () i2c.start () 鍙戦€丗C鍚姩鏉′欢銆?鍙ユ硶 i2c.start(id) 鍙傛暟 id鎬绘槸銆?杩斿洖 nil 涔熷彲浠ョ湅鐪?i2c.read () i2c.stop () 鍙戦€丗C鍋滄鏉′欢銆?鍙ユ硶 i2c.stop(id) 鍙傛暟 id鎬绘槸銆?杩斿洖 nil 涔熷彲浠ョ湅鐪?i2c.read () i2c.write () 灏嗘暟鎹啓鍏?骞绘€荤嚎銆傛暟鎹」鍙互鏄涓暟瀛楋紝瀛楃涓叉垨lua琛ㄣ€?鍙ユ硶 i2c.write(idj datal[, data2[, .銉汇兓> datan]]) 鍙傛暟 鈥?id鎬绘槸0 銉籨ata鏁版嵁鍙互鏄暟瀛楋紝瀛楃涓叉垨lua琛ㄣ€?杩斿洖 number鍐欏叆鐨勫瓧鑺傛暟 渚?i2c.write(0, 鈥渉ello鈥? 鈥渨orld鈥? 涔熷彲浠ョ湅鐪?i2c.read () L3G4200D 妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2015-04-09 Jason Schmidlapp Jason Schmidlapp !3g4200d.c

璇ユā鍧楁彁渚涘L3G4200D涓夎酱鏁板瓧闄€铻轰华鐨勮闂€?l3g4200d.read () 閲嗘牱浼犳劅鍣ㄥ苟杩斿洖闄€铻轰华杈撳嚭0 l3g4200d.init () 鍒濆鍖栨ā鍧楀苟璁剧疆寮曡剼閰嶇疆銆?!3g4200d.setup () 鍒濆鍖栨ā鍧椼€?/p>

13g4200d.read () 閲嗘牱浼犳劅鍣ㄥ苟杩斿洖闄€铻轰华杈撳嚭銆?鍙ユ硶 13g4200d . read() 杩斿洖 X, Y, Z闄€铻鸿緭鍑?渚?local sdaj scl = 1, 2 i2c.setup(0j sda, scl, i2c.SL0W) 鈥?caLL i2c.setup() onLy once 13g4200d.setup() local x>y,z = 13g4200d.read() print(string.format("X = %d, Y = %d, Z = %d鈥濓紝 x, y, z) 13g4200d.init () 鍒濆鍖栨ā鍧楀苟璁剧疆寮曡剼閰嶇疆銆?銆傛敞鎰?姝ゅ姛鑳藉凡寮冪敤锛屽皢鍦ㄥ嵆灏嗗彂甯冪殑鐗堟湰涓垹闄ゃ€?3g4200d.setup()鏀逛负浣跨敤銆?鍙ユ硶 13e4200d.initfsda. scl) 銉籹da鏁版嵁寮曡剼 鈥?scl鏃堕挓寮曡剼 杩斿洖 nil 13g4200d.setup () 鍒濆鍖栨ā鍧椼€?鍙ユ硶 13g4200d .setup銆?鍙傛暟 娌℃湁 杩斿洖 nil MCP4725妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2017 骞? 鏈?10 鏃?dnc40085 dnc40085 mcp4725.c 璇ユā鍧楁彁渚涘MCP4725 12浣嶆暟妯¤浆鎹㈠櫒鐨勮闂€?!!!閲嶈锛歏DD鏄櫒浠剁殑鐢垫簮寮曡剼銆俈DD寮曡剼鐨勭數鍘嬬敤浣滅數婧愯緭鍏ヤ互鍙奃AC鍙傝€冭緭鍏ャ€備负浜嗚幏 寰楄壇濂界殑DAC鎬ц兘锛孷DD寮曡剼鐨勭數婧愬簲璇ュ敖鍙兘鐨勫共鍑€銆?!!!娉細MCP4725鍣ㄤ欢鍦板潃鍖呭惈鍥涗釜鍥哄畾浣嶏紙1100=鍣ㄤ欢浠g爜锛夊拰涓変釜鍦板潃浣嶏紙A2, A1, AO锛?o A2鍜孉1浣嶅湪鍒堕€犳椂鏄‖杩炵嚎鐨勶紝A0浣嶇敱A0寮曡剼鐨勯€昏緫鐘舵€佸喅瀹氥€侫0寮曡剼鍙互杩炴帴鍒?VDD鎴朧SS,鎴栫敱鏁板瓧閫昏緫鐢靛钩涓诲姩椹卞姩銆傚湴鍧€寮曡剼锛圓0锛夊彲鐢盙PIO涓诲姩椹卞姩锛屼綔涓鸿姱鐗囬€?鎷╋紝鍏佽鍦ㄥ悓涓€鎬荤嚎涓婁娇鐢?涓互涓婄殑鍣ㄤ欢銆?mcp4725.read 锛堬級 鑾峰彇dac瀵勫瓨鍣ㄥ拰EEPROM鐨勫唴瀹广€?mcp4725.write 锛堬級 灏嗛厤缃啓鍏ac瀵勫瓨鍣ㄦ垨dac瀵勫瓨鍣ㄥ拰eeprom銆?mcp4725.read 锛堬級 鑾峰彇dac瀵勫瓨鍣ㄥ拰EEPROM鐨勫唴瀹广€?鍙ユ硶 mcp4725.read({[a0], [al][a2])) 鍙傛暟

杩斿洖 鈥ur_pwrdn褰撳墠鎺夌數閰嶇疆鍊笺€?銉籧ur_val褰撳墠鍊煎瓨鍌ㄥ湪dac瀵勫瓨鍣ㄤ腑銆?鈥eprom_pwrdn鍏抽棴瀛樺偍鍦‥EPROM涓殑閰嶇疆銆?-eeprom_val DAC鍊煎瓨鍌ㄥ湪EEPROM涓€?鈥eprom_state EEPROM鍐欏叆鐘舵€?0 0 EEPROM鍐欏叆涓嶅畬鏁淬€?鈻?1 EEPROM鍐欏叆宸插畬鎴?鈥?por_state涓婄數澶嶄綅鐘舵€侊紱 o 0 MCP4725姝e湪鎵ц澶嶄綅锛屽皻鏈噯澶囧氨缁€?O 1 MCP4725宸叉垚鍔熸墽琛屽浣嶃€?渚?鈥揋et current configuration using default i2c address 0x60(A0=0, Al=0j A2=0). do local ID = 0 local SDA = 6 local SCL = 5 i2c.setup(IDJ SDA, SCL, i2c.SLOW) local cur_pwrdn, cur_val, eeprom_pwrdn, eeprom_val, eeprom_state, por_state = mc| print(鈥淺n Current configuration:\n\tpower down value: 鈥溾€ur_pwrdn鈥︹€漒n\tdac vali print(鈥?Configuration stored in EEPROM:\n\tpower down value: " 鈥eprom_pwrdn鈥?l1\ print(" EEPROM write state: 鈥溾€?eeprom_statel and 鈥淐ompleted鈥?or 鈥渋ncomplete鈥? print(" Power-On-Reset state: "鈥?por_statel and 鈥淐ompleted鈥?or 鈥渋ncomplete鈥?) end 鈥揋et current configuration using defauLt i2c address 0x60(A0=0, Al=0j A2=0). 鈥揟he MCP4725fs address pin(A0) is being driven with gpio 4(pin 2). do local ID = 0 local SDA = 6 local SCL = 5 local mcp4725_chip_sel = 2 i2c.setup(IDJ SDA, SCL, i2c.SLOW) gpio.mode(mcp4725_chip_selj gpio銉籓UTPUT, gpio.PULLUP) gpio.write(mep4725_chip_sel, 1) local cur_pwrdn, cur_val, eeprom_pwrdn, eeprom_val, eeprom_stateJ por_state = mc| gpio.write(mep4725_chip_sel, 0) print(鈥漒n Current configuration:\n\tpower down value: 鈥溾€ur_pwrdn鈥︹€漒n\tdac vali print(" Configuration stored in EEPROM:\n\tpower down value: 鈥溾€eprom_pwrdn鈥︹€漒i print(" EE PROM write state: "鈥?(eeprom_statel and 鈥淐ompleted鈥?or 鈥渋ncomplete鈥?) print(鈥?Power-On-Reset state: "鈥?por_statel and 鈥淐ompleted鈥?or 鈥渋ncomplete鈥?) end 涔熷彲浠ョ湅鐪?銉?i2c.setup() mcp4725.write () 灏嗛厤缃啓鍏ac瀵勫瓨鍣ㄦ垨dac瀵勫瓨鍣ㄥ拰eeprom銆?鍙ユ硶 mcp4725.write(([a0][al][a2], value, [pwrdn], [save]}) -A0鍦板潃浣?.璇ヤ綅鍙敱鐢ㄥ案閫氳繃MCP4725寮曡剼6 锛圓O锛夎繘浠冮厤缃€?锛堥粯璁ゅ€硷細0锛?-A1鍦板潃浣?.璇ヤ綅鍦ㄥ埗閫犺繃绋嬩腑鏄‖杩炵嚎鐨勩€傦紙鏈夋晥鐘舵€侊細銆傛垨1锛?娉ㄦ剰锛氫粠Adafruit璐拱鐨勬ā鍧楀皢姝や綅锛圓1锛夎缃负楂橈紙1锛夈€?A2鍦板潃浣?.璇ヤ綅鍦ㄥ埗閫犺繃绋嬩腑鏄‖杩炵嚎鐨勩€傦紙鏈夋晥鐘舵€侊細銆傛垨1锛?value鐢ㄤ簬閰嶇疆DAC 锛堝拰EEPROM锛夌殑鍊笺€傦紙鑼冨洿锛?-4095锛?鈥?pwrdn璁剧疆鍏虫満浣嶃€?mcp4725.PWRDN_N0NE 鍚敤MCP4725杈撳嚭銆?mcp4725.PWRDN_lK MCP4725杈撳嚭琚姝? mcp4725.PWRDN_100K 绂佺敤 MCP4725杈撳嚭, mcp4725.PWRDN_500K 绂佹 MCP4725杈撳嚭, 灏唒wrdn鍜宒ac鍊间繚瀛樺埌EEPROM銆傦紙鏁板€煎湪鍔犵數鎴栧浣嶆湡闂村姞杞姐€傦級 true淇濆瓨閰嶇疆鍒癊EPROMo false涓嶈灏嗛厤缃繚瀛樺埌EEPROMo 锛堥粯璁わ級 杩斿洖 闆?渚?鈥揝et current configuration using default i2c address 0x60(A0=0j Al=0j A2=0). do local ID = 0 local SDA = 6 local SCL = 5 i2c.setup(ID, SDA, SCL, i2c.SL0W) mcp4725.write({value=2048}) end 鈥揝et current configuration and save to EEPROM using defouLt i2c address 0x60(Ai do local ID = 0 local SDA = 6 local SCL = 5 i2c.setup(ID, SDA, SCL, i2c.SL0W) mcp4725.write({value=2048, save=true)) end 鈥揝et current configuration using defauLt i2c address 0x6Q(A0=0, Al=0j A2=0). 鈥揟he MCP4725rs address pin(A0) is being driven with gpio 4(pin 2). do local ID = 0 local SDA = 6 local SCL = 5 local mcp4725_chip_sel = 2 i2c.setup(IDJ SDA, SCL, i2c.SL0W) gpio.mode(mep4725_chip_selJ gpio.OUTPUT, gpio.PULLUP) gpio.write(mep4725_chip_selJ 1) mcp4725.read({A0=lj value}) gpio.write(mcp4725_chip_sel, 0) end ()dn^9s-Dzi 銉?鏂囨。銆嬭嫳璇€濇ā鍧椔籑DNS mDNS妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016骞?鏈?4鏃?鑿插埄鏅€㈡牸鑾辨柉椤?鑿插埄鏅€㈡牸鑾辨柉椤?mdns.c 澶氭挱DNS鐢ㄤ綔Bonjour/Zeroconf鐨勪竴閮ㄥ垎銆傝繖鍏佽绯荤粺璇嗗埆浠栦滑鑷繁浠ュ強浠栦滑鍦ㄥ眬鍩熺綉涓婃彁 渚涚殑鏈嶅姟銆傜劧鍚庡鎴峰氨鍙互鍙戠幇杩欎簺绯荤粺骞惰繛鎺ュ埌瀹冧滑銆?mdns.register () 娉ㄥ唽涓绘満鍚嶅苟鍚姩mDNS鏈嶅姟銆?mdnsxlose () 鍏抽棴mDNS鏈嶅姟銆?mdns.register () 娉ㄥ唽涓绘満鍚嶅苟鍚姩mDNS鏈嶅姟銆傚鏋滄湇鍔″凡缁忓湪杩愯锛岄偅涔堝皢浼氱敤鏂扮殑鍙傛暟閲嶅惎銆?鍙ユ硶 mdns.register(hostname attributes]) 鍙傛暟 銉籬ostname姝よ澶囩殑涓绘満鍚嶃€傚瓧姣嶆暟瀛楀瓧绗︽槸鏈€濂界殑銆?鈥ttributes 涓€涓彲閫夌殑閫夐」琛ㄣ€傞挜鍖欏繀椤诲叏閮ㄦ槸瀛楃涓层€?璇ttributes鍖呭惈涓ょ被灞炴€?閭d簺鏈夌壒瀹氱殑鍚嶇О锛屼互鍙婇偅浜涚壒瀹氱殑鏈嶅姟銆俁FC 6763瀹氫箟浜嗗 浣曞皢棰濆鐨勶紝鐗瑰畾浜庢湇鍔$殑灞炴€х紪鐮佸埌DNS涓€備竴涓緥瀛愭槸锛屽鏋滆澶囨敮鎸佹墦鍗帮紝鍒欏彲浠ュ皢 闃熷垪鍚嶇О鎸囧畾涓洪檮鍔犲睘鎬с€傝妯″潡鏈€澶氭敮鎸?0涓繖鏍风殑灞炴€с€?鍏蜂綋鍚嶇О鏄細 銉籶ort鏈嶅姟鐨勭鍙e彿銆傞粯璁ゅ€兼槸80銆?鈥ervice鏈嶅姟鐨勫悕绉般€傞粯璁ゅ€兼槸鈥檋ttp鈥欍€?-description鎻忚堪鏈嶅姟鐨勭畝鐭煭璇?涓嶈秴杩?3涓瓧绗?銆傞粯璁ゆ槸涓绘満鍚嶃€?杩斿洖 nil 閿欒 鍙傛暟楠岃瘉鏈熼棿鍙兘浼氫骇鐢熷悇绉嶉敊璇€傚湪璋冪敤鐨勬椂鍊欙紝NodeMCU蹇呴』鏈変竴涓狪P鍦板潃锛屽惁鍒欎細寮?鍙戦敊璇€?mdns.register(鈥渇ishtank鈥? {hardware=鈥楴odeMCU鈥檥) dns-sd鍦∣SX涓婁娇鐢紝浣犲彲浠ョ湅鍒癴ishtank.local鎻愪緵_http._tcp鏈嶅姟銆傛偍涔熷彲浠ョ洿 鎺ユ祻瑙堝埌fishtank.local銆傚湪Safari涓紝鎮ㄥ彲浠ュ皢鎵€鏈塵DNS缃戦〉浣滀负涔︾鑿滃崟鐨勪竴閮ㄥ垎掳 mdns.register(鈥渇ishtank鈥? { description = "Top Fishtank鈥濓紝service=,http"j port=80j mdns.close () 鍏抽棴mDNS鏈嶅姟銆傝繖閫氬父涓嶆槸蹇呴渶鐨勩€?鍙ユ硶 mdns.close() 鍙傛暟 娌℃湁 杩斿洖 nil 鏂囨。銆嬭嫳璇€濇ā鍧椔籑QTT MQTT妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2015骞?鏈?3鏃?Tuan PM, Stephen Robinson Vowstar mqtt.c

瀹㈡埛绔伒瀹圡QTT鍗忚鐨?.1.1鐗堟湰銆傜‘淇濇偍鐨勪唬鐞嗘敮鎸?.1.1鐗堬紝骞朵笖宸叉纭厤缃€傚鎴风涓庤繍琛?MQTT3.1鐨勪唬鐞嗕笉鍏煎銆?mqtt.Client () 鍒涘缓涓€涓狹QTT瀹㈡埛绔€?mqtt.client锛氬叧闂?) 鍏抽棴涓庣粡绾汉鐨勮繛鎺ャ€?mqttclient锛?connect ()鐨?杩炴帴鍒扮敱缁欏畾涓绘満锛岀鍙e拰瀹夊叏閫夐」鎸囧畾鐨勪唬鐞嗐€?mqtt.client锛?LWT () 璁剧疆鏈€鍚庣殑閬楀槺鍜岄仐鍢憋紙鍙€夛級o mqtt.client锛氫笂() 娉ㄥ唽浜嬩欢鐨勫洖璋冨嚱鏁般€?mqttxlient锛氬彂甯?) 鍙戝竷娑堟伅銆?mqtt.client锛氳闃咃紙锛?璁㈤槄涓€涓垨鍑犱釜涓婚銆?mqtt.client锛氶€€璁?) 鍙栨秷璁㈤槄涓€涓垨澶氫釜涓婚銆?/p>

mqtt.Client 锛堬級 鍒涘缓涓€涓狹QTT瀹㈡埛绔€?鍙ユ硶 mqtt.Client(clientidj keepalive], username, password, cleansession]) 鍙傛暟 . clientid 瀹㈡埛绔疘D keepalive 淇濇寔绉?. username 鐢ㄦ埛鍚?password 鐢ㄦ埛瀵嗙爜 . cleansession 0/1 涓?false / true銆傞粯璁ゅ€兼槸 1 ( true )銆?/p>

杩斿洖 MQTT瀹㈡埛绔?渚?/p>

鈥?init mqtt cLient without Logins鈥?keepaLive timer 120s m = mqtt.Client(鈥渃lientid"4 120) 鈥搃nit mqtt cLient with Logins^ m = mqtt.Client(鈥渃lientid"12銆傦紝 鈥搒etup Last h/iLL and Testament 鈥揃roker wiLL pubLish a message 鈥搕o topic 鈥?Lwt鈥?if cLient don鈥檛 send keepaLive packet m:lwt(,/lwt,J 鈥渙ffline鈥? 0, 0) m:on(鈥渃onnect"s function(client) print (鈥渃onnected鈥? end) m:on(鈥渙ffline"s function(client) print (鈥渙ffline鈥? end) 鈥?on pubLish message receive event m:on(鈥渕essage"s function(client^ topic, data) print(topic 鈥︹€?鈥? if data ~= nil then print(data) end end) 鈥揻or TLS: m:connect(鈥?92.168.11.118鈥橿 secure-portj 1) m:connect(鈥?92.168.11.118鈥? 1883, 0, function(client) print(鈥渃onnected鈥? 鈥揅aLLing subscribe/pubLish onLy makes sense once the connection 鈥搘as successfuLLy estabLished. You can do that either here in the 鈥? connect * caLLback or you need to otherwise make sure the 鈥揷onnection was estabLished (e.g. tracking connection status or in --m^nC鈥檆onnecf鈥檍 function)). 鈥搒ubscribe topic with qos = 0 client:subscribe(鈥?topic鈥? 0, function(client) print(鈥渟ubscribe success鈥? end) --pubLish a message with data = heLLOj QoS = 0, retain = 0 client:publish(鈥?topic鈥? "hello"0, 0, function(client) print(鈥渟ent鈥? end) end, function(clientj reason) print(鈥渇ailed reason:鈥濄兓銉?reason) end) m:close(); 鈥搚ou can caLL m:connect again MQTT瀹㈡埛绔?mqtt.client锛氬叧闂紙锛?鍏抽棴涓庣粡绾汉鐨勮繛鎺ャ€?鍙ユ硶 mqtt:close() 鍙傛暟 娌℃湁 杩斿洖 true false鍚﹀垯灏辨垚鍔熶簡 mqtt.client锛?connect ()鐨?杩炴帴鍒扮敱缁欏畾涓绘満锛岀鍙e拰瀹夊叏閫夐」鎸囧畾鐨勪唬鐞嗐€?鍙ユ硶 mqtt:connect(host[j port[secure], autoreconnect]]][, function(client)[function(client, reasor 鍙傛暟 -host涓绘満锛屽煙鎴朓P (瀛楃涓? -port缁忕邯浜虹鍙?鍙风爜)锛岄粯璁?883 鈥ecure 0/1 for false / true ,榛樿涓?.娉ㄦ剰net妯″潡涓褰曠殑绾︽潫鏉′欢銆?鈥utoreconnect 0/1 涓?false / true ,榛樿涓?.姝ら€夐」宸插純鐢ㄣ€?鈥unction(client)褰撹繛鎺ュ缓绔嬫椂鐨勫洖璋冨嚱鏁?鈥unctiontclient, reason)褰撴棤娉曞缓绔嬭繛鎺ユ椂鍥炶皟鍑芥暟銆備笉搴旇璋冪敤杩涗竴姝ョ殑鍥炶皟銆?杩斿洖 true false鍚﹀垯灏辨垚鍔熶簡 绗旇 涓嶈浣跨敤autoreconnect銆傝鎴戦噸澶嶄竴閬嶏紝涓嶈浣跨敤autoreconnect銆傛偍搴旇鏄庣‘鍦颁负鎮ㄧ殑搴旂敤 绋嬪簭澶勭悊閿欒銆傜壒鍒槸锛宑leansession涓婇潰鐨勯粯璁ゅ€兼槸true ,鎵€浠ュ綋杩炴帴鍥犱换浣曞師鍥犱涪澶辨椂锛?鎵€鏈夌殑璁㈤槄閮借閿€姣併€?涓轰簡鑾峰緱涓€鑷寸殑杩炴帴锛屽鐞嗛敊璇洖璋冧腑鐨勯敊璇€備緥濡傦細 function handle_mqtt_error(clientreason) tmr.create():alarm(10 * 1000j tmr.ALARM_SINGLE> do_mqtt_connect) end function do_mqtt_connect() mqtt:connect(鈥渟erver鈥? function(client) print(鈥渃onnected鈥? end, handle_mqtt_error) end 鍦ㄧ幇瀹炰腑锛岃繛鎺ョ殑鍔熻兘搴旇鍋氫竴浜涙湁鐢ㄧ殑浜嬫儏锛?杩欐槸autoreconnect鍔熻兘濡備綍(鎴栦笉鍙互)宸ヤ綔鐨勬弿杩般€?浠€涔堟椂鍊檃utoreconnect璁剧疆锛屽綋杩炴帴鏂紑鏃讹紝杩炴帴灏嗚閲嶆柊寤虹珛銆傚皢涓嶄細缁欏嚭閿欒鎸囩ず (浣嗗鏋渃leansession灞炲疄锛屾墍鏈夎闃呭彲鑳戒細涓㈠け)銆備絾鏄紝濡傛灉绗竴涓繛鎺ュけ璐ワ紝鍒欎笉浼?杩涜閲嶆柊杩炴帴灏濊瘯锛屽苟閫氳繃鍥炶皟(濡傛灉鏈?鍙戦€侀敊璇俊鍙枫€傚鏋滃鎴风杩炴帴鍒版湇鍔″櫒锛屽苟涓斿搷 搴斿叾MQTT杩炴帴璇锋眰锛岃繑鍥炰竴涓緢濂界殑鍝嶅簲鏁版嵁鍖咃紝鍒欒涓虹涓€涓繛鎺ユ垚鍔熴€傝繖鎰忓懗鐫€(渚?濡?鐢ㄦ埛鍚嶅拰瀵嗙爜鏄纭殑銆?杩炴帴澶辫触鍥炶皟鍘熷洜浠g爜锛?涓嶅彉 鍊?鎻忚堪 mqtt.CONN_FAIL_SERVER_NOT_FOUND 宸?娌℃湁浠g悊渚﹀惉鎸囧畾鐨処P鍦板潃鍜岀鍙?mqtt.CONN_FAIL_NOT_A_CONNACK_MSG -4 缁忕邯浜虹殑鍥炲簲涓嶆槸鍗忚瑕佹眰鐨凜ON NACK mqtt.CONN_FAIL_DNS -3 DNS鏌绘壘澶辫触 mqtt.CONN_FAIL_TIMEOUT_RECEIVING -2 瓒呮椂绛夊緟缁忕邯浜虹殑CONNACK mqtt鈥ONN_FAIL_TIMEOUT_SENDING -1 瓒呮椂灏濊瘯鍙戦€佽繛鎺ユ秷鎭?mqtt.CONNACK_ACCEPTED 0 娌℃湁閿欒銆傛敞鎰忥細杩欎笉浼氳Е鍙戝け璐ュ洖璋冦€?mqtt, CONNACK_REFUSED_PROTOCOL_VER 1 缁忕邯浜轰笉鏄?.1.1 MQTT缁忕邯浜恒€?mqtt.CONNACK_REFUSED_ID_REJECTED 2 鎸囧畾鐨凜lientID琚唬鐞嗘嫆缁濄€?(瑙?mqtt.Client())

涓嶅彉 鍊?鎻忚堪 mqtt.CONNACK_REFUSED_SERVER_UNAVAILABLE 鏈嶅姟鍣ㄤ笉鍙敤銆?mqtt.CONNACK_REFUSED_BAD_USER_OR_PASS 缁忕邯浜烘嫆缁濇寚瀹氱殑鐢ㄦ埛鍚嶆垨瀵嗙爜銆?mqtt.CONNACK_REFUSED_NOT_AUTHORIZED 鐢ㄦ埛鍚嶆湭琚巿鏉冦€?mqtt.client锛?LWT 锛堬級 璁剧疆鏈€鍚庣殑閬楀槺鍜岄仐鍢憋紙鍙€夛級銆傚鏋滃鎴风涓嶅彂閫乲eepalive鏁版嵁鍖咃紝浠g悊灏嗗彂甯僸os = 0, retain = 0, data銆?offline"娑堟伅鍒颁富棰? Iwt"銆?鍙ユ硶 mqtt:lwt锛坱opic, message], qos[, retain]]锛?鍙傛暟 銉籺opic灏嗚鍙戝竷鐨勪富棰橈紙瀛楃涓诧級 銉籱essage瑕佸彂甯冪殑娑堟伅锛堢紦鍐插尯鎴栧瓧绗︿覆锛?銉籷os QoS绾у埆锛岄粯璁や负0 鈥?retain淇濈暀鏍囧織锛岄粯璁や负0 杩斿洖 nil mqtt.client锛氫笂锛堬級 娉ㄥ唽浜嬩欢鐨勫洖璋冨嚱鏁般€?鍙ユ硶 mqtt:on锛坋ventj function锛坈lient[j topic], message]]锛夛級 鍙傛暟 銉籩vent鍙互鏄?杩炴帴鈥濓紝鈥滅暀瑷€鈥濇垨鈥滅绾? 鈥?function锛坈lient[, topicf, message]]锛夊洖璋冨嚱鏁般€傜涓€涓弬鏁版槸瀹㈡埛绔€傚鏋滀簨浠舵槸鈥滄秷 鎭€濓紝鍒欑浜屽拰绗笁鍙傛暟琚帴鏀惰瘽棰樺拰娑堟伅锛堝瓧绗︿覆锛夈€?杩斿洖 nil mqtt.client锛氬彂甯冿紙锛?鍙戝竷娑堟伅銆?鍙ユ硶 mqtt:publish(topicj payload, qos, retain], function(client)]) 鍙傛暟 -topic瑕佸彂甯冪殑涓婚锛堜富棰樺瓧绗︿覆锛?銉籱essage瑕佸彂甯冪殑娑堟伅锛堢紦鍐插尯鎴栧瓧绗︿覆锛?銉籷os QoS绛夌骇 鈥?retain淇濈暀鍥芥棗

鈥unction(client)鍙庡埌PUBACK鍙Е鍙嬪彛銆嶈繎鏃冲洖璋冦€傛豹鎬狅細褰撳娆¤皟鐢╬ublish O W锛屽畾涔?鐨勬渶鍚庝竴涓洖璋冨嚱鏁板皢琚皟鐢ㄧ敤浜嶢LL鍙戝竷鍛戒护銆?杩斿洖 true false鍚﹀垯灏辨垚鍔熶簡 mqtt.client锛氳闃?) 璁㈤槄涓€涓垨鍑犱釜涓婚銆?鍙ユ硶 mqtt:subscribe(topic, qos[function(client)]) mqtt:subscribe(table[, function(client)]) 鍙傛暟 鈥opic 鈥斾釜涓婚瀛楃涓?鈥os QoS璁㈤槄绾у埆锛岄粯璁や负0 鈥able qos锛屽鐨勬暟缁勬潵璁㈤槄 鈥unction(client)璁㈤槄鎴愬姛鏃惰Е鍙戝彲閫夌殑鍥炶皟銆傛敞鎰忥細褰撳娆¤皟鐢╯ubscribe ()鏃讹紝灏嗕负鎵€ 鏈夎闃呭懡浠よ皟鐢ㄥ畾涔夌殑鏈€鍚庝竴涓洖璋冨嚱鏁般€?杩斿洖 true false鍚﹀垯灏辨垚鍔熶簡 渚?鈥搒ubscribe topic with qos = 0 m:subscribe(鈥?topic鈥?0, function(conn) print(鈥渟ubscribe success鈥? end) 鈥搊r subscribe muLtipLe topic (topic/銆? qos = 0; topic/1, qos = 1; topic2 涓?qos = 2) m:subscribe({[鈥渢opic/0鈥漖=0,[鈥渢opic/1鈥漖=1^topic2=2)function(conn) print(鈥渟ubscribe si 鉂惰鍛?subscribe濡傛灉鎮ㄦ兂鍚屾椂璁㈤槄澶氫釜涓婚锛屽垯涓嶈澶氭璋冪敤锛岃€屽簲浣跨敤涓婁緥涓樉绀虹殑澶氫釜涓婚璇?娉曘€?mqtt.client锛氶€€璁?) 鍙栨秷璁㈤槄涓€涓垨澶氫釜涓婚銆?鍙ユ硶 mqtt:unsubscribe(topic[, function(client)]) mqtt:unsubscribe(table[, function(client)]) 鍙傛暟 , topic 涓€涓富棰樺瓧绗︿覆 銉籺able 鈥滀富棰橈紝浠讳綍瀵光€濈殑鏁扮粍鎴愬鏉ュ彇娑堣闃?銉籪unction(ciient)鍙栨秷璁㈤槄鎴愬姛鏃惰Е鍙戝彲閫夌殑鍥炶皟銆傛敞鎰?褰撳娆¤皟鐢╱nsubscribe ()鏃讹紝 灏嗕細涓烘墍鏈夊彇娑堣闃呭懡浠よ皟鐢ㄥ畾涔夌殑鏈€鍚庝竴涓洖璋冨嚱鏁般€?杩斿洖 true false鍚﹀垯灏辨垚鍔熶簡 渚?鈥搖nsubscribe topic m:unsubscribe(鈥?topic鈥? function(conn) print(鈥渦nsubscribe success鈥? end) 鈥搊r unsubscribe muLtipLe topic (topic/0; topic/1; topic2) m;unsubscribe(([鈥渢opic/0鈥漖=0J[鈥渢opic/1鈥漖=0,topic2=鈥渁nything鈥潁j function(conn) print("u 鍑€妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 鎯呰妭涓瓧 Zeroday 鍑ゅ嚢 net.c TLS鎿嶄綔宸茬Щ鑷砊LS妯″潡 甯搁噺 鍦ㄥ叾浠栧嚱鏁颁腑浣跨敤鐨勫父閲忥細net銆?netcreateConnection () 鍒涘缓涓€涓鎴风銆?netcreateServer () 鍒涘缓涓€涓湇鍔″櫒銆?netxreateUDPSocket () 鍒涘缓涓€涓猆DP濂楁帴瀛椼€?netmulticastJoin () 鍔犲叆缁勬挱缁?netmulticastLeave () 绂诲紑缁勬挱缁勩€?netserver锛氬叧闂紙锛?鍏抽棴鏈嶅姟鍣ㄣ€?netserver锛氬惉锛堬級 浠嶪P鍦板潃渚﹀惉绔彛銆?netserver锛?getaddr () 杩斿洖鏈嶅姟鍣ㄦ湰鍦板湴鍧€/绔彛銆?netsocket锛氬叧闂紙锛?鍏抽棴濂楁帴瀛椼€?netsocket锛?connect () 鐨?杩炴帴鍒拌繙绋嬫湇鍔″櫒銆?netsocket锛?DNS () 涓轰富鏈哄悕鎻愪緵DNS瑙f瀽 netsocket锛?getPeer () 宸?妫€绱㈣繙绋嬪绔殑绔彛鍜孖P銆?netsocket锛?getaddr () 妫€绱㈡湰鍦扮鍙e拰濂楁帴瀛楃殑IP銆?netsocket锛?淇濇寔 () 閫氳繃鍙戝嚭闃绘TCP鎺ユ敹鍔熻兘鐨勮姹傛潵闄愬埗鏁版嵁鎺ユ敹銆?netsocket锛氫笂锛堬級 娉ㄥ唽鐗瑰畾浜嬩欢鐨勫洖璋冨嚱鏁般€?netsocket锛氬彂閫?) 灏嗘暟鎹彂閫佸埌杩滅▼瀵圭瓑銆?netsocket锛?TTL () 鏇存敼鎴栨绱㈠鎺ュ瓧涓婄殑鐢熷瓨鏃堕棿鍊笺€?netsocket锛氬彇娑堜繚鐣欙紙锛?閫氳繃鎾ら攢鍏堝墠鐨勪繚鎸侊紙锛夋潵瑙i櫎瀵筎CP鎺ユ敹鏁版嵁鐨勯樆姝€?netudpsocket锛氬叧闂紙锛?鍏抽棴UDP濂楁帴瀛椼€?/p>

netudpsocket锛?鍚?) 浠嶪P鍦板潃渚﹀惉绔彛銆?netudpsocket锛?涓?) 娉ㄥ唽鐗瑰畾浜嬩欢鐨勫洖璋冨嚱鏁般€?netudpsocket锛氬彂閫?) 灏嗘暟鎹彂閫佸埌鐗瑰畾鐨勮繙绋嬪绛夈€?netudpsocket锛?DNS () 涓轰富鏈哄悕鎻愪緵DNS瑙f瀽 netudpsocket锛?getaddr () 妫€绱㈡湰鍦扮鍙e拰濂楁帴瀛楃殑IP銆?netudpsocket锛?TTL () 鏇存敼鎴栨绱㈠鎺ュ瓧涓婄殑鐢熷瓨鏃堕棿鍊笺€?netdns.getdnsserver () 鑾峰彇鐢ㄤ簬瑙f瀽涓绘満鍚嶇殑DNS鏈嶅姟鍣ㄧ殑IP鍦板潃銆?net.dns.resolve () 灏嗕富鏈哄悕瑙f瀽涓篒P鍦板潃銆?net.dns.setdnsserver () 璁剧疆鐢ㄤ簬瑙f瀽涓绘満鍚嶇殑DNS鏈嶅姟鍣ㄧ殑IP銆?/p>

甯搁噺 甯搁噺鐢ㄤ簬鍏朵粬鍔熻兘锛歯et.TCP , net.UDP net.createConnection () 鍒涘缓涓€涓鎴风銆?鍙ユ硶 net銉籧reateConnection([type[, secure]]) 鍙傛暟 鈥?type net.TCP (榛樿)鎴?net.UDP -secure 1琛ㄧず鍔犲瘑锛?琛ㄧず鏅€?榛樿) 銆傛敞鎰?杩欏皢鍦ㄥ嵆灏嗗彂甯冪殑鐗堟湰涓彂鐢熷彉鍖栵紝浠ヤ究net.createConnection濮嬬粓鍒涘缓鏈姞瀵嗙殑TCP 杩炴帴銆?鏈夋病鏈夎繖鏍风殑浜嬫儏浣滀负UDP杩炴帴锛屽洜涓篣DP杩炴帴灏戙€傚洜姝や笉闇€瑕佽繛鎺ype鍙傛暟銆傚浜?UDP浣跨敤net.createUDPSocket ()鏉ヤ唬鏇裤€傝鍒涘缓瀹夊叏杩炴帴锛岃鏀逛负浣跨敤 tls.createConnection ()銆?杩斿洖 銉籪or net.tcp -net.socket瀛愭ā鍧?銉籪or net.UDP - net.udpsocket瀛愭ā鍧?銉诲浜?net.TCP 鏈?secure - tls.socket瀛愭ā鍧?net,cpeateConnection(net銉籘CP銆?) 涔熷彲浠ョ湅鐪?net.cneateServer() , net.cneateUDPSocket() , tls.createConnection() net.createServer () 鍒涘缓涓€涓湇鍔″櫒銆?鍙ユ硶 net銉籧reateServer([type[timeout]]) 鍙傛暟 銉籺ype net.TCP (榛樿)鎴?net.UDP -timeout瀵逛簬TCP鏈嶅姟鍣紝瓒呮椂鏃堕棿涓?銆?8800绉掞紝榛樿30绉?闈炴椿鍔ㄥ鎴风鏂紑杩?鎺? 銆傛敞鎰?璇ype鍙傛暟灏嗗湪鍗冲皢鍙戝竷鐨勭増鏈腑鍒犻櫎锛屼互渚縩et.createServer濮嬬粓鍒涘缓涓€涓熀浜?TCP鐨勬湇鍔″櫒銆傚浜嶶DP浣跨敤net.createllDPSocket ()鏉ヤ唬鏇裤€?杩斿洖 銉籪or net.tcp -netserver瀛愭ā鍧?銉籪or net.udp - net.udpsocket瀛愭ā鍧?渚?net.createServer(net.TCP, 30) 鈥?30s timeout 涔熷彲浠ョ湅鐪?net 銉?createConnection() , net.createUDPSocket() net.createUDPSocket () 鍒涘缓涓€涓猆DP濂楁帴瀛椼€?鍙ユ硶 net . createUDPSocket() 鍙傛暟 娌℃湁 杩斿洖 net.udpsocket 浜庢ā鍧?涔熷彲浠ョ湅鐪?net 銉?createConnection() net.multicastJoin () 鍔犲叆缁勬挱缁?鍙ユ硶 net.multicastJoin(if_ip4 multicast_ip) 鍙傛暟 -if_ip鍖呭惈鎺ュ彛ip鐨勫瓧绗︿覆鍔犲叆缁勬挱缁勩€傗€渁ny鈥濇垨鈥溾€濆奖鍝嶆墍鏈夋帴鍙c€?鈥?multicast_ip鐨勫洟闃熷姞鍏?杩斿洖 nil net.multicastLeave () 绂诲紑缁勬挱缁勩€?鍙ユ硶 net.multicastLeave(if_ipj multicast_ip) 鍙傛暟 -if_ip鍖呭惈鎺ュ彛ip鐨勫瓧绗︿覆绂诲紑缁勬挱缁勩€?any鈥濇垨鈥?褰卞搷鎵€鏈夋帴鍙c€?銉籱ulticast_ip璇ョ粍绂诲紑 杩斿洖 nil net.server 妯″潡 net.server锛氬叧闂?) 鍏抽棴鏈嶅姟鍣ㄣ€?鍙ユ硶 net.server.close() 娌℃湁 杩斿洖 nil 渚?鈥揷reates a server sv = net.createServer(net.TCP, 30) 鈥揹oses the server sv:close() 涔熷彲浠ョ湅鐪?net.createServer() net.server锛氬惉() 浠巌p鍦板潃渚﹀惉绔彛銆?鍙ユ硶 net.server.listen([port][ip],function(net.socket)) 鍙傛暟 鈥ort绔彛鍙凤紝鍙互鐪佺暐(闅忔満绔彛灏嗚閫変腑) -ip IP鍦板潃瀛楃涓诧紝鍙互鐪佺暐 鈥unction (net. socket)鍥炶皟鍑芥暟锛屽鏋滆繛鎺ユ垚鍔熷垱寤猴紝鍒欎紶閫掔粰璋冪敤鑰呭嚱鏁?杩斿洖 nil 渚?鈥搒erver Listens on 8銆傘€?if data receivedj print data to consoLe and send "heLLo --30s time out for a inactive client sv = net.cneateServer(net.TCP, 30) function receiver(sckj data) print(data) sck:close() end if sv then sv:listen(80> function(conn) conn:on("receive"j receiver) conn:send(鈥渉ello world鈥? end) end 涔熷彲浠ョ湅鐪?net.createServer() net.server锛?getaddr () 杩斿洖鏈嶅姟鍣ㄦ湰鍦板湴鍧€/绔彛銆?鍙ユ硶 net.server.getaddr() 鍙傛暟 娌℃湁 杩斿洖 port , ip (鎴栬€卬il, nil濡傛灉涓嶅惉) 涔熷彲浠ョ湅鐪?net.server:listen() net.socket 妯″潡 net.socket锛氬叧闂?) 鍏抽棴濂楁帴瀛椼€?鍙ユ硶 close() 鍙傛暟 娌℃湁 杩斿洖 nil 涔熷彲浠ョ湅鐪?net.createServer() net.socket锛?connect () 鐨?杩炴帴鍒拌繙绋嬫湇鍔″櫒銆?鍙ユ硶 connect(port, ip|domain) 鈥ort 绔彛鍙?鈥p IP鍦板潃鎴栧煙鍚嶅瓧绗︿覆 杩斿洖 nil 涔熷彲浠ョ湅鐪?net 銉?socket:on() net.socket锛?DNS () 涓轰富鏈哄悕鎻愪緵DNS瑙f瀽 鍙ユ硶 dns(domainj function(net.socketip)) 鍙傛暟 鈥?domain 鍩熷悕 銉籪unction(net.socket, ip)鍥炶皟鍑芥暟銆傜涓€涓弬鏁版槸濂楁帴瀛楋紝绗簩涓弬鏁版槸IP鍦板潃浣滀负 瀛楃涓层€?杩斿洖 nil sk = net.createConnection(net.TCP, 0) sk:dns(鈥渨ww.nodemcu.com鈥? function(conn, ip) print(ip) end) sk = nil 涔熷彲浠ョ湅鐪?net . createServer() net.socket锛?getPeer () H 妫€绱㈣繙绋嬪绔殑绔彛鍜宨p銆?鍙ユ硶 getpeer() 鍙傛暟 娌℃湁 杩斿洖 port 锛?ip (鎴栬€卬il, nil濡傛灉娌℃湁杩炴帴) net.socket锛?getaddr () 妫€绱㈡湰鍦扮鍙e拰濂楁帴瀛楃殑ip銆?鍙ユ硶 getaddr() 鍙傛暟 娌℃湁 杩斿洖 port , ip (鎴栬€卬il, nil濡傛灉娌℃湁杩炴帴) net.socket锛氫繚鎸?) 閫氳繃鍙戝嚭闃绘TCP鎺ユ敹鍔熻兘鐨勮姹傛潵闄愬埗鏁版嵁鎺ユ敹銆傛璇锋眰涓嶇珛鍗崇敓鏁堬紝Espressif寤鸿鍦ㄤ繚鐣?5 1460瀛楄妭鐨勫唴瀛樻椂璋冪敤瀹冦€?鍙ユ硶 hold() 鍙傛暟 娌℃湁 杩斿洖 nil 涔熷彲浠ョ湅鐪?net , socket:unhold() net.socket锛?涓?) 娉ㄥ唽鐗瑰畾浜嬩欢鐨勫洖璋冨嚱鏁般€?鍙ユ硶 on(eventj function()) 鍙傛暟 銉籩vent瀛楃涓诧紝鍙互鏄€滆繛鎺?锛?閲嶆柊杩炴帴鈥濓紝鈥滄柇寮€鈥濓紝鈥滄帴鏀垛€濇垨鈥滃彂閫佲€?鈥?function (net. socket [ j string])鍥炶皟鍑芥暟銆傚彲浠?nil 鍒犻櫎鍥炶皟銆?鍥炶皟鏃冲紵涓€涓弬鏁版槸浼氭帴瀛椼€?銉诲鏋滀簨浠舵槸鈥滄帴鏀垛€濓紝鍒欑浜屼釜鍙傛暟鏄互瀛楃涓插舰寮忔帴鏀剁殑鏁版嵁銆?-濡傛灉浜嬩欢鏄€滄柇寮€"鎴栤€滈噸鏂拌繛鎺モ€濓紝鍒欑浜屼釜鍙傛暟鏄敊璇唬鐮併€?濡傛灉鎸囧畾浜嗛噸鏂拌繛鎺ヤ簨浠讹紝鍒欐柇寮€鍙帴鏀垛€滄甯稿叧闂€濅簨浠躲€?鍚﹀垯锛屾墍鏈夎繛鎺ラ敊璇?姝e父鍏抽棴)浼犻€掑埌鏂紑杩炴帴浜嬩欢銆?杩斿洖 nil 渚?srv = net.createConnection(net.TCP, 0) srv:on("receive"function(sckj c) print漏 end) 鈥?Wait for connection before sending. srv:on("connection"j function(sck> c) 鈥?Connection: close1 rather than 'Connection: keep-aLive1 to have server --initiate a close of the connection after final response (frees memory --earlier here)https://tooLs.ietf.org/htmL/rfc7230#section-6.6 sck:send("GET /get HTTP/1.l\r\nHost: httpbin.org\r\nConnection: close\r\nAccep- end) srv:connect(80,鈥渉ttpbin.org鈥? 鉂舵敞鎰?璇eceive浜嬩欢琚Е鍙戞瘡涓綉缁滃抚锛佸洜姝わ紝濡傛灉鍙戦€佸埌璁惧鐨勬暟鎹秴杩囦簡 1460瀛楄妭(浠?浠ュお缃戝抚澶у皬瀵煎嚭)锛屽畠灏嗕細瑙﹀彂涓嶆涓€娆°€傚彲鑳借繕鏈夊叾浠栨儏鍐典笅浼犲叆鐨勬暟鎹湪澶氫釜甯т腑 鍒嗗壊(渚嬪HTTP POST multipart/form-data )銆傛偍闇€瑕佹墜鍔ㄧ紦鍐叉暟鎹苟鎵惧埌纭畾鏄惁 鏀跺埌鎵€鏈夋暟鎹殑鏂规硶銆?local buffer = nil srv:on("receive"function(sckJ c) if buffer == nil then buffer = c else buffer = buffer 鈥?c end end) 鈥搕hrottLing could be implemented using socket:hoLd() 鈥揺xampLe: https://github.com/nodemcu/nodemcu-firmware/bLob/moster/Lua_exampLesJ 涔熷彲浠ョ湅鐪?鈥et.createServer() 鈥et . socket:hold() net.socket锛氬彂閫?) 灏嗘暟鎹彂閫佸埌杩滅▼瀵圭瓑銆?send(string[> function(sent)]) sck:send(data, fnA) 鍦ㄥ姛鑳戒笂绛夊悓浜?sck:send(data) sck:on(,lsent11, fnA)銆?鍙傛暟 鈥tring瀛楃涓蹭腑鐨勬暟鎹皢琚彂閫佸埌鏈嶅姟鍣?鈥unction(sent)鐢ㄤ簬鍙戦€佸瓧绗︿覆鐨勫洖璋冨嚱鏁?杩斿洖 nil 娉ㄦ剰 send()鐢变簬SDK灏嗙綉缁滆姹傝涓哄崟鐙殑浠诲姟锛屽洜姝や笉鑳戒繚璇佽繛缁娆¤皟鐢?閫氬父涓嶄細)銆?鐩稿弽锛岃璁㈤槄濂楁帴瀛椾笂鐨?鍙戦€?浜嬩欢锛屽苟鍦ㄨ鍥炶皟涓彂閫佸叾浠栨暟鎹?鎴栧叧闂?銆傝鎯呰鍙傞槄# 730o 渚?srv = net.createServer(net.TCP) function receiver(sckj data) local response = {} 鈥搃f you鈥檙e sending back HTML over HTTP yourLL want something Like this instei --Local response = {"HTTP/1.0 200 OK\r\nServer: NodeMCU on ESP8266\r\nContent response[#response + 1] = 鈥渓ots of data鈥?response[#response + 1] = 鈥渆ven more data鈥?response[#response + 1] = 鈥渆.g. content read from a file鈥?鈥搒ends and removes the first eLement from the 'response 1 tabLe local function send(localsocket) if #response > 0 then localsocket:send(table , remove(response, 1)) else localsocket:close() response = nil end end 鈥搕riggers the send() function again once the first chunk of data was sent sck:on(鈥渟ent鈥? send) send(sck) end srv:listen(80j function(conn) conn:on(鈥渞eceive鈥? receiver) end) 濡傛灉浣犳病鏈夋垨鑰呬笉鑳戒竴鐩翠繚瀛樹綘鍦ㄥ唴瀛樹腑鍙戝洖鐨勬墍鏈夋暟鎹紙璁颁綇杩檙esponse鏄竴涓仛 鍚堬級锛屼綘鍙互浣跨敤鏄惧紡鐨勫洖璋冿紝鑰屼笉鏄儚杩欐牱寤虹珛涓€涓〃锛?sck:send(header, function() local datal = "some large chunk of dynamically loaded data sck:send(datalj function() local data2 = 鈥渆ven more dynamically loaded data鈥?sck:send(data2j function(sk) sk:close() end) end) end) 涔熷彲浠ョ湅鐪?net . socket:on() net.socket锛?TTL () 鏇存敼鎴栨绱㈠鎺ュ瓧涓婄殑鐢熷瓨鏃堕棿鍊笺€?鍙ユ硶 鍙傛暟 -tti (鍙€?鏂扮殑鐢熷瓨鏃堕棿鍊?杩斿洖 褰撳墠/鏂扮殑tti鍊?渚?sk = net.createConnection(net.TCP, 0) sk:connect(80, 鈥?92.168.1.1鈥? sk:ttl(l) 鈥?restrict frames to singLe subnet 涔熷彲浠ョ湅鐪?net 銉?createConnection() net.socket锛氬彇娑堜繚鐣?) 閫氳繃鎾ら攢鍓嶉潰鐨勬柟娉曟潵瑙i櫎瀵筎CP鎺ユ敹鏁版嵁鐨勯樆姝oid()銆?鍙ユ硶 unhold() 鍙傛暟 娌℃湁 杩斿洖 nil 涔熷彲浠ョ湅鐪?net . socket:hold() netudpsocket 妯″潡 璇疯浣忥紝涓嶵CP鐩告瘮锛孶DP鏄棤杩炴帴鐨勩€傚洜姝わ紝瀵逛簬杩欎釜妯″潡涓殑TCP/UDP鍑芥暟锛屽瓨鍦ㄤ竴涓?灏忕殑浣嗘槸鑷劧鐨勪笉鍖归厤銆傝櫧鐒朵綘浼氫负TCP璋冪敤netcreateConnection (),浣嗘槸瀹冩槸 net.createllDPSocket () 鈻?鍏朵粬鍊煎緱娉ㄦ剰鐨勬槸锛?-UDP濂楁帴瀛楁病鏈夎listen鍑芥暟鐨勮繛鎺ュ洖璋冦€?-UDP濂楁帴瀛楁病鏈塩onnect鍑芥暟銆傝繙绋婭P鍜岀鍙e洜姝ら渶瑕佸湪涓畾涔塻end()銆?銉籙DP濂楁帴瀛楃殑receive鍥炶皟data鍙傛暟鍚庢敹鍒扮鍙?IP銆?net.udpsocket锛?鍏抽棴() 鍏抽棴UDP濂楁帴瀛椼€?璇硶鍜屽姛鑳界浉鍚宯et.socket:close()銆?net.udpsocket锛氬惉() 浠巌p鍦板潃渚﹀惉绔彛銆?璇硶鍜屽姛鑳界被浼糿et.server:listen()锛屼絾娌℃湁鎻愪緵鍥炶皟鍙傛暟銆?net.udpsocket锛氫笂() 娉ㄥ唽鐗瑰畾浜嬩欢鐨勫洖璋冨嚱鏁般€?璇硶鍜屽姛鑳界被浼间簬net.socket:on()銆備絾鏄紝鍙湁鈥滄帴鏀垛€濓紝"鍙戦€佲€濆拰鈥渄ns鈥濇槸鏀寔鐨勪簨浠躲€?銆傛敞鎰?璇eceive鍥炶皟鎺ユ敹port鍜宨p涔嬪悗鐨刣ata璇存硶銆?net.udpsocket锛?鍙戦€?() 灏嗘暟鎹彂閫佸埌鐗瑰畾鐨勮繙绋嬪绛夈€?鍙ユ硶 send(portip, data) 鈥ort杩滅▼濂楁帴瀛楃憺鍙?鈥p杩滅▼濂楁帴瀛桰P 鈥ata鏈夋晥杞借嵎鍙戦€?杩斿洖 nil 渚?udpSocket = net.c reateUDPSocket() udpSocket:listen(5000) udpSocket:on("receive"function(s, data, portip) print(string.format("received 鈥?s鈥?from %s:%d"4 data, ip, port)) s:send(port4 ip> 鈥渆cho:鈥濄兓銉?data) end) port, ip = udpSocket:getaddr() print(string.format("local UDP socket address / port: %s:%d鈥? ip, port)) 鍦?nix绯荤粺涓婏紝鐒跺悗鍙互閫氳繃鍙戝竷鏉ユ祴璇?echo -n 鈥渇oo鈥?| nc -wl -u 5000 net.udpsocket锛?DNS () 涓轰富鏈哄悕鎻愪緵DNS瑙f瀽 璇硶鍜屽姛鑳界浉鍚宯et.socket:dns()銆?net.udpsocket锛?getaddr () 妫€绱㈡湰鍦扮鍙e拰濂楁帴瀛楃殑I p銆?璇硶鍜屽姛鑳界浉鍚宯et .socket: getaddr () 鈻?net.udpsocket锛?TTL () 鏇存敼鎴栨绱㈠鎺ュ瓧涓婄殑鐢熷瓨鏃堕棿鍊笺€?璇硶鍜屽姛鑳界浉鍚宯et .socket :ttl()銆?net.dns 妯″潡 net.dns.getdnsserver () 鑾峰彇鐢ㄤ簬瑙f瀽涓绘満鍚嶇殑DNS鏈嶅姟鍣ㄧ殑IP鍦板潃銆?鍙ユ硶 net.dns.getdnsserver(dns_index)

鍙傛暟 dns_index鑾峰彇鍝釜DNS鏈嶅姟鍣?鑼冨洿0銆?) 杩斿洖 DNS鏈嶅姟鍣ㄧ殑IP鍦板潃(瀛楃涓? 渚?print(net.dns.getdnsserver(0)) 鈥?208.67.222.222 print(net.dns.getdnsserver(l)) 鈥?nil

print(net.dns.getdnsserver(0)) 鈥?8.8.8.8 print(net.dns.getdnsserver(1)) 鈥?192.168.1.252 涔熷彲浠ョ湅鐪?net.dns:setdnsserver() net.dns.resolve () 灏嗕富鏈哄悕瑙f瀽涓篒P鍦板潃銆備笉闇€瑕佸儚net. socket.dns()銆?鍙ユ硶 net.dns.resolve(host, function(sk, ip)) 鍙傛暟 銉籬ost涓绘満鍚嶆潵瑙e喅 鈥?function(sk, ip)鍚嶇О瑙f瀽鍚庤皟鐢ㄧ殑鍥炶皟銆俿k鎬绘槸 杩斿洖 nil net.dns.resolve(鈥渨ww.google.com鈥?鍗僽nction(sk, ip) if (ip == nil) then print(鈥淒NS fail!鈥? else print(ip) end end) 涔熷彲浠ョ湅鐪?net.dns.setdnsserver () 璁剧疆鐢ㄤ簬瑙f瀽涓绘満鍚嶇殑DNS鏈嶅姟鍣ㄧ殑IP銆傞粯璁わ細resolverl.opendns.com (208.67.222.222)銆?/p>

鏂囨。銆嬭嫳璇€濇ā鍧椼€嬭妭鐐?鑺傜偣妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 鎯呰妭涓瓧 Zeroday Zeroday node.c

鑺傜偣妯″潡鎻愪緵瀵圭郴缁熺骇鍔熻兘鐨勮闂紝濡傜潯鐪狅紝閲嶅惎浠ュ強鍚勭淇℃伅鍜孖D銆?node.bootreason () 杩斿洖鍚姩鍘熷洜鍜屾墿灞曢噸缃俊鎭€?node.chipid () 杩斿洖ESP鑺墖ID銆?node.compile () 灏嗕竴涓狶ua鏂囨湰鏂囦欢缂栬瘧鎴怢ua瀛楄妭鐮侊紝骞朵繚瀛樹负銆?node.dsleep () 杩涘叆娣卞害鐫$湢妯″紡锛岃秴鏃堕啋鏉ャ€?nodeflashid () 杩斿洖闂瓨鑺墖ID銆?node.flashsize () 浠ュ瓧鑺備负鍗曚綅杩斿洖闂瓨鑺墖澶у皬銆?nodeheap () 浠ュ瓧鑺備负鍗曚綅杩斿洖褰撳墠鍙敤鐨勫爢澶у皬銆?nodeJnfo () 杩斿洖NodeMCU鐗堟湰锛宑hipid, flashid,闂厜澶у皬锛岄棯鍏夋ā寮忥紝闂?鍏夌伅閫熷害銆?nodeinput () 鍚慙ua瑙i噴鍣ㄦ彁浜や竴涓瓧绗︿覆銆?nodeoutput () 灏哃ua瑙i噴鍣ㄨ緭鍑洪噸瀹氬悜鍒板洖璋冨嚱鏁般€?node.readvdd33 ()-涓嶆帹 鑽愪娇鐢?杞Щ鍒癮dc銆?node.restart () 閲嶆柊鍚姩鑺墖銆?noderestore () node.setcpufreq () 鏇存敼宸ヤ綔鐨凜PU棰戠巼銆?nodesleep () 灏哊odeMCU缃簬杞诲害鐫$湢妯″紡浠ュ噺灏戠數娴佹秷鑰椼€?node.stripdebug () 鎺у埗鑺傜偣鏈熼棿淇濆瓨鐨勮皟璇曚俊鎭殑鏁伴噺銆?nodeosprint () 鎺у埗鏄惁鎵撳嵃Espressif SDK鐨勮皟璇曡緭鍑恒€?noderandom () 杩欏氨鍍忔暟瀛︿竴鏍枫€?node.egc.setmode () 璁剧疆绱ф€ュ瀮鍦炬敹闆嗗櫒妯″紡銆?/p>

node.bootreason 锛堬級 杩斿洖鍚姩鍘熷洜鍜屾墿灞曢噸缃俊鎭€?杩斿洖鐨勭涓€涓€兼槸鍘熷浠g爜锛岃€屼笉鏄渶杩慡DK涓紩鍏ョ殑鏂扳€滈噸缃俊鎭€濅唬鐮併€備环鍊艰鏄細 -1,寮€鏈?-2,閲嶇疆锛堣蒋浠讹紵锛?-3,閫氳繃澶嶄綅寮曡剼杩涜纭欢澶嶄綅 -4, WDTM浣嶏紙鐪嬮棬鐙楄秴鏃讹級 杩斿洖鐨勭浜屼釜鍊兼槸鎵╁睍鐨勫浣嶅師鍥犮€備环鍊艰鏄細 鈥?0,寮€鏈?-1,纭欢鐪嬮棬鐙楀浣?-2,寮傚父澶嶄綅 -3,杞欢鐪嬮棬鐙楀浣?-4,杞欢閲嶅惎 -5,浠庢繁搴︾潯鐪犱腑閱掓潵 銉?,澶栭儴澶嶄綅 涓€鑸潵璇达紝鎵╁睍閲嶇疆鍘熷洜鍙栦唬浜嗗師濮嬬爜銆傚師濮嬩唬鐮佷粎淇濈暀涓哄悜鍚庡吋瀹广€傚浜庢柊搴旂敤绋嬪簭锛屽己 鐑堝缓璁娇鐢ㄦ墿灞曢噸缃師鍥犮€?鍦ㄥ浣嶅師鍥? 锛堝紓甯稿浣嶏級鐨勬儏鍐典笅锛岃繑鍥炲寘鍚穿婧冧俊鎭殑闄勫姞鍊笺€傝繖浜涗緷娆℃槸EXCCAUSE, EPCI, EPC2, EPC3, EXCVADDR鍜孌EPC銆?鍙ユ硶 node.bootreason() 鍙傛暟 娌℃湁 杩斿洖 rawcodej reason [, exccause^ epcl^ epc2, epc3, excvaddr3 depc ] 渚?_j reset_reason = node.bootreason() if reset_reason == 0 then print(鈥淧ower UP!鈥? end node.chipid () 杩斿洖ESP鑺墖ID銆?node.chipid() 鍙傛暟 娌℃湁 杩斿洖 鑺墖ID (缂栧彿) node.compile () 灏哃ua鏂囨湰鏂囦欢缂栬瘧涓篖ua瀛楄妭鐮侊紝骞跺皢鍏朵繚瀛樹负銆峜鏂囦欢銆?鍙ユ硶 node.compile(鈥渇ile.lua鈥? 鍙傛暟 filename Lua鏂囨湰鏂囦欢鐨勫悕绉?杩斿洖 nil 渚?f ile. open (鈥渉ello. lua,/,w+鈥? file.writeline([[print(鈥渉ello nodemcu鈥?]]) file.writeline([[print(node.heap())]]) file.close() node.compile(鈥渉ello.lua鈥? dofileChello.lua") dofileChello.lc") node.dsleep () 杩涘叆娣卞害鐫$湢妯″紡锛岃秴鏃堕啋鏉ャ€?鏈€澶х潯鐪犳椂闂翠负4294967295US,绾?1鍒嗛挓銆傝繖鏄竴涓猄DK闄愬埗銆?016骞?鏈?鏃ヤ箣鍓嶇殑鍥轰欢 鐨勬渶闀垮仠鐣欐椂闂寸害涓?5鍒嗛挓銆?銆傝鍛?姝ゅ姛鑳藉彧鑳藉湪esp8266PIN32 (RST)鍜孭IN8 (XPD_DCDC鍙堝悕GPIO16)杩炴帴鍦ㄤ竴璧风殑 鎯呭喌涓嬩娇鐢ㄣ€備娇鐢ㄧ潯鐪?0)灏嗕笉浼氳缃敜閱掑畾鏃跺櫒锛屽皢GPIO杩炴帴鍒板紩鑴歊ST,鑺墖灏嗛€?杩囧紩鑴歊ST鐨勪笅闄嶆部鍞ら啋銆?鍙ユ硶 node.dsleep(us, option, instant) -us鏁板瓙锛堟暣鏁帮級鎴杗il浠ュ井鏉负鍗曚綅鏃崇潯鐪犳椂闂淬€傚鏋淯S == 0 ,瀹冨皢姘疯繙鐫$湢銆傚 鏋渦s == nil ,涓嶄細璁剧疆鐫$湢鏃堕棿銆?-option鏁板瓧锛堟暣鏁帮級鎴杗il o濡傛灉nil瀹冨皢浣跨敤鏈€鍚庣殑娲诲姩璁剧疆浣滀负榛樿閫夐」銆?銆?, init鏁版嵁瀛楄妭108鏄湁浠峰€肩殑 0 >0, init鏁版嵁瀛楄妭108鏄棤浠峰€肩殑 o 0, RF_CAL鏄惁鍦ㄦ繁搴︾潯鐪犲敜閱掍箣鍚庡彇鍐充簬鍒濆鍖栨暟鎹瓧鑺?08 掳 1, RF_CAL娣卞害鐫¢啋鍚庯紝浼氭湁澶х數娴?掳 2,娣卞害鐫¢啋鍚庢病鏈塕F.CAL,鍙湁灏忕數娴?鈻?4,娣卞害鐫$湢鍞ら啋鍚庣鐢≧F,灏卞儚璋冨埗瑙h皟鍣ㄧ潯鐪犱竴鏍凤紝浼氭湁鏈€灏忕殑鐢垫祦 -instant鏁板瓧锛堟暣鏁帮級鎴杗il銆傚鏋滃瓨鍦ㄤ笖闈為浂锛屽垯鍦ㄨ繘鍏ユ繁搴︾潯鐪犱箣鍓嶄笉瑕佷娇鐢ㄦ甯?鐨勫闄愭椂闂淬€傝繖鏄竴涓緢澶х▼搴︿笂娌℃湁璁板綍鐨勫姛鑳斤紝鍙槸鍦‥spressif鐨勪綆鍔熻€楄В鍐虫柟妗堟枃 妗o紙绗?.5绔狅級涓畝鍗曟彁鍙娿€?杩斿洖 nil 渚?鈥揹o nothing node.dsleep() 鈥搒Leep 銆僺 node.dsleep(1000000) 鈥搒et sLeep optionj then sleep ps node.dsleep(1000000j 4) 鈥搒et sLeep option only node.dsleep(nil4) 涔熷彲浠ョ湅鐪?鈥ifi.suspend() 鈥ifi.resume() 鈥ode.sleep() node.flashid 锛堬級 杩斿洖闂瓨鑺墖ID銆?鍙ユ硶 node.flashid锛堬級 鍙傛暟 娌℃湁 杩斿洖 闂厜ID 锛堟暟瀛楋級 node.flashsize () 浠ュ崜鑺備负鍗曞緟鏉垮悓KI鍦ㄨ姱鐗囧ぇ鍒€銆?鍦‵SP-19绛?MR娆婂瀮鍗?鏉垮悓鎸囩殝41943n4 = 4C9AKR. node.flashsize() 鍙傛暟 娌℃湁 杩斿洖 闂瓨澶у皬锛堝瓧鑺傦級锛堟暣鏁帮級 node.heap 锛堬級 浠ュ瓧鑺備负鍗曚綅杩斿洖褰撳墠鍙敤鐨勫爢澶у皬銆傝娉ㄦ剰锛岀敱浜庡垎娈碉紝姝ゅぇ灏忕殑瀹為檯鍒嗛厤鍙兘涓嶅彲鑳姐€?鍙ユ硶 node.heap锛堬級 鍙傛暟 娌℃湁 杩斿洖 浠ュ瓧鑺備负鍗曚綅鐨勭郴缁熷爢澶у皬锛堟暟瀛楋級 node.info 锛堬級 杩斿洖NodeMCU鐗堟湰锛宑hipid, flashid,闂厜澶у皬锛岄棯鍏夋ā寮忥紝闂厜鐏€熷害銆?鍙ユ硶 node.info锛堬級 鍙傛暟 娌℃湁 杩斿洖 鈥a jorVer 锛堟暟锛?鈥inorVer 锛堟暟锛?鈥evVer 锛堟暟锛?鈥hipid 锛堟暟锛?鈥lashid 锛堟暟锛?鈥lashsize 锛堟暟锛?鈥lashmode 锛堟暟锛?鈥lashspeed 锛堟暟锛?majorVer, minorVer, devVerchipid, flashid3 flashsizej flashmode, flashspeed = i print(鈥淣odeMCU 鈥溾€ajorVer鈥︹€?鈥濃€inorVer鈥︹€?鈥濃€evVer) node.input () 鍚慙ua瑙i噴鍣ㄦ彁浜や竴涓瓧绗︿覆銆傜被浼间簬pcall(loadstring(str)),浣嗘病鏈夊崟琛岄檺鍒躲€?鉂舵敞鎰?杩欎釜鍑芥暟鍙湁鍦ㄤ粠鍥炶皟涓皟鐢ㄦ椂鎵嶆湁鏁堟灉銆傜洿鎺ュ湪鎺у埗鍙颁笂浣跨敤瀹冧笉璧蜂綔鐢╫ 鍙ユ硶 node.input(str) 鍙傛暟 str Lua澶у潡 杩斿洖 skionCreceive", function(conn, payload) node.input(payload) end) 涔熷彲浠ョ湅鐪?node.output() node.output () 灏哃ua瑙i噴鍣ㄨ緭鍑洪噸瀹氬悜鍒板洖璋冨嚱鏁般€備篃鍙互灏嗗叾鎵撳嵃鍒颁覆琛屾帶鍒跺彴銆?鉂惰鍛?涓嶈涓嶈瘯鍥緋rint()鎴栬鍙慙ua瑙i噴浠庡洖璋冨嚱鏁颁腑浜х敓杈撳嚭銆傝繖鏍峰仛浼氬鑷存棤闄愰€掑綊锛屽苟 瀵艰嚧鐪嬮棬鐙楄Е鍙戦噸鍚€?鍙ユ硶 node.output(function(str)serial_debug) 鍙傛暟 鈥utput_fn(str) 涓€涓嚱鏁版帴鍙楁瘡涓緭鍑轰负Str,骞跺彲浠ュ皢杈撳嚭鍙戦€佸埌涓€涓鎺ュ瓧(鎴栬€呬竴 涓枃浠?銆?鈥erial_debug 1杈撳嚭涔熸樉75鍦ㄤ覆琛屻€?锛氭病鏈変覆琛岃緭鍑恒€?杩斿洖 nil function tonet(str) sk:send(str) end node.output(tonet1) 鈥?seriaL aLso get the Lua output. 鈥揳 simpLe teLnet server s=net.cneateServer(net.TCP) s:listen(2323,function漏 con_std = c function s_output(str) if(con_std^=nil) then con_std:send(str) end end node.output(s_output, 0) 鈥?re-direct output to function s_ouput. c:on(nreceiveHjfunction(Cj1) node.input(l) 鈥?works Like pcaLL(Loadstring(L)) but support muL end) c :on(鈥渄isconnection鈥橽function漏 con_std = nil node.output(nil) 鈥?un-regist the redirect output function, output i end) end) 涔熷彲浠ョ湅鐪?node.input() node.readvdd33 ()-涓嶆帹鑽愪娇鐢?绉诲姩鍒?adc.readvdd33()銆?node.restart () 閲嶆柊鍚姩鑺墖銆?鍙ユ硶 node.restart() 鍙傛暟 娌℃湁 杩斿洖 nil node.restore () 浣跨敤SDK鍑芥暟灏嗙郴缁熼厤缃仮澶嶄负榛樿鍊約ystem_restore(),鍦ㄦ枃妗d腑瀵规杩涜浜嗘弿杩帮細 閲嶇疆涓嬪垪API鐨勯粯璁よ 缃細 wifi_station_set_auto_connect , wifi_set_phy_mode , wifi_softap_set_config 鐩稿叧鐨勶紝wifi_station_set_config鐩稿叧鐨勶紝wifi_set_opmode浠ュ強閫氳繃璁板綍鍙楀奖鍝?浜虹殑淇℃伅 #define AP_CACHE銆?鍙ユ硶 node.restore() 鍙傛暟 娌℃湁 杩斿洖 nil 渚?node, restore銆?node.restart() 鈥?ensure the restored settings take effect node.setcpufreq () 鏇存敼宸ヤ綔鐨凜PU棰戠巼銆?鍙ユ硶 node.setcpufreq(speed) 鍙傛暟 speed 甯告暟鈥滆妭鐐?CPU80MHZ"鎴栤€滆妭鐐?CPU160MHZ鈥?杩斿洖 鐩爣CPU棰戠巼(鏁伴噺) 渚?node.setcpufreq(node.CPU80MHZ) node.sleep () 灏哊odeMCU缃簬杞诲害鐫$湢妯″紡浠ュ噺灏戠數娴佹秷鑰椼€?-濡傛灉wifi鎸傝捣锛孨odeMCU涓嶈兘杩涘叆杞诲害鐫$湢妯″紡銆?-鎵€鏈夋椿鍔ㄧ殑瀹氭椂鍣ㄥ皢琚殏鍋滐紝鐒跺悗鍦∟odeMCU浠庣潯鐪犵姸鎬佸敜閱掓椂鎭㈠銆?-褰揘odeMCU浠庣潯鐪犱腑閱掔背鏃讹紝浠讳己鍏堝墠鏅冲仠鏃冲畾鏃跺櫒閮藉皢鎭㈠銆?鍙ユ硶 node.sleep锛堬經wake_gpio[, duration^ int_type, resume_cb, preserve_mode]锝濓級 鍙傛暟 銉籨uration鐫$湢鎸佺画鏃堕棿浠ュ井绉掞紙|JS锛変负鍗曚綅銆傚鏋溿€傛寚瀹氫簡鐫$湢鎸佺画鏃堕棿锛屾殏鍋滃皢鏄?涓嶇‘瀹氱殑锛堣寖鍥达細0鎴?0000-2684354543锛堛€傦細 4锛?28.000454锛夛級 -wake.pin 1-12,寮曡剼杩炴帴鍞ら啋涓柇銆傝娉ㄦ剰锛屽紩鑴? 锛圙PIO 16锛変笉鏀寔涓柇銆?銉诲鏋滅潯鐪犳椂闂翠笉纭畾锛屽垯wake_pin蹇呴』鎸囧畾 鈥㈣鍙傝€僄PIO module鏇村鍏充簬pin map鐨勪俊鎭€?銉籭nt_type鎮ㄦ兂瑕佸敜閱掔殑涓柇绫诲瀷銆傦紙鍙€夛紝榛樿锛歯ode.INT_LOW 锛?-鏈夋晥鐨勪腑鏂ā寮忥細 銉籲ode.INT_UP涓婂崌鐨勪紭鍔?銉籲ode.INT_DOWN涓嬮檷鐨勮竟缂?銉籲ode.INT_BOTH 涓よ竟 銉籲ode.INT_LOW褰虫皭绾?銉籲ode.INT_HIGH 楂樻按骞?-resume_cb褰揥iFi浠庢殏鍋滅姸鎬佸敜閱掓椂鎵ц鍥炲彨銆傦紙鍙€夌殑锛?銉籶reserve_mode閫氳繃鑺傜偣浼戠湢鏉ヤ繚鎸佸綋鍓嶇殑WiFi妯″紡銆傦紙鍙€夛紝榛樿锛歵rue锛?銉诲鏋滀负true,鍒欏湪NodeMCU鎭㈠鏃讹紝Station鍜孲tationAP妯″紡灏嗚嚜鍔ㄩ噸鏂拌繛鎺ュ埌鍏堝墠閰嶇疆 鐨勬帴鍏ョ偣銆?-濡傛灉涓篺alse,鍒欎涪寮僕iFi妯″紡骞剁寮€NodeMCU wifi.NULL_MODE銆俉iFi妯″紡灏嗗湪閲嶅惎鏃?鎭㈠鍒板師濮嬫ā寮忋€?杩斿洖 nil

鈥揚ut NodeMCU in Light sleep mode indefiniteLy with resume caLLback and waPe inti cfg={} cfg.wake_pin=3 cfg.resume_cb=function() print(鈥淲iFi resume鈥? end node.sleep(cfg) 鈥揚ut NodeMCU in Light sleep mode with interruptj resume caLLback and discard Mil cfg={} cfg銉粀ake_pin=3 --GPIO0 cfg.resume_cb=function() print(鈥淲iFi resume鈥? end cfg.preserve_mode=false node.sleep(cfg) 鈥揚ut NodeMCU in Light sLeep mode for cfg={} cfg.duration=1010001000 cfg.resume_cb=function() print("WiFi node.sleep(cfg) 涔熷彲浠ョ湅鐪?鈥ifi.suspend() 鈥ifi.resume() 鈥ode.dsleep() node.stripdebug () 鎺у埗杩囩▼涓繚瀛樼殑璋冭瘯淇℃伅鐨勬暟閲弉ode.compile(),骞跺厑璁镐粠宸辩紪璇戠殑Lua浠g爜涓垹闄よ皟璇?淇℃伅銆?鍙帹鑽愮粰楂樼骇鐢ㄦ埛锛孨odeMCU鐨勯粯璁ゅ€煎嚑涔庨€傜敤浜庢墍鏈夌敤渚嬨€?鍙ユ硶 node.stripdebug([level[, function]]) 鍙傛暟 鈥evel O 1,涓嶈涓㈠純璋冭瘯淇℃伅 銆?,涓㈠純Local鍜孶pvalue璋冭瘯淇℃伅 鈻?3,涓㈠純Local, Upvalue鍜宭ine-number璋冭瘯淇℃伅 鈥unction 涓€涓紪璇戠殑鍑芥暟琚墺绂绘瘡涓猻etfenv闄や簡0鏄笉鍏佽鐨勩€?濡傛灉娌℃湁缁欏嚭鍙傛暟锛屽垯杩斿洖褰撳墠鐨勯粯璁よ缃€傚鏋滅渷鐣ュ嚱鏁帮紝杩欐槸鏈潵缂栬瘧鐨勯粯璁よ缃€傚嚱 鏁板弬鏁颁娇鐢ㄤ笌for鐩稿悓鐨勮鍒檚etfenvO銆?杩斿洖 濡傛灉璋冪敤娌℃湁鍙傛暟锛屽垯杩斿洖褰撳墠鐨勭骇鍒缃€傚惁鍒欙紝nil杩斿洖銆?渚?node.stripdebug(3) node.compile(鈥榖igstuff.lua鈥? 涔熷彲浠ョ湅鐪?node.compile() node.osprint () 鎺у埗鏄惁鎵撳嵃EspressifSDK鐨勮皟璇曡緭鍑恒€傝娉ㄦ剰锛屽彧鏈夊浐浠舵槸鍦ㄥ畾涔変簡 DEVELOPMENT.TOOLS鐨勬儏鍐典笅鎵嶅彲鐢ㄣ€?鍙ユ硶 node.osprint(enabled) 鍙傛暟 鈥?enabled杩欐槸瑕佷箞true鍚敤鎵撳嵃锛岃涔坒alse绂佺敤瀹冦€傞粯璁ゆ槸false銆?杩斿洖 娌℃湁 渚?node.osprint(true) node.random () 闄や簡瀹冧娇鐢ㄤ粠ESP8266纭欢娲剧敓鐨勭湡姝g殑闅忔満鏁颁箣澶栵紝鍏惰涓轰笌math.random鐩镐技銆傚畠杩斿洖鎵€ 闇€鑼冨洿鍐呯殑鍧囧寑鍒嗗竷鐨勬暟瀛椼€傚畠涔熼渶瑕佹敞鎰忔纭殑澶ц寖鍥淬€?瀹冨彲浠ラ€氳繃涓夌鏂瑰紡鏉ヨ皟鐢ㄣ€傚湪NodeMCU鐨勬诞鐐规瀯寤轰腑娌℃湁鍙傛暟锛屽畠浼氳繑鍥炰竴涓湪鍖洪棿 [0,1)涓叿鏈夊潎鍖€鍒嗗竷鐨勯殢鏈哄疄鏁般€傚綋浠呯敤涓€涓弬鏁拌皟鐢ㄦ暣鏁皀鏃讹紝瀹冭繑鍥炰竴涓暣鏁伴殢鏈烘暟x, 浣垮緱i<=x<=n銆備緥濡傦紝浣犲彲浠ラ殢鏈烘ā鎷熸浜$殑缁撴灉(6)-鏈€鍚庯紝鍙互鐢ㄤ袱涓暣鏁板弬鏁癐鍜寀 鏉ヨ皟鐢ㄩ殢鏈哄嚱鏁帮紝寰楀埌涓€涓吉闅忔満鏁存暟x,浣垮緱|<=x<=u銆?鍙ユ硶 node.random() node.random(n) node.random(lJ u) 鍙傛暟 -n鍙互杩斿洖鐨勪笉鍚屾暣鏁板€肩殑鏁伴噺-鍦?鍖呭惈)鑼冨洿鍐?鈥?n 銉?鑼冨洿鐨勪笅闄?-u鑼冨洿鐨勪笂闄?杩斿洖 鏆楀拰鏂板湪娲诲綋鐨勮尮:鐢倝涓€璇锋敞闊虫爠褰栨柊鈥㈠舰婧€娆㈡柤淇哄湪鏁曞皻鎰氬缓鍑虹増鏇癈L 渚?print ("I rolled a"j node.random(6)) node.egc 妯″潡 node.egc.setmode () 璁剧疆绱ф€ュ瀮鍦炬敹闆嗗櫒妯″紡銆侲GC鐧界毊涔︽彁渚涘叧浜嶦GC鐨勬洿澶氳缁嗕俊鎭€?鍙ユ硶 node.egc銉籹etmode(mode, [param]) 鍙傛暟 鈥ode 銆俷ode.egc.NOT_ACTlVE EGC涓嶆椿鍔紝鍦ㄤ綆鍐呭瓨鎯呭喌涓嬩笉浼氬己鍒舵敹闆嗗懆鏈?銆俷ode.egc.ON_ALLOC_FAILURE灏濊瘯鍒嗛厤涓€涓柊鐨勫唴瀛樺潡锛屽苟鍦ㄥ垎閰嶅け璐ユ椂杩愯鍨冨溇鍥?鏀跺櫒銆傚鏋滆繍琛屽瀮鍦炬恫闆嗗櫒鍚庡垎閰嶅け璐ワ紝鍒欏垎閰嶅櫒灏嗚繑鍥為敊璇€?銆俷ode. egc.ON_MEM_LIMIT褰揕ua鑴氭湰浣跨敤鐨勫唴瀛樿秴鍑轰笂闄愭椂杩愯鍨冨溇鍥炴敹鍣╨imit銆?濡傛灉杩愯鍨冨溇[鏀甸泦钀悗浠嶇劧鏃犳硶婊¤冻涓婇檺锛屽垯鍒嗛厤鍣ㄥ皢杩斿洖閿欒銆?o node.egc.ALWAYS鍦ㄦ瘡娆″垎閰嶅唴瀛樹箣鍓嶈繍琛屽瀮鍦惧洖鏀跺櫒銆傚鏋滆繍琛屽瀮鍦炬敹闆嗗櫒鍚庡垎閰?澶辫触锛屽垯鍒嗛厤鍣ㄥ皢杩斿洖閿欒銆傝繖绉嶆ā寮忓湪鑺傜渷鍐呭瓨鏂归潰闈炲父楂樻晥锛屼絾涔熸槸鏈€鎱㈢殑銆?鈥evel鍦ㄨ繖绉嶆儏鍐典笅 node.egc.ON_MEM_LIMIT , 杩欐寚瀹氫簡鍐呭瓨闄愬埗銆?杩斿洖 nil 渚?node.egc.setmode(node.egc.ALWAYS^ 4096) 鈥?This is the default setting at startup, node.egc.setmode(node.egc.ON_ALLOC_FAILURE) 鈥?This is the fastest activeEGC mode. node.task 妯″潡 node.task.post () 鍚敤涓€涓狶ua鍥炶皟鎴栦换鍔℃潵鍙戝竷鍙︿竴涓换鍔¤姹傘€傝娉ㄦ剰锛屾牴鎹ず渚嬶紝鍙互鍦ㄤ换浣曚换鍔′腑鍙戝竷 澶氫釜浠诲姟锛屼絾濮嬬粓棣栧厛鍙戦€佹渶楂樹紭鍏堢骇銆?濡傛灉浠诲姟闃熷垪宸叉弧锛屽垯浼氬紩鍙戦槦鍒楁弧閿欒銆?鍙ユ硶 node.task.post([task_priority]j function) 鏂囨。銆嬭嫳璇?妯″潡銆媜w (1-Wire) l銉籛ire妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 鎯呰妭涓瓧 Zeroday Zeroday ow.c 璇ユā鍧楁彁渚涗簡涓?-Wire鍣ㄤ欢閫氫俊鎬荤嚎绯荤粺涓€璧峰伐浣滅殑鍔熻兘銆?ow.check_crcl6 () 璁$畻1-Wire CRC16骞跺皢鍏朵笌鏀跺埌鐨凜RC杩涜姣旇緝銆?ow.crcl6 () 璁$畻Dallas Semiconductor鐨?16浣岰RC鏍¢獙鐮併€?ow.crc8 () 璁$畻Dallas Semiconductor鐨?浣岰RC,杩欎簺鐢ㄤ簬ROM鍜屾殏瀛樺瘎瀛樺櫒銆?ow.depower () 鍋滄寮鸿涓婅溅銆?ow.read () 璇诲彇涓€涓瓧鑺傘€?ow.read_bytes () 璇诲彇澶氫釜瀛楄妭銆?ow.reset () 鎵ц1-Wire澶嶄綅鍛ㄦ湡銆?ow.reset_search () 娓呴櫎鎼滅储鐘舵€侊紝浠ヤ究浠庡ご鍐嶆寮€濮嬨€?ow.search () 瀵绘壘涓嬩竴涓澶囥€?ow.select () 鍙戝嚭1-Wire ROM閫夋嫨鍛戒护銆?ow.setup () 浠ュ崟绾挎ā寮忚缃紩鑴氥€?ow.skip () 鍙戝嚭1-Wire ROM璺宠繃鍛戒护锛屼互瑙e喅鎬荤嚎涓婄殑鎵€鏈夐棶棰樸€?ow.target_search () 璁剧疆鎼滅储浠ユ熁鎵捐澶囩被鍨媐amily_code銆?ow.write () 鍐欎竴涓瓧鑺傘€?ow.write_bytes () 鍐欏叆澶氫釜瀛楄妭銆?/p>

ow.check_crcl6 () 璁$畻1 -WireCRC16骞跺皢鍏朵笌鏀跺埌鐨凜RC杩涜姣旇緝銆?鍙ユ硶 ow.check_crcl6(buf, invented_cnc0j inverted_crcl[, crc]) -buf瀛愮鐢冲€硷紝瑕佽绠楁棾鏁版嵁鍦ㄥ瓧绗︾敵涓鏌ュ拰 鈥nverted_crc0 鏀跺埌鐨?CRC 鐨?LSB 鈥nverted_crcl 鏀跺埌CRC鐨凪SB -crc CRC璧峰鍊?鍙€? 杩斿洖 濡傛灉CRC鍖归厤鍒欒繑鍥瀟rue,鍚﹀垯杩斿洖false ow.crcl6 () 璁$畻Dallas Semiconductor鐨?6浣岰RC鏍¢獙鐮併€傝繖鏄鏌讳粠璁稿1-Wire鍣ㄤ欢鏀跺埌鐨勬暟鎹殑瀹屾暣 鎬ф墍蹇呴渶鐨勩€傝娉ㄦ剰锛岃繖閲岃绠楃殑CRC涓嶆槸浠?-Wire缃戠粶鑾峰緱鐨勶紝鍘熷洜鏈変簩锛?LCRC琚€愪綅鍙嶈浆銆?2.鏍规嵁澶勭悊鍣ㄧ殑瀛楄妭椤哄簭锛屽弻瀛楄妭杩斿洖鍊肩殑浜岃繘鍒惰〃绀哄彲鑳戒笌鎮ㄤ粠1-Wire鑾峰緱鐨勪袱涓瓧鑺傜殑 瀛楄妭椤哄簭涓嶅悓銆?鍙ユ硶 ow.crcl6(buf[, crc]) 鍙傛暟 銉籦uf瀛楃涓插€硷紝瑕佽绠楃殑鏁版嵁鍦ㄥ瓧绗︿覆涓鏌ュ拰 -crc CRC璧峰鍊?鍙€? 杩斿洖 Dallas Semiconductor瀹氫箟鐨凜RC16 ow.crc8 () 璁$畻Dalias Semiconductor鐨?浣岰RC,杩欎簺鐢ㄤ簬ROM鍜屾殏瀛樺瘎瀛樺櫒銆?鍙ユ硶 ow.crc8(buf) 鍙傛暟 buf瀛楃涓插€硷紝瑕佽绠楃殑鏁版嵁鍦ㄥ瓧绗︿覆涓鏌ュ拰 杩斿洖 CRC缁撴灉涓哄瓧鑺?ow.depower () 鍋滄寮鸿涓婅溅銆備綘鍙渶瑕佽繖鏍峰仛锛屽鏋滀綘浣跨敤鈥滄潈鍔涒€濇爣蹇梠w.write()鎴栦娇鐢ㄤ竴 涓猳w.write_bytes(),鑰屼笉鏄鍋氬彟涓€涓鎴栧啓銆?鍙ユ硶 ow.depower(pin) 鍙傛暟 pin 1 銆?2, I/O绱㈠紩 杩斿洖 nil 涔熷彲浠ョ湅鐪?銉籵w.write () 鈥w.write_bytes () ow.read () 璇诲彇涓€涓瓧鑺傘€?鍙ユ硶 ow.read(pin) 鍙傛暟 pin 1 銆?2, I/O绱㈠紩 杩斿洖 浠庝粠鍣ㄤ欢璇诲彇瀛楄妭 ow.read_bytes () 璇诲彇澶氫釜瀛楄妭銆?鍙ユ硶 ow.read_bytes(pin, size) 鍙傛暟 銉籶in 1銆?2, I/O绱㈠紩 -size浠庤澶囪鍙栫殑瀛楄妭鏁?鏈€澶?56涓? 杩斿洖 string瀛楄妭浠庝粠璁惧璇诲彇 ow.reset () 鎵цl-Wire澶嶄綅鍛ㄦ湡銆?鍙ユ硶 ow.reset(pin) 鍙傛暟 pin 1 銆?2, I/O绱㈠紩 杩斿洖 -1濡傛灉璁惧鍝嶅簲瀛樺湪鑴夊啿 -0濡傛灉娌℃湁璁惧鎴栨€荤嚎琚煭璺垨浠ュ叾浠栨柟寮忎綆浜?50鍗㏒ ow.reset.search () 娓呴櫎鎼滅储鐘舵€侊紝浠ヤ究浠庡ご鍐嶆寮€濮嬨€?鍙ユ硶 ow.reset_search(pin) 鍙傛暟 pin 1 銆?2, I/O绱㈠紩 杩斿洖 nil ow.search () 瀵绘壘涓嬩竴涓澶囥€?鍙ユ硶 ow.search(pin) 鍙傛暟 pin 1 銆?2, I/O绱㈠紩 杩斿洖 rom_code鎴愬姛鏃堕暱搴︿负8鐨勫瓧绗︿覆銆傚畠鍖呭惈浠庤澶囩殑ROM浠g爜銆俷il濡傛灉鎼滅储涓嶆垚鍔燂紝鍒?杩斿洖銆?涔熷彲浠ョ湅鐪?ow.target_search () ow.select () 鍙戝嚭1-Wire ROM閫夋嫨鍛戒护銆傜‘淇濅綘鍏堝仛ow銉籸eset (pin) 鍙ユ硶 ow.select(pinj rom) 鍙傛暟 鈥in 1~12, I/O绱㈠紩 鈥om瀛楃涓插€硷紝len 8,浠庤澶囩殑ROM浠g爜 杩斿洖 nil 渚?鈥?8b20 ExampLe pin = 9 ow.setup(pin) count = 0 repeat count = count + 1 addr = ow.reset_search(pin) addr = ow.search(pin) tmr.wdclr() until (addr ~= nil) or (count > 100) if addr == nil then print(鈥淣o more addresses.鈥? else print(addr:byte(1,8)) crc = ow.crc8(string.sub(addr,1,7)) if crc == addr:byte(8) then if (addr:byte(l) == 0x10) or (addr:byte(l) == 0x28) then print(鈥淒evice is a DS18S20 family device.鈥? repeat ow.reset(pin) ow.select(pin, addr) ow.write(pinj 0x44, 1) tmr.delay(1000000) present = ow.reset(pin) ow銉籹elect(pin, addr) ow.write(pinj 0xBE, 1) print(,P=H鈥?present) data = nil data = string.char(ow.read(pin)) for i = lj 8 do data = data 鈥?string.char(ow.read(pin)) end print(data:byte(1,9)) crc = ow.crc8(string.sub(data,l,8)) print(鈥淐RC=鈥濃€rc) if crc == data:byte(9) then t = (data:byte(l) + data:byte(2) * 256) * 625 tl = t / 10000 t2 = t % 10000 print(,Temperature=" . .tl鈥2. .鈥淐entigrade鈥? end tmr.wdclr() until false else print(鈥淒evice family is not recognized.鈥? end else print(鈥淐RC is not valid!鈥? end end 涔熷彲浠ョ湅鐪?ow.reset () ow.setup () 浠ュ崟绾挎ā寮忚缃紩鑴氥€?ow.setup(pin) 鍙傛暟 pin 1~12, I/O绱㈠紩 杩斿洖 nil ow.skip () 鍙戝嚭1-WireROM璺宠繃鍛戒护锛屼互瑙e喅鎬荤嚎涓婄殑鎵€鏈夐棶棰樸€?鍙ユ硶 ow.skip(pin) 鍙傛暟 pin 1 銆?2, I/O绱㈠紩 杩斿洖 nil ow.target.search () 璁剧疆鎼滅储浠ユ煡鎵捐澶囩被鍨媐amily_code銆傛悳绱㈡湰韬繀椤诲湪闅忓悗鐨勮皟鐢ㄤ腑鍚?鍔?ow.search()銆?鍙ユ硶 ow.target_search(pinj family_code) 鍙傛暟 銉籶in 1銆?2, I/O绱㈠紩 鈥?family_code瀹跺涵浠g爜鐨勫瓧鑺?杩斿洖 nil 涔熷彲浠ョ湅鐪?ow.search () ow.write () 鍐欎竴涓瓧鑺傘€傚鏋減ower鏄?,鍒欏瘎鐢熶緵鐢佃澶囩殑鐢电嚎鏈淇濇寔楂樼數骞炽€傛偍鏈夎矗浠绘渶缁堥€氳繃 璋冪敤ow.depower()鎴栧啀娆¤鍙栨垨鍐欏叆鏉ラ檷浣庡畠鐨勬潈鍔涖€?ow.write(pinj v, power) 鍙傛暟 -pin 1 銆?2, I/O绱㈠紩 -v瀛楄妭琚啓鍏ヤ粠璁惧 鈥ower 1鐢ㄤ簬瀵勭敓渚涚數璁惧鐨勯珮鐢电嚎 杩斿洖 nil 涔熷彲浠ョ湅鐪?ow.depower () ow.write_bytes () 鍐欏叆澶氫釜瀛楄妭銆傚鏋減ower鏄?,鍒欏瘎鐢熶緵鐢佃澶囩殑鐢电嚎鏈淇濇寔楂樼數骞炽€傛偍鏈夎矗浠绘渶缁堥€?杩囪皟鐢╫w.depower銆傛垨鍐嶆璇诲彇鎴栧啓鍏ユ潵闄嶄綆瀹冪殑鏉冨姏銆?鍙ユ硶 ow.write_bytes(pirij buf, power) 鍙傛暟 鈥in 1 銆?2, I銆傛寚鏁?鈥uf瀛楃涓茶鍐欏叆浠庡睘璁惧 鈥ower 1鐢ㄤ簬瀵勭敓渚涚數璁惧鐨勯珮鐢电嚎 杩斿洖 nil 涔熷彲浠ョ湅鐪? ow.depower () 鏂囨。銆嬭嫳璇?妯″潡銆婸CM pcm妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016骞?鏈?鏃?闃垮凹濮嗏€㈡媺鏍?闃垮凹濮嗏€㈡媺鏍?pcmx 閫氳繃鍚勭鍚庣鎾斁澹伴煶銆?Sigma-Delta 纭欢 ESP鍖呭惈涓€涓タ鏍肩帥-寰峰皵濉斿彂鐢熷櫒锛屽彲浠ョ敤鏉ュ湪澶栭儴浣庨€氭护娉㈠櫒鐨勫府鍔╀笅鍚堟垚闊?棰戙€?闊抽鏍煎紡 棰勬湡闊抽涓哄崟澹伴亾鍘熷鏃犵鍙?姣旂壒娴侊紝閲嗘牱閫熺巼涓? k鍜?6 k閲嗘牱纾ㄤ箣闂淬€?pcm.new () 鍒濆鍖栭煶棰戦┍鍔ㄧ▼搴忋€?pcm.drv锛氬叧闂?() 鍋滄鎾斁骞堕噴鏀鹃煶棰戠‖浠躲€?pcm.drv锛氫笂锛堬級 娉ㄥ唽浜嬩欢鐨勫洖璋冨嚱鏁般€?pcm.drv锛涚帺锛堬級 寮€濮嬫挱鏀俱€?pcm.drv锛氭殏鍋?() 鏆傚仠鎾斁銆?pcm.drv锛氬仠姝?() 鍋滄鎾斁骞堕噴鏀剧紦鍐茬殑鍧椼€?/p>

Sigma-Delta 纭欢 ESP鍖呭惈涓€涓タ鏍肩帥-寰峰皵濉斿彂鐢熷櫒锛屽彲浠ョ敤鏉ュ湪澶栭儴浣庨€氭护娉㈠櫒鐨勫府鍔╀笅鍚堟垚闊抽銆傛墍鏈夊父瑙勭殑 GPIO 锛圙PIOO闄ゅ锛夐兘鑳藉杈撳嚭鏁板瓧娉㈠舰锛屼絾鍙湁涓€涓彂鐢熷櫒銆?澶栭儴婊ゆ尝鍣ㄧ數璺涓嬪浘鎵€绀恒€傝娉ㄦ剰锛屽垎鍘嬬數闃诲皢杈撳嚭鐢靛帇闄愬埗鍦↖V pp銆傝繖搴旇鍖归厤澶у鏁版斁澶у櫒 鏉匡紝浣嗘槸闇€瑕佷笌鎮ㄧ殑鐗瑰畾閰嶇疆杩涜浜ゅ弶妫€鏌汇€?/p>

銆傞噸瑕?璇ラ┍鍔ㄧ▼搴忎笌鍏朵粬妯″潡鍏变韩纭欢璧勬簮銆傚洜姝わ紝浣犱笉鑳藉苟琛屾搷浣滃畠浜?sigma delta , perf 鎴杙wm妯″潡銆傚畠浠垎鍒渶瑕乻igma-delta鐢熸垚鍣ㄥ拰hw_timero 闊抽鏍煎紡 棰勬湡闊抽涓哄崟澹伴亾鍘熷鏃犵鍙?姣旂壒娴侊紝閲嗘牱閫熺巼涓篒k鍜?6k閲嗘牱/绉掍箣闂淬€傚父瑙勭殑WAV鏂囦欢鍙互 鐢∣AC宸ュ叿锛堝Audacity鎴朣oX锛夎繘琛岃浆鎹€傝浆鎹㈠墠璋冩暣闊抽噺銆?sox jump.wav -r 8000 -b 8 -c 1 jump_8k.u8 鍙﹁鍙傞槄绀轰緥鏂囦欢澶逛腑鐨刾lay_fileJuao pcm.new 锛堬級 鍒濆鍖栭煶棰戦┍鍔ㄧ▼搴忋€?Sigma-Delta椹卞姩绋嬪簭

鏃硶 pern.new(pcm.SDj pin) 鍙傛暟 pcm.SD 浣跨敤sigma-delta纭欢銉?pin 1 銆?0, I銆傜储寮?杩斿洖 闊抽椹卞姩绋嬪簭瀵硅薄 闊抽椹卞姩瀛愭ā鍧? 姣忎釜闊抽椹卞姩绋嬪簭灞曠ず鎾斁澹伴煶鐨勭浉鍚屾帶鍒舵柟娉曘€?pcm.drv锛氬叧闂?) 鍋滄鎾斁骞堕噴鏀鹃煶棰戠‖浠躲€?鍙ユ硶 drv:close() 鍙傛暟 娌℃湁 杩斿洖 nil pcm.drv锛氫笂() 娉ㄥ唽浜嬩欢鐨勫洖璋冨嚱鏁般€?鍙ユ硶 drv:on(event[, cb_fn[, freq]]) 鍙傛暟 鈥vent鏍囪瘑绗︼紝鍏朵腑涔嬩竴*锛?銆俤ata鍥炶皟鍑芥暟搴旇杩斿洖涓€涓寘鍚笅涓€涓暟鎹潡鐨勫瓧绗︿覆銆?銆俤rained鐢变簬缂轰箯鏁版嵁锛屾挱鏀惧仠姝€俤ata鍥炶皟鐨勬渶鍚?涓皟鐢ㄦ病鏈夊強鏃?鏈夋剰鎴栨棤鎰?鎻?渚涙柊鐨勫潡锛屽厜涓斿唴閮ㄧ紦鍐插尯琚畬鍏ㄦ秷鑰椼€?銆俻aused 鎾斁琚殏鍋?pcm.drv:pause()銆?掳 stopped 鎾斁琚仠姝簡 pcm.drv:stop()銆?銆倂u鏂扮殑宄板€兼暟鎹紝姣忕cb_fn瑙﹀彂鍗價eq娆℃暟(1鍒?00 Hz)銆?鈥b_fn鍥炶皟鍑芥暟涓烘寚瀹氱殑浜嬩欢銆傚鏋滅渷鐣ワ紝鍒欏彇娑堝厛鍓嶇殑鍔熻兘銆傜涓€涓弬鏁版槸drv ,鎺ョ潃 鏄痸u鍥炶皟鐨勫嘲鍊兼暟鎹€?杩斿洖 pcm.drv锛氱帺() 寮€濮嬫挱鏀俱€?鍙ユ硶 drv: play(rate)_| 鍙傛暟 rate閲囨牱鐜囥€傛敮鎸佺殑 鏈?pcm.RATE_lK , pcm.RATE_2K , pcm.RATE_4K , pcm.RATE_5K , pcm.RATE_8K , pcm.RATE_10K , 榛樿涓篟ATE_8K ,濡傛灉蹇界暐銆?杩斿洖 pcm.drv锛氭殏鍋?) 鏆傚仠鎾斁銆傛潵鐢礵rv:play()灏嗕粠鏈€鍚庝竴涓綅缃仮澶嶃€?鍙ユ硶 drv:pause() 鍙傛暟 娌℃湁 杩斿洖 nil pcm.drv锛氬仠姝?) 鍋滄鎾斁骞堕噴鏀剧紦鍐茬殑鍧椼€?鍙ユ硶 drv:stop() 鍙傛暟 娌℃湁 杩斿洖 nil 鏂囨。銆嬭嫳璇€濇ā鍧椔?PERF perf妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016骞?鏈?6鏃?鑿插埄鏅€㈡牸鑾辨柉椤?鑿插埄鏅€㈡牸鑾辨柉椤?perf.c

璇ユā鍧椾负搴旂敤绋嬪簭鎻愪緵绠€鍗曠殑鎬ц兘娴嬮噺銆傚畠澶ц嚧姣?0寰瀵圭▼搴忚鏁板櫒杩涜閲囨牱锛屽苟寤虹珛瀹?鎵惧埌鐨勫€肩殑鐩存柟鍥俱€傜敱浜庡彧鏈夊皯閲忕殑鍐呭瓨鏉ュ瓨鍌ㄧ洿鏂瑰浘锛屾墍浠ョ敤鎴峰彲浠ユ寚瀹氬摢涓唬鐮佸尯鍩熸槸 鎰熷叴瓒g殑銆傞粯璁ゆ槸鍖呭惈浠g爜鐨勬暣涓棯瀛樸€備竴鏃︾‘瀹氫簡鐑偣锛岀劧鍚庡彲浠ュ湪涓嶅悓鐨勫尯鍩熶互涓嶅悓鐨?鍒嗚鲸鐜囬噸澶嶈繍琛岋紝浠ヨ幏寰楁墍闇€鐨勪俊鎭€?perf.start () 寮€濮嬩竴涓€ц兘鐩戣浼氳瘽銆?perf.stop () 缁堟鎬ц兘鐩戣浼氳瘽骞惰繑鍥炵洿鏂瑰浘銆?/p>

perf.start () 寮€濮嬩竴涓€ц兘鐩戣浼氳瘽銆?鍙ユ硶 perf.start([start[, endnbins]]]) 鍙傛暟 -Start (鍙€?鐩存柟鍥剧殑鏈€浣嶱C鍦板潃銆傞粯璁ゆ槸0x40000000銆?-end (鍙€?鐩存柟鍥剧殑鏈€楂樺湴鍧€銆傞粯璁ゅ€兼槸闂瓨涓繁鐢ㄧ┖闂寸殑缁撴潫銆?銉籲bins (鍙€?鐩存柟鍥句腑鐨勫垎绠辨暟閲忋€備繚鎸佽繖涓悎鐞嗙殑锛屽惁鍒欎綘浼氱敤瀹屽唴瀛樸€傞粯璁ゅ€兼槸 1024銆?璇锋敞鎰忥紝鍨冨溇绠辩殑鏁伴噺鏄竴涓笂闄愩€傛瘡涓瀮鍦剧鐨勫ぇ灏忚缃负涓や釜鐨勬渶灏忓箷锛屼娇寰楁墍闇€鍨冨溇 绠辩殑鏁伴噺灏忎簬鎴栫瓑浜庢墍鎻愪緵鐨勫瀮鍦剧鏁伴噺銆?杩斿洖 娌℃湁 perf.stop () 缁堟鎬ц兘鐩戣浼氳瘽骞惰繑鍥炵洿鏂瑰浘銆?鍙ユ硶 total, outside, histogram^ binsize = perf.stop() 杩斿洖 -total鍦ㄦ杩愯涓崟鑾风殑鏍锋湰鎬绘暟 鈥utside鐩存柟鍥捐寖鍥翠箣澶栫殑鏍锋湰鏁伴噺 銉籬istogram鐩存柟鍥捐〃绀轰负鎸夊湴鍧€绱㈠紩鐨勮〃鏍硷紝鍏朵腑鍊兼槸鏍锋湰鏁伴噺銆傚湴鍧€鏄瀮鍦剧鐨勬渶浣?鍦板潃銆?鈥insize姣忎釜鐩存柟鍥綽in鐨勫瓧鑺傛暟銆?渚?perf.start() for j = 0, 100 do str = 鈥渟tr鈥濃€ end tot, outtblj binsize = perf.stop() print(tot, out) local keyset = {} local n = 0 for kjv in pairs(tbl) do n=n+l keyset[n]=k end table.sort(keyset) for kkjk in ipairs(keyset) do print(string.format(鈥?x 鈻?%x鈥?k, k + binsize - 1)/ 杩欒繍琛屽惊鐜垱寤哄瓧绗︿覆100娆★紝鐒跺悗鎵撳嵃鍑虹洿鏂瑰浘锛堟帓搴忓悗锛夈€傝繖闇€瑕佸ぇ绾?500涓牱鏈紝骞?鎻愪緵浜嗘墍鏈塁PU鏃堕棿鑺卞湪鍝噷鐨勪竴涓緢濂界殑鎸囩ず銆?PWM妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 鎯呰妭涓瓧 Zeroday Zeroday pwm.c

pwm.close () 閫€鍑烘寚瀹欸PIO寮曡剼鐨凱WM妯″紡銆?pwm.getclock () 鑾峰彇閫夊畾鐨勫紩鑴歅WM棰戠巼銆?pwm.getduty () 鑾峰彇寮曡剼鐨勯€夊畾宸ヤ綔鍛ㄦ湡銆?pwm.setclock () 璁剧疆PWM棰戠巼銆?pwm.setduty () 璁剧疆涓€涓紩鑴氱殑鍗犵┖姣斻€?pwm.setup () 灏嗗紩鑴氳缃负PWM妯″紡銆?pwm.start () PWM鍚姩锛屾尝褰㈣搴旂敤鍒癎PI銆傚紩鑴氥€?pwm.stop () 鏆傚仠PWM娉㈠舰鐨勮緭鍑恒€?/p>

pwm.close () 閫€鍑烘寚瀹欸PIO寮曡剼鐨凱WM妯″紡銆?鍙ユ硶 pwm.close(pin) 鍙傛暟 pin 1銆?2, I銆傛寚鏁?杩斿洖 nil 涔熷彲浠ョ湅鐪?pwm.start () pwm.getclock () 鑾峰彇閫夊畾鐨勫紩鑴歅WM棰戠巼銆?鍙ユ硶 pwm.getclock(pin) 鍙傛暟 pin 1銆?2, I銆傛寚鏁?杩斿洖 number寮曡剼鐨凱WM棰戠巼 涔熷彲浠ョ湅鐪?pwm.setclock () 涔熷彲浠ョ湅鐪?pwm.getduty () pwm.getduty () 鑾峰彇寮曡剼鐨勯€夊畾宸ヤ綔鍛ㄦ湡銆?鍙ユ硶 pwm.getduty(pin) 鍙傛暟 pin 1-12, I銆傛寚鏁?杩斿洖 number宸ヤ綔寰幆锛屾渶澶?023 涔熷彲浠ョ湅鐪?pwm.setduty () pwm.setclock () 璁剧疆PWM棰戠巼銆傛敞鎰忥細璁剧疆PWM棰戠巼浼氬悓姝ユ洿鏀瑰叾浠栬缃紝濡傛灉鏈夌殑璇濄€傜郴缁熷彧鑳戒娇鐢ㄤ竴 涓狿WM棰戠巼銆?鍙ユ硶 pwm.setclock(pin, clock) 鍙傛暟 -pin 1 銆?2, I銆傛寚鏁?-clock 1 銆?000, PWM棰戠巼 杩斿洖 nil 涔熷彲浠ョ湅鐪?pwm.getclock () pwm.setduty () 璁剧疆涓€涓紩鑴氱殑鍗犵┖姣斻€?鍙ユ硶 pwm.setduty(pin, duty) 鍙傛暟 -pin 1 銆?2, I銆傛寚鏁?-duty 0銆?023, pwm鍗犵┖姣旓紝鏈€澶?023 (lObit) 杩斿洖 nil 鈥揇I is connected to green Led --D2 is connected to blue Led --D3 is connected to red Led pwm.setup(l, 500, 512) pwm.setup(2, 500, 512) pwm.setup(3, 500, 512) pwm.start(l) pwm.start(2) pwm.start(3) function led(r, g, pwm.setduty(lj pwm.setduty(2j pwm.setduty(3j r) end led(512j 0, 0) 鈥?set Led to red led(0, 0, 512)鈥?pwm.setup () 灏嗗紩鑴氳缃负PWM妯″紡銆傛渶澶氬彧鑳藉皢6涓紩鑴氳缃负PWM妯″紡銆?pwm.setup(pin, clock, duty) pin 1銆?2, I銆傛寚鏁?銉?clock 1 銆?000, pwm棰戠巼 -duty 0銆?023, pwm鍗犵┖姣旓紝鏈€澶?023 (lObit) 杩斿洖 nil 渚?鈥搒et pin index 1 as pwm outputj frequency is 100HZj duty cycLe is half. pwm.setup(l, 100, 512) 涔熷彲浠ョ湅鐪?pwm.start () pwm.start () PWM鍚姩锛屾尝褰㈣搴旂敤鍒癎PIO寮曡剼銆?鍙ユ硶 pwm.start(pin) 鍙傛暟 pin 1-12, I銆傛寚鏁?杩斿洖 nil 涔熷彲浠ョ湅鐪?pwm.stop () pwm.stop () 鏆傚仠PWM娉㈠舰鐨勮緭鍑恒€?鍙ユ硶 pwm.stop(pin) 鍙傛暟 pin 1銆?2, I銆傛寚鏁?杩斿洖 nil 涔熷彲浠ョ湅鐪?pwm.start () rfswitch 妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016骞?2鏈?鏃?缃楅┈璐瑰ゥ澶氱綏澶?缃楅┈璐瑰ゥ澶氱綏澶?rfswitch.c

鐢ㄤ簬鎿嶄綔433/315Mhz璁惧鐨勬ā鍧楋紝濡傜數婧愭彃搴э紝缁х數鍣ㄧ瓑銆傝繖寰堝彲鑳介€傜敤浜庢墍鏈夊父鐢ㄧ殑浣?鎴愭湰鐢垫簮鎻掑骇锛屽寘鎷琒C5262/SC5272, HX2262/HX2272, PT2262/PT2272, EV1527, RT1527, FP1527鎴朒S1527鑺墖缁勩€?杩欎釜妯″潡浣跨敤浜嗗師濮嬬殑rc-switchArduino搴撲腑鐨勪竴浜涗唬鐮侊紝浣嗘槸NodeMCU鍜孉rduino骞朵笉瀹?鍏ㄥ吋瀹广€傝繖灏辫姹俽c-switch鐢↙ua鏀寔閲嶅啓鎴恟fswitch NodeMCU銆?鍙橀€佸櫒鐨勮繛鎺?鍙戝皠鏈?ESP8266 娉ㄩ噴 vin 鎴? 3V3 3.3 - 5浼忓湪ESP8266鎴栧叾浠栫數婧?鍦伴潰鎴朹 GND 鍦板簲璇ヨ繛鎺ュ埌ESP8266鍜岀數婧?鏁版嵁寮曡剼 6 鍑犱箮ESP8266涓婄殑浠讳綍寮曡剼 浣犲彲浠ュ湪杩欓噷闃呰鏇村鍏充簬杩炴帴銆?/p>

閫夋嫨閫傚綋鐨勫崗璁?璇ユā鍧楁敮鎸佷娇鐢?绉嶄笉鍚岀殑鍗忚浼犺緭鏁版嵁锛屾偍搴旇浣跨敤鏈€閫傚悎鎮ㄧ殑闇€姹傜殑鏁版嵁銆傛帴鏀舵暟鎹皻涓?鏀寔銆傛墍浠ワ紝浣犱笉鑳藉惉鏀堕煶鏈虹殑绌烘皵锛屽苟浣跨敤Lua鑾峰彇鍗忚璇︾粏淇℃伅銆?鎰佸緱姝g‘鍗忚鐨勬渶绠€鍗曟柟娉曟槸灏嗘棤绾跨數鎺ユ敹鍣ㄨ繛鎺ュ埌ESP8266鎴朅rduino,鐒跺悗杩?琛孯eceiveDemo_Advanced.ino 骞跺湪涓茶鎺у埗鍙?examplel, example2)涓煡鐪嬭緭鍑恒€?浣犲簲璇ュ緱鍒拌繖鏍风殑涓滆タ锛?Decimal: 11001351 (24Bit) Binary: 101001111101111000000111 Tri-State: not applicable PulseLength: 517 microseconds Protocol: 5 Raw data锛?7200,1004,528,504,1048,980,336,1176,356,1176,352,1180,1108,412,356,117锛?鍏充簬浣庡眰鍗忚瑙勮寖鐨勬洿璇︾粏鐨勪俊鎭彲浠ュ湪杩欓噷鎵惧埌浣犲彲浠ラ€氳繃鐩磋鐨勬柟寮忓皢鐢垫姤鎷疯礉 鑷?| http:銆僼est.su i.li/oszi/ rfswitch.send () 浣跨敤鏃犵嚎鐢垫ā鍧椾紶杈撴暟鎹€?rfswitch.send () 浣跨敤鏃犵嚎鐢垫ā鍧椾紶杈撴暟鎹€?鍙ユ硶 rfswitch.send(protocol_idpulse_length, repeat, pin, value, length) 鍙傛暟 銉籶rotocol_id姝f暣鏁板€硷紝浠?-6寮€濮?鈥ulse_length 涓€涓剦鍐茬殑闀垮害浠ュ井绉掍负鍗曚綅锛岄€氬父浠?00鍒?50 銉籸epeat閲嶅鍊硷紝閫氬父浠?鍒?.杩欐槸涓€涓悓姝ヤ换鍔°€傚皢閲嶅璁℃暟璁剧疆涓鸿緝澶х殑鍊间細瀵艰嚧闂?棰樸€傚缓璁殑闄愬埗鏄ぇ绾?-4銆傚鏋滀綘闇€瑕佹洿澶氾紝閭d箞鍐嶅娆¤皟鐢ㄥ畠(渚嬪浣?鐢?node.task.post) -pin 1/閿€鐨勩€?鎸囨暟锛屽疄鏂戒緥6涓篏PIO12,瑙佺粏鑺?銉籿alue姝f暣鏁板€硷紝杩欐槸灏嗚鍙戦€佺殑涓昏鏁版嵁 鈥ength濡傛灉鍊奸暱搴︽槸3涓瓧鑺傦紝閭d箞闀垮害鏄?4 杩斿洖 nil 渚?鈥揕ua transmit radio code using protocol #1 鈥損uLse_Length 300 microseconds 鈥搑epeat 5 times 鈥搖se pin #7 (GPI013) 鈥搗aLue to send is 560777 鈥搗aLue Length is 24 bits (3 bytes) rfswitch.send(l, 300, 5, 7, 560777, 24) 鏃嬭浆妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016骞?鏈?鏃?鑿插埄鏅€㈡牸鑾辨柉椤?鑿插埄鏅€㈡牸鑾辨柉椤?rotary.c

璇ユā鍧楀彲浠ヨ鍙栦究瀹滅殑鏃嬭浆缂栫爜鍣ㄥ紑鍏崇殑鐘舵€併€傛墍鏈夋爣鍑嗙殑鍦版柟閮芥湁涓€涓ょ編鍏冦€傚畠浠槸浜旈拡 瑁呯疆锛屽叾涓笁涓敤浜庣伆鐮佺紪鐮佸櫒鐨勬棆杞紝涓や釜鐢ㄤ簬鎸夐挳寮€鍏炽€傝繖浜涘紑鍏抽€氬父鐢ㄤ簬姹借溅闊冲搷绯?缁熴€?杩欎簺寮€鍏虫病鏈夌粷瀵逛綅缃紝鍙槸缂栫爜椤烘椂閽?閫嗘椂閽堟棆杞殑浣嶇疆鏁般€傝浣跨敤姝ゆā鍧楋紝璇峰皢姝d氦缂?鐮佸櫒鐨勫叕鍏卞紩鑴氳繛鎺ュ埌鍦帮紝灏咥鍜孊鐩歌繛鎺ュ埌NodeMCUo鎸夐挳寮€鍏崇殑涓€涓紩鑴氫篃搴旇鎺ュ湴锛?鍙︿竴涓紩鑴氳繛鎺ュ埌NodeMCUo 閮ㄤ欢鏉ユ簮 浜氶┈閫婏細杩欎釜鎼滅储鏄剧ず浜嗗绉嶃€?甯搁噺 鏃嬭浆銆?rotarysetup () 鍒濆鍖杗odemeu浠ヤ笌鏃嬭浆缂栫爜鍣ㄥ紑鍏抽€氫俊銆?rotaryon () 璁剧疆鐗瑰畾浜嬩欢鐨勫洖璋冦€?rotary.getpos () rotary.close () 閲婃斁涓庢棆杞紑鍏崇浉鍏崇殑璧勬簮銆?/p>

閮ㄤ欢鏉ユ簮 -浜氶┈閫婏細杩欎釜鎼滅储鏄剧ず浜嗗绉嶃€?-Ebay锛氬湪杩欎釜鎼滅储涓瘮杈冧究瀹?銉籄dafruit锛氭棆杞紪鐮佸櫒 -Aliexpress锛氳繖涓悳绱㈡彮绀轰簡鍚勭鍚勬牱鐨勫舰鐘跺拰澶у皬銆?杩樻湁涓€涓畨瑁呭湪鏍囧噯0.1鈥滃紩鑴氫笂鐨勫紑鍏筹紝杩欐槸KY-040,涔熷彲浠ュ湪寰堝鍦版柟鎵惧埌锛岃娉ㄦ剰锛岃繖 浜涘紩鑴氭湁鐐瑰亸蹇冿紝鎴戞€€鐤戝畠纭疄闇€瑕乂CC杩炴帴銆?甯搁噺 銉籸otary. PRESS = 1浜ゆ崲鏈虹殑浜嬩欢绫诲瀷銆?銉籸otary. LONGPRESS = 2浜嬩欢绫诲瀷鐨勯暱鎸夈€?銉籸otary. RELEASE = 4浜ゆ崲鏈虹増鏈殑浜嬩欢绫诲瀷銆?銉籸otary.TURN = 8浜ゆ崲鏈烘棆杞殑浜嬩欢绫诲瀷銆?鈥otary.CLICK = 16鍗曞嚮浜嬩欢绫诲瀷锛堝彂甯冨悗锛?鈥otary.DBLCLICK = 32鍙屽嚮浜嬩欢绫诲瀷锛堢浜屾鍙戝竷鍚庯級 鈥otary .ALL = 63鎵€鏈変簨浠剁被鍨嬨€?rotary.setup 锛堬級 鍒濆鍖杗odemeu浠ヤ笌鏃嬭浆缂栫爜鍣ㄥ紑鍏抽€氫俊銆?鍙ユ硶 rotary.setup锛坈hannel, pina, pinb[pinpress[, longpress_time_ms[3 dblclick_time_ms]]]锛?鍙傛暟 鈥hannel鏃嬭浆妯″潡鏀寔涓変釜寮€鍏炽€傞€氶亾鏄?,1鎴?銆?-pina杩欐槸涓€涓狦PIO缂栧彿锛堜笉鍖呮嫭0锛?骞惰繛鎺ュ埌鏃嬭浆寮€鍏充笂鐨勫紩鑴欰鐩搞€?-pinb杩欐槸涓€涓狦PIO缂栧彿锛堜笉鍖呮嫭0锛?骞惰繛鎺ュ埌鏃嬭浆寮€鍏充笂鐨勫紩鑴欱鐩搞€?鈥inpress 锛堝彲閫夛級杩欐槸涓€涓狦PIO缂栧彿锛堜笉鍖呮嫭0锛?骞惰繛鎺ュ埌鎸変笅寮€鍏炽€?鈥ongpress_time_ms 锛堝彲閫夛級鎸変笅鐨勬绉掓暟锛堥粯璁?00锛夎璁や负鏄暱鎸夈€?鈥blclick_time_ms 锛堝彲閫夛級涓嬩竴涓彂琛岀増鐨勫彂琛岀増鍜屽嵃鍒锋満涔嬮棿鐨勬绉掓暟锛堥粯璁ゅ€间负 500锛夎搴斾负鍙岄噾銆?杩斿洖 娌℃湁銆傚鏋滃弬鏁伴敊璇紝鎴栬€呮搷浣滄棤娉曞畬鎴愶紝鍒欎細鎶涘嚭閿欒銆?瀵逛簬鎵€鏈堿PI璋冪敤锛屽鏋滈€氶亾鍙疯秴鍑鸿寖鍥达紝鍒欎細鎶涘嚭閿欒銆?渚?rotary.setup锛?j 5,6銆?锛?rotary.on 锛堬級 璁剧疆鐗瑰畾浜嬩欢鐨勫洖璋冦€?鍙ユ硶 rotary.on锛坈hannel, eventtypecallback]锛?鍙傛暟 銉籧hannel鏃嬭浆妯″潡鏀寔涓変釜寮€鍏炽€傞€氶亾鏄?,1鎴?銆?銉籩venttype杩欏畾涔変簡姝e湪娉ㄥ唽鐨勪簨浠剁殑绫诲瀷銆傝繖鏄€昏緫鎴栦竴绉嶆垨澶氱 鐨?PRESS , LONGPRESS , RELEASE , TURN , CLICK 鎴?DBLCLICK 銆?銉籧allback杩欐槸鍦ㄦ寚瀹氫簨浠跺彂鐢熸椂灏嗚璋冪敤鐨勫嚱鏁般€?濡傛灉鍥炶皟鏄€滄棤鈥濇垨鐪佺暐锛屽垯娉ㄥ唽琚彇娑堛€?浜嬩欢鍙戠敓鏃讹紝灏嗕娇鐢ㄤ笁涓弬鏁拌皟鐢ㄥ洖璋冦€傜涓€涓弬鏁版槸浜嬩欢绫诲瀷锛岀浜屼釜鍙傛暟鏄棆杞紑鍏崇殑 褰撳墠浣嶇疆锛岀涓変釜鍙傛暟鏄簨浠跺彂鐢熺殑鏃堕棿銆?璇ヤ綅缃璺熻釜锛屽苟琚〃绀轰负涓€涓湁绗﹀彿鐨?2浣嶆暣鏁般€傚鍔犲€艰〃绀洪『鏃堕拡杩愬姩銆傛椂闂存槸浠?2浣?鏁存暟琛ㄧず鐨勫井绉掓暟銆傝娉ㄦ剰锛岃繖涓瘡闅斾竴灏忔椂宸﹀彸灏变細鎹㈣銆?rotary.011(0, rotary.ALL, function (type, pos, when) print 鈥淧osition=鈥?鈥⑩€?pos .銉烩€渆vent type=鈥濃€?type .鈥?" time=鈥?鈥?when end) 绗旇 娲诲姩灏嗘寜椤哄簭杩涜锛屼絾鍙兘缂哄皯TURN浜嬩欢銆傚鏋滄湁寰堥暱鐨勪簨浠堕槦鍒楋紝鍒橮RESS鍜孯ELEASE浜?浠朵篃鍙兘浼氫涪澶便€傚涓寕璧风殑TURN浜嬩欢閫氬父浣滀负涓€涓猅URN鍥炶皟琚皟搴︼紝鍏舵渶缁堜綅缃綔涓哄叾 鍙傛暟銆?涓€浜涘紑鍏虫瘡涓埗鍔ㄥ櫒鏈?涓楠ゃ€傝繖鎰忓懗鐫€鍦ㄥ疄璺典腑锛屽簲鐢ㄧ▼搴忓簲璇ュ皢浣嶇疆闄や互4,骞朵娇鐢ㄥ畠 鏉ョ‘瀹氱偣鍑绘鏁般€備竴涓紑鍏充笉鍙兘鍦ㄤ换浣曚竴涓柟鍚戜笂杈惧埌30浣嶇殑鏃嬭浆-鏈変簺鏄綆浜?0000杞?鐨勩€?鍦–LICK鍜孡ONGPRESS浜嬩欢瀵硅秴鏃朵氦浠樸€傝DBLCLICK浜嬩欢琚箣鍚庣殑浜?浠楶RESS , RELEASE , PRESS , RELEASE鍏朵腑杩欐槸涓棿涔嬮棿寰堢煭鐨勬椂闂撮棿闅斿簭 鍒?RELEASE 鍜?PRESS 銆?閿欒 濡傛灉鎻愪緵浜嗕竴涓棤鏁坋venttype ,閭d箞灏嗕細鎶涘嚭涓€涓敊璇€?rotary.getpos () 鑾峰彇寮€鍏崇殑褰撳墠浣嶇疆鍜屾寜涓嬬姸鎬?鍙ユ硶 pos, press, queue = rotary.getpos(channel) 鍙傛暟 鈥hannel鏃嬭浆妯″潡鏀寔涓変釜寮€鍏炽€傞€氶亾鏄?,1鎴?銆?杩斿洖 -pos浜ゆ崲鏈虹殑褰撳墠浣嶇疆銆?-press鎸囩ず褰撳墠鏄惁鎸変笅寮€鍏崇殑甯冨皵鍊笺€?鈥ueue鏈紶閫佺殑鍥炶皟鏁?閫氬父涓?)銆?渚?print rotary.getpos(0) rotary.close () 閲婃斁涓庢棆杞紑鍏崇浉鍏崇殑璧勬簮銆?鍙ユ硶 rotary.close(channel) 鈥?channel鏃嬭浆妯″潡鏀寔涓変釜寮€鍏炽€傞€氶亾鏄?,1鎴?銆?rotary.close(0) RTC FIFO妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2015骞?鏈?26 S DiUS, JohnyMattsson, Bernd Meyer bmeyer@dius.com.au Johny Mattsson rtcfifo.c

rtcfif銆傛ā鍧楀疄鐜颁簡鐢ㄤ簬浼犳劅鍣ㄨ鏁扮殑鍏堣繘鍏堝嚭瀛樺偍銆傞【鍚嶆€濅箟锛屽畠鐢盧TC鐢ㄦ埛瀛樺偍鍣ㄦ彁渚涙敮 鎸侊紝鍥犳鍙互鍦ㄦ繁搴︾潯鐪犲懆鏈熶腑瀛樻椿涓嬫潵銆備粠姒傚康涓婅锛屽畠鍙互琚涓?鏄經 timestamp, name, value 锝濆厓缁勭殑寰幆鏁扮粍銆傚湪鍐呴儴锛屽畠浣跨敤绌洪棿浼樺寲鐨勫瓨鍌ㄦ牸寮忔潵 淇濆瓨鏈€澶ф暟閲忕殑鏍峰搧銆傝繖甯︽潵浜嗕竴浜涙姌琛凤紝鍥犳涓嶆槸涓€涓В鍐虫柟妗堛€傚€煎緱娉ㄦ剰鐨勬槸锛?-鏃堕棿鎴充互绗簩绮惧害瀛樺偍銆?銉婚噰鏍烽鐜囧繀椤昏嚦灏戞瘡8.5鍒嗛挓涓€娆°€傝繖鏄敤浜庢椂闂存埑鐨勫閲忓帇缂╃殑鍓綔鐢ㄣ€?-鏁板€艰闄愬埗鍦?6浣嶇殑绮惧害锛屼絾鏈変竴涓嫭绔嬬殑瀛楁鏉ュ瓨鍌ㄤ竴涓狤-n涔樻硶鍣ㄣ€傚嵆浣夸娇鐢ㄩ潪甯稿皬 鐨勫€硷紝杩欎篃鍙互淇濊瘉楂樹繚鐪熷害銆傛湁鏁堣寖鍥存槸1E涓€7鍒?5535銆?-浼犳劅鍣ㄥ悕绉伴檺鍒朵负鏈€澶?涓瓧绗︺€?銆傞噸瑕?璇ユā鍧椾娇鐢ㄤ袱缁凴TC瀛樺偍鍣ㄦ彃妲斤紝鍏舵帶鍒舵ā鍧椾负10-20,浠ュ強鍙彉鏁伴噺鐨勬彃妲界敤浜庨噯鏍峰拰 浼犳劅鍣ㄥ悕绉般€傞粯璁ゆ儏鍐典笅杩欎簺璺ㄥ害涓?2-127,浣嗘槸杩欐槸鍙厤缃殑銆傛彃妲借绉颁负 鏃?rtcfif0. prepare()琚О涓恒€?杩欐槸rtcmem鍜宺tcti me妯″潡鐨勯厤濂楁ā鍧椼€?rtcfifo.ds 1 eep_until_samp 1 e () 褰搑tcfifo妯″潡涓巖tctime妯″潡涓€璧风紪璇戞椂,姝や究鍒╁姛鑳藉彲鐢ㄣ€?rtcfifo.peek () 浠巖tcfif o璇诲彇涓€涓牱鏈琽 rtcfifo.pop () 浠巖tcfif銆傝鍙栫涓€涓牱鏈紝骞朵粠閭i噷鍒犻櫎瀹冦€?rtcfifo.prepare () 鍒濆鍖杛tcfifo妯″潡浠ヤ緵浣跨敤銆?rtcfifo.put () 灏嗘牱鍝佹斁鍏tcfifo銆?rtcfifo.ready () 濡傛灉rtcfif銆傚凡鍑嗗濂藉苟鍑嗗浣跨敤锛屽垯杩斿洖闈為浂鍊硷紝濡傛灉涓嶆槸锛屽垯 杩斿洖0銆?/p>

rtcfifo.dsleep_untiLsample () 褰搑tcfifo妯″潡涓巖tctime妯″潡涓€璧风紪璇戞椂锛屾渚垮埄鍔熻兘鍙敤銆傚畠鑰冭檻浜嗕竴浜涘叧娉ㄧ偣鍒嗙鐨勬帾鏂? 浣垮緱浼犳劅鍣ㄨ鍙栨娊璞″彲鑳戒笉闇€瑕佺煡閬撻噯鏍烽鐜?杩欏湪寰堝ぇ绋嬪害涓婃槸绛栫暐鍐冲畾锛岃€屼笉鏄紶鎰熷櫒 鏈川)鐨勬ā鍧楀寲Lua浠g爜鐨勪功鍐欍€備娇鐢ㄦ鍔熻兘瀹為檯涓婄浉褰?鍗?rtctime.dsleep_aligned(interval_usJ minsleep_us) 鍦颁竾 interval_us 鏄粈涔?缁?rtcfifo.prepare()銆?鍙ユ硶 rtcfifo.dsleep_until_sample(minsleep_us) 鍙傛暟 minsleep_us鏈€鐭殑鐫$湢鏃堕棿锛屼互寰涓哄崟浣?渚?鈥揹eep sLeep untiL it鈥檚 time to take the next sampLe rtcfifo.dsleep_until_sample(0) 涔熷彲浠ョ湅鐪?rtctime.dsleep_aligned() rtcfifo.peek () 浠巖tcfifo璇诲彇涓€涓牱鏈€傚彲浠ユ寚瀹歳tcfifo鐨勫亸绉婚噺锛屼絾榛樿鎯呭喌涓嬩細璇诲彇绗竴涓牱鏈?鍋忕Щ閲?0)銆?鍙ユ硶锛?rtcfifo.peek([offset]) 鍙傛暟 offset鍋风湅鏍锋湰鍦╫ffset fifo鐨勪綅缃€傝繖鏄浉瀵逛簬褰撳墠澶撮儴鐨勭浉瀵瑰亸绉婚噺銆備粠闆跺紑濮嬨€傞粯 璁ゅ€兼槸0銆?杩斿洖 杩斿洖鐨勫€间笌鐢ㄤ簬鐨勮緭鍏ュ弬鏁板尮閰峳tcfifo.put() o 鈥imestamp鏃堕棿鎴充互绉掍负鍗曚綅 鈥alue浠峰€?鈥eg_e姣斾緥鍥犲瓙 鈥ame浼犳劅鍣ㄥ悕绉?濡傛灉娌℃湁鏍峰搧鍙敤(鍦ㄦ寚瀹氱殑鍋忕Щ閲?锛屽垯涓嶈繑鍥炰换浣曟牱鍝併€?渚?local timestampj value, neg_e, name = rtcfifo.peek() rtcfifo.pop () 浠巖tcfifo璇诲彇绗竴涓牱鏈紝骞朵粠閭i噷鍒犻櫎瀹冦€?鍙ユ硶锛?rtcfifo.pop() 鍙傛暟 娌℃湁 杩斿洖 杩斿洖鐨勫€间笌鐢ㄤ簬鐨勮緭鍏ュ弬鏁板尮閰峳tcfifo.put() o 鈥imestamp鏃堕棿鎴充互绉掍负鍗曚綅 鈥alue浠峰€?鈥eg_e姣斾緥鍥犲瓙 鈥ame浼犳劅鍣ㄥ悕绉?渚?while rtcfifo.count() > 0 do local timestamp^ value, neg_e> name = rtcfifo.pop() 鈥揹o something with the sampLe, e.g. upload to somewhere end rtcfifo.prepare () 鍒濆鍖杛tcfifo妯″潡浠ヤ緵浣跨敤銆?璋冪敤rtcfifo.prepare()鏃犳潯浠跺湴閲嶆柊鍒濆鍖栧瓨鍌?浠讳綍瀛樺偍鐨勬牱鏈兘灏嗚涓㈠純銆?鍙ユ硶 rtcfifo.prepare([table]) 鍙傛暟 璇ュ嚱鏁板皢涓€涓彲閫夌殑閰嶇疆琛ㄤ綔涓哄弬鏁般€備互涓嬮」鐩彲鑳介厤缃細 鈥nterval_us濡傛灉鎯宠浣跨敤璇tcfifo.sleep_until_sample()鍑芥暟锛屽垯璇ュ瓧娈靛皢璁剧疆 閲嗘牱闂撮殧7浠ュ井绉掍负鍗曚綅)浠ヤ緵浣跨敤銆傝繖瀹為檯涓婃槸绗簩涓 鐐?rtctime.dsleep_aligned()銆?鈥ensor_count鎸囧畾鍒嗛厤鍚嶇О绌洪棿鐨勪笉鍚屼紶鎰熷櫒鐨勬暟閲忋€傝繖鐩存帴瀵瑰簲浜庝负鍙橀噺鍧椾腑鐨勫悕绉?淇濈暀鐨勭巹涓Ы銆傞粯璁ゅ€兼槸5,鏈€灏忓€兼槸1,鏈€澶у€兼槸16銆?鈥torage_begin鎸囧畾鐢ㄤ簬鍙橀噺鍧楃殑绗竴涓猂TC鐢ㄦ埛鍐呭瓨鎻掓Ы銆傞粯璁ゅ€兼槸32.鍙湁 鍦╯torage_end鎸囧畾鏃舵墠鏈夋晥銆?鈥torage_end鎸囧畾RTC鐢ㄦ埛鍐呭瓨鎻掓Ы鐨勬湯绔€傛鎻掓Ы缂栧彿涓嶄細琚Е鍙娿€傞粯璁ゅ€兼槸128.鍙湁 鍦╯torage_begin鎸囧畾鏃舵墠鐢熸晥銆?杩斿洖 nil 鈥揑nitiaLize with default values rtcfifo , prepare() 鈥?Use RTC sLots 19 and up for variabLe storage rtcfifo.prepare((storage_begin=21, storage_end=128)) 涔熷彲浠ョ湅鐪?鈥tcfifo.ready() 鈥tcfifo.prepare() rtcfifo.put () 灏嗘牱鍝佹斁鍏tcfifo銆?濡傛灉rtcfifo娌℃湁鍑嗗濂斤紝杩欎釜鍑芥暟浠€涔堥兘涓嶅仛銆?鍙ユ硶 rtcfifo.put(timestamp, value, neg_e, name) 鍙傛暟 鈥imestamp浠ョ涓哄崟浣嶇殑鏃堕棿鎴炽€傛椂闂存埑閫氬父鏉ヨ嚜浜巖tctime.get()銆?鈥alue瑕佸瓨鍌ㄧ殑鍊笺€?鈥eg_e 瀛樺偍鐨勬湁鏁堝€糓valueE neg-eo 鈥ame浼犳劅鍣ㄧ殑鍚嶇О銆傚彧浣跨敤鍓嶅洓涓?ASCII)瀛楃name銆?璇锋敞鎰忥紝濡傛灉鏃堕棿鎴冲閲忎笌涔嬪墠瀛樺偍鐨勬牱鏈浉姣斿お澶э紝鍒檙tcfifo浼氶€愬嚭鎵€鏈夎緝鏃╃殑鏍锋湰浠ュ瓨鍌?姝ゆ牱鏈€傚悓鏍凤紝濡傛灉name鎰忓懗鐫€浣跨敤鐨勫悕绉板浜巗ensor_count (濡傛寚瀹?鐨剅tcfifo.prepare())鍚嶇О锛屽垯rtcfifo浼氶€愬嚭鎵€鏈夎緝鏃╃殑鏍锋湰銆?杩斿洖 nil 渚?鈥?Obtain a sampLe vaLue from somewhere local sample =鈥?鈥揝tore sample with no scaLing^ under the name 鈥渇oo鈥?rtcfifo.put(rtctime.get(), sample, 0, 鈥渇oo鈥? rtcfifo.ready () 濡傛灉rtcfifo宸插噯澶囧ソ骞跺噯澶囦娇鐢紝鍒欒繑鍥為潪闆跺€硷紝濡傛灉涓嶆槸锛屽垯杩斿洖0銆?鍙ユ硶锛?rtcfifo.ready() 鍙傛暟 娌℃湁 杩斿洖 濡傛灉rtcfif銆傚凡缁忓噯澶囧ソ骞跺彲浠ヤ娇鐢紝鍒欎负闈為浂锛屽鏋滀笉鏄紝鍒欎负闆躲€?渚?鈥揚repare the rtcfifo if not aLready done if not rtcfifo.ready() then rtcfifo.prepare() end RTC鐢ㄦ埛瀛樺偍鍣ㄦā鍧?浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2015骞?鏈?25 鏃?DiUS, Johny Mattsson Johny Mattsson rtcmem.c rtcmem妯″潡鎻愪緵瀵筊TC (瀹炴椂鏃堕挓)瀛樺偍鍣ㄧ殑鍩烘湰璁块棶銆?ESP8266涓殑RTC鍖呭惈鍐呭瓨瀵勫瓨鍣紝鑳藉鍦ㄦ繁搴︾潯鐪犱腑骞稿瓨涓嬫潵锛屽洜姝ら潪甯搁€傚悎鍦ㄦ暣涓潯鐪犲懆 鏈熷唴淇濇寔鐘舵€併€傛湁浜涘唴瀛樻槸涓虹郴缁熶娇鐢ㄨ€屼繚鐣欑殑锛屼絾128涓彃妲?姣忎釜32浣嶅)鍙緵搴旂敤绋嬪簭 浣跨敤銆傝繖涓ā鍧楁彁渚涘杩欎簺鐨勮鍐欐潈闄愩€?鐢变簬鍙敤鍐呭瓨鐨勬暟閲忛潪甯告湁闄愶紝鍥犳涓嶅瓨鍦ㄧ敤浜庝徊瑁佷娇鐢ㄧ壒瀹氭彃妲界殑鏈哄埗銆傛渶缁堢敤鎴峰簲璇ョ煡 閬撳摢浜涘唴瀛樼敤浜庝粈涔堬紝骞堕伩鍏嶅啿绐併€傝娉ㄦ剰锛屼竴浜汱ua妯″潡澹扮О鏌愪簺鎻掓Ы銆?杩欐槸rtcti me鍜宺tcfifo妯″潡鐨勯厤濂楁ā鍧椼€?rtcmem.read32 () 浠嶳TC鐢ㄦ埛瀛樺偍鍣ㄤ腑璇诲彇涓€涓垨澶氫釜32浣嶅€笺€?rtcmem.write32 () 灏嗕竴涓垨澶氫釜鍊煎啓鍏TC鐢ㄦ埛鍐呭瓨锛屼粠绱㈠紩idx寮€濮嬨€?rtcmem.read32 () 浠嶳TC鐢ㄦ埛瀛樺偍鍣ㄤ腑璇诲彇涓€涓垨澶氫釜32浣嶅€笺€?鍙ユ硶 rtcmem.read32(idx [3 num]) 鍙傛暟 銉籭dx浠庨浂寮€濮嬭鍙栫储寮?銉籲um瑕佽鍙栫殑鎻掓Ы鏁伴噺(榛樿鍊间负1) 杩斿洖 浠嶳TC鐢ㄦ埛瀛樺偍鍣ㄤ腑璇诲彇鐨勫€笺€?濡傛灉idx瓒呭嚭鏈夋晥鑼冨洿[0,127],鍒欐鍑芥暟涓嶈繑鍥炰换浣曞唴瀹广€?濡傛灉num缁撴灉瓒呭嚭鍙敤鍐呭瓨鐨勬湯灏撅紝鍒欒鍔熻兘浠呰繑鍥炴湁鏁堟彃妲戒腑鐨勬暟鎹€?val = rtcmem.read32(0) 鈥?Read the value in sLot 0 vail, val2 = rtcmem.read32(42j 2) 鈥?Read the vaLues in sLots 42 and 43 涔熷彲浠ョ湅鐪?rtcmem.write32() rtcmem.wiite32 () 浠庣储寮曞紑濮嬶紝灏嗕竴涓垨澶氫釜鍊煎啓鍏TC鐢ㄦ埛鍐呭瓨idx - 鍐欏叆鏈夋晥鑼冨洿澶栫殑绱㈠紩[0,12鍒€涓嶈捣浣滅敤銆?鍙ユ硶 ptcmem銉粀pite32(idx, val [4 val24 ]) 鍙傛暟 銉籭dx浠庨浂寮€濮嬪啓鍏ョ殑绱㈠紩銆傚鏋滅粰鍑哄涓€硷紝鍒欒嚜鍔ㄩ€掑銆?-val瀛樺偍鐨勪环鍊?32浣? -val2鈥?瀛樺偍鐨勯檮鍔犲€?鍙€? 杩斿洖 nil 渚?rtcmem.write32(0J 53) 鈥?Store the vaLue 53 in sLot 0 rtcmem.write32(42j 2, 5, 7) 鈥?Store the vaLues 2, 5 and 7 into sLots 42, 43 and 涔熷彲浠ョ湅鐪?rtcmem.read32() RTC鏃堕棿妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2015骞?鏈?25 S DiUS, JohnyMattsson, Bernd Meyer bmeyer@dius.com.au Johny Mattsson rtctime.c

rtctime妯″潡涓篘odeMCU鎻愪緵楂樼骇鏃堕挓鏀寔锛屽寘鎷湪娣卞害鐫$湢鍛ㄦ湡鍐呬繚鎸佹椂闂达紙浣跨敤鎻?渚況tctime.dsleep锛堬級鐨勪唬鏇縩ode.dsleep锛堬級锛夈€傝繖鍙互鐢ㄦ潵鏄剧潃寤堕暱鐢垫睜渚涚數鐨勪紶鎰熷櫒鑺?鐐圭殑鐢垫睜瀵垮懡锛屽洜涓烘瘡娆″敜閱掓椂涓嶅啀闇€瑕佸惎鍔≧F妯″潡浠ヤ究鑾峰緱鍑嗙‘鐨勬椂闂存埑銆?姝ゆā鍧楁棬鍦ㄤ笌NTP 锛堢綉缁滄椂闂村崗璁級涓€璧蜂娇鐢紝浠ュ缁堜繚鎸侀珮搴﹀噯纭殑瀹炴椂鎬с€傛椂闂存埑浠ュ井 绉掔簿搴︽彁渚涳紝鍩轰簬Unix Epoch 锛?970/01/0100:00:00锛夈€傜劧鑰岋紝鍑嗙‘搴︼紙瀹為檯涓婏級鏄?姣浠?鍐咃紝骞朵笖寰€寰€姣旇繖杩樺樊銆?鍦‥SP8266涓婁繚鎸佹椂闂村湪鎶€鏈笂鐩稿綋鍏锋湁鎸戞垬鎬с€傚敖绠¤鍛藉悕涓篟TC,浣哛TC骞朵笉鏄湡姝f剰涔?涓婄殑瀹炴椂鏃堕挓銆傝櫧鐒跺畠鍦ㄦā鍧楀浜庣潯鐪犵姸鎬佹椂纭疄淇濇寔璁℃暟鍣ㄦ淮绛旂姸鎬侊紝浣嗘槸瀹冪殑鍑嗙‘鎬ч珮 搴︿緷璧栦簬鑺墖鐨勬俯搴︺€傛墍杩版俯搴﹀湪鑺墖杩愯鏃跺拰浼戠湢鏃堕棿涔嬮棿鏄剧潃鍙樺寲锛岃繖鎰忓懗鐫€鍦ㄨ姱鐗囧伐 浣滄椂鎵ц鐨勪换浣曟牎鍑嗗湪鑺墖杩涘叆鐫$湢涔嬪悗浠呬粎鏄煭鏆傜殑銆傚洜姝わ紝闇€瑕佸湪鏁翠釜鐫$湢鍛ㄦ湡涓帹瀵?鍑烘牎鍑嗗€硷紝浠ヤ究瀹炵幇鍑嗙‘鐨勬椂闂翠繚鎸併€傝繖鏄繖涓ā鍧楁墍鍋氱殑浜嬫儏涔嬩竴銆?鏃堕棿淇濇寔闂鏇村鏉傜殑鏄紝ESP8266鍦ㄤ笁绉嶄笉鍚岀殑鏃堕挓棰戠巼涓嬪伐浣滐細姝e父鍚姩鏃朵负52MHz, 姝e父宸ヤ綔鏃朵负80MHz,濡傛灉鍚姩鍒欎负160MHz銆傛湰鍗曞厓鑺辫垂浜嗙浉褰撻暱鐨勬椂闂存潵鑰冭檻鎵€鏈夎繖 浜涳紝浠ラ€傚綋鍦颁繚鎸佹椂闂淬€?瑕佸惎鐢ㄨ繖涓ā鍧楋紝鑷冲皯闇€瑕佺粰涓€娆″弬鑰冩椂闂达紙閫氳繃rtctime.set锛堬級锛夈€備负浜嗚幏寰楁渶浣崇殑绮?搴︼紝寤鸿瀹氭湡鎻愪緵鍙傝€冩椂闂淬€傝sntp.syncO鍔熻兘鏈変竴涓畝鍗曠殑鏂规硶鏉ュ仛鍒拌繖涓€鐐广€傛彁渚涘弬 鑰冩椂闂磋嚦灏戜袱娆℃槸閲嶈鐨勶紝绗簩娆℃槸鍦ㄦ繁搴︾潯鐪犱箣鍚庛€?璇锋敞鎰忥紝铏界劧rtctime妯″潡鍙互鍦ㄦ繁搴︾潯鐪犱腑淇濇寔鏃堕棿锛屼絾濡傛灉妯″潡鎰忓閲嶇疆锛屽皢浼氭氮璐规椂 闂淬€?杩欎釜妯″潡鍙互琛ュ伩娌℃湁鎸夌収瑕佹眰鐨勯€熺巼杩愯鐨勫簳灞傛椂閽熴€傝皟鏁存槸鍦?浜?2 锛堝嵆绾?.25ppb锛?1 閮ㄥ垎鐨勬楠ゃ€傚鏋渟ntp.sync锛堬級浣跨敤autorepeat鏍囧織璁剧疆璋冪敤锛屽垯鑷姩瀹屾垚姝よ皟闈堛€傝垂鐜?鍙互浣跨敤set锛堬級涓嬮潰鐨勫姛鑳借缃€傚钩鍙板惎鍔ㄦ椂锛岄粯璁や负0 锛堝嵆鏍囩О锛夈€傛ā鍧楁牱鏈樉绀哄疄闄呮椂 閽熼鐜囦笌娓╁害鏈夊叧锛屼絾閫氬父鍦ㄩ瀹氶鐜囩殑5ppm浠ュ唴銆傝繖杞寲涓烘瘡鏈?5绉掑乏鍙炽€?鍦ㄨ嚜鍔ㄦ洿鏂版ā寮忎笅锛屾椂閽熼鐜囧彲鑳介渶瑕佸嚑涓皬鏃舵墠鑳借揪鍒版纭殑鍊笺€備箣鍚庯紝璺熻釜鐨勬椂闂村皢鍙?鍐充簬NTP鏈嶅姟鍣ㄧ殑鏃堕棿鎴冲彉鍖栭噺銆傚鏋滀粬浠帴杩戯紝閭d箞鏃堕棿灏嗚拷韪埌姣宸﹀彸銆傚鏋滆窛绂昏緝 杩滐紙渚嬪寰€杩?00ms锛?鍒欐椂闂磋窡韪細绋嶅樊涓€浜涳紝浣嗛€氬父鍦?0ms鍐呫€?銆傞噸瑕?姝ゆā鍧椾娇鐢≧TC鍐呭瓨鎻掓Ы0-9 锛堝惈锛夈€備竴鏃tctime.set锛堬級 浣跨敤杩欎簺RTC鍐呭瓨鎻掓Ы銆?杩欐槸rtcmem鍜孲NTP妯″潡鐨勯厤濂楁ā鍧椼€?rtctimedsleep () 灏咵SP8266缃簬娣卞害鐫$湢妯″紡锛屽鑺傜偣銆?rtctime.dsleep_aligned () 瀵逛簬闇€瑕侀珮瑙勬牸鍙栨牱鐨勫簲鐢紝姝ゅ姛鑳介潪甯告湁鐢ㄣ€?rtctime.epoch2cal () 灏哢nix鏃堕棿鎴宠浆鎹负0鍘嗘牸寮忋€?rtctimeget () 杩斿洖褰撳墠鏃堕棿銆?rtctimeset () 鍦║nix绾厓(io )涓皢rtctime璁剧疆涓轰竴涓粰瀹氱殑鏃堕棿鎴炽€?/p>

rtctime.dsleep () 浣縀SP8266杩涘叆娣卞害鐫$湢妯″紡node.dsleep() 掳瀹冧笉鍚屼簬node.dsleep()浠ヤ笅鏂归潰锛?-鏃堕棿淇濇寔鍦ㄦ繁搴︾潯鐪犮€傚嵆rtctime.getO浼氱户缁伐浣?鎻愪緵鐨勬椂闂存槸鐫″墠鍙敤)銆?-杩欎釜璋冪敤姘镐笉杩斿洖銆傝妯″潡绔嬪嵆鐫¤銆傝繖鏃㈡槸涓轰簡鏀寔鍑嗙‘鐨勬椂闂翠繚鎸佸拰闄嶄綆鍔熻€椼€?鈥㈢潯瑙夌殑鏃堕棿閫氬父浼氭瘮浠ュ墠鍑嗙‘寰楀node.dsleep()銆?-鐫$湢鏃堕棿涓洪浂骞朵笉鎰忓懗鐫€鏃犻檺鏈熺潯鐪狅紝鑰屾槸琚В閲婁负闆堕暱搴︾潯鐪犮€?褰撶潯鐪犲畾鏃跺櫒鍒版湡鏃讹紝骞冲彴閲嶆柊鍚姩骞朵笖lua浠g爜涓巌nit.lua鏂囦欢涓€璧峰惎鍔ㄣ€傛椂閽熻瀹氬悎鐞?鍑嗙‘銆?鍙ユ硶 rtctime.dsleep(microseconds [, option]) 鍙傛暟 鈥icroseconds鐫$湢鏃堕棿鐨勫井绉掓暟銆傛渶澶у€兼槸4294967295us,鎴杶71鍒嗛挓銆?鈥ption鐫$湢閫夐」锛岃鍙傞槄node.dsleep()鍏蜂綋淇℃伅銆?杩斿洖 杩欎釜鍑芥暟涓嶈繑鍥炪€?渚?鈥搒Leep for a minute rtctime.dsleep(601000000) 鈥搒Leep for 5 secondsj do not start RF on wakeup rtctime , dsleep(5000000, 4) rtctime.dsleep_aligned () 瀵逛簬闇€瑕侀珮瑙勬牸鍙栨牱鐨勫簲鐢紝姝ゅ姛鑳介潪甯告湁鐢ㄣ€傚畠鎻愪緵浜嗕竴绉嶇畝鍗曠殑鏂规硶鏉ュ疄鐜?鍦ㄤ笅涓€涓? 鍒嗛挓鐨勮竟鐣屼笂"閱掓潵锛岃€屼笉蹇呭湪杩斿洖鐫$湢涔嬪墠鏄庣‘鍦拌€冭檻妯″潡宸辩粡娲诲姩浜嗗涔呫€?鍙ユ硶 rtctime.dsleep_aligned(aligned_uSj minsleep_us [, option]) 鈥ligned_us浠ュ井绉掍负鍗曚綅鐨勮竟鐣岄棿闅?-minsleep_us鏈€灏忕殑鏃堕棿灏嗙潯瑙夛紝濡傛灉闇€瑕佽烦杩囦竴涓椂闂撮棿闅斻€傝繖閫傜敤浜庡湪ESP8266杩?鍏ヤ紤鐪犳ā鎴栦箣鍓嶅紑濮嬮噯鏍疯鏁扮殑浼犳劅鍣紝鐒跺悗鍦ㄥ敜閱掓椂璇诲彇銆傝繖閲宮insleep.us搴旇鏄?浼犳劅鍣ㄩ噰鏍锋墍闇€鐨勬渶鐭椂闂淬€?鈥ption涓庝箣涓€鏍穌sleep() , option濡傛灉鎸囧畾锛屽垯璁剧疆鐫$湢閫夐」銆?渚?鈥搒Leep at Least 3 seconds, then wake up on the next 5-second boundary rtctime.dsleep_aligned(51000000j 3*1000000) rtctime.epoch2cal () 灏哢nix鏃堕棿鎴宠浆鎹负鏃ュ巻鏍煎紡銆傛椂鍖哄拰DST鏍℃閮戒笉浼氭墽琛?缁撴灉鏄疷TC鏃堕棿銆?鍙ユ硶 rtctime.epoch2cal(timestamp) 鍙傛暟 timestamp鑷猆nix绾厓浠ユ潵鐨勭鏁?杩斿洖 鍖呭惈瀛楁鐨勮〃鏍硷細 -year 1970銆?038骞?銉籱on鏈勾搴?銆?2鏈堜唤 鈥ay褰撴湀1銆?1鏃?鈥our 鈥in 鈥ec 鈥day褰撳勾1銆?66澶?鈥day褰撳墠1 ~7鏃ュ急(鍛ㄦ棩1鐐? 渚?tm = rtctime.epoch2cal(rtctime.get()) print(string.format("%04d/%02d/%02d %02d:%02d:%02d"4 tm[鈥測ear鈥漖, tm[鈥渕on鈥漖銆弔m["i rtctime.get () 杩斿洖褰撳墠鏃堕棿銆傚鏋滃綋鍓嶆椂闂翠笉鍙敤锛屽垯杩斿洖闆躲€?rtctime.get() 鍙傛暟 娌℃湁 杩斿洖 涓夊€兼椂闂存埑鍖呭惈锛?-sec鑷粠Unix绾厓浠ユ潵鐨勭鏁?鈥see寰鐨勯儴鍒?, rate褰撳墠鏃堕挓棰戠巼鍋忕Щ銆傝繖鏄痳ate / 2A32 (鍚嶄箟鍒╃巼涓?)鐨勫亸绉婚噺銆備緥濡傦紝4295鐨?鍊煎搴斾簬鐧句竾鍒嗕箣涓€銆?渚?sec, usee, rate = rtctime.get() 涔熷彲浠ョ湅鐪?rtctime.set() rtctime.set () 鍦║nix鏃朵唬灏唕tetime璁剧疆涓虹粰瀹氱殑鏃堕棿鎴?鍗充粠1970/01/01鍗堝寮€濮?銆傚鏋滄ā鍧楄繕娌℃湁淇?鎸佹椂闂达紝鐜板湪灏卞紑濮嬨€傚鏋滄ā鍧楀繁缁忎繚鎸佹椂闂达紝鍒欎娇鐢ㄨ繖涓椂闂存潵甯姪璋冩暣鍏跺唴閮ㄦ牎鍑嗗€笺€?娉ㄦ剰浠庢案涓嶉€€姝ヨ繑鍥炵殑鏃堕棿鎴炽€傚鏋滄湁蹇呰鐨勮瘽锛屾椂闂翠細琚窐姹帮紝骞堕€愭笎琚拷 涓娿€俽tetime.get() 寮虹儓寤鸿閫氳繃NTP (璇峰弬闃匰NTP妯″潡)锛孏PS鎴栧叾浠栭珮绮惧害鏃堕棿婧愯幏鍙栨椂闂存埑銆?闈炲父鎺ヨ繎鏃朵唬鐨勫€间笉琚敮鎸併€傝繖鏄繚鎸佸唴瀛樿姹傚敖鍙兘浣庣殑鍓綔鐢ㄣ€傝€冭檻鍒板畠涓嶅啀鏄?970 骞达紝杩欎笉琚涓烘槸涓€涓棶棰樸€?鍙ユ硶 rtetime.set(seconds, microseconds^ [rate]) 鍙傛暟 -seconds浠嶶nix绾厓绠楄捣鐨勭鏁伴儴鍒?鈥icroseconds寰鐨勯儴鍒?鈥ate鍦ㄥ悓鏍风殑鍗曚綅姣旂巼rtetime.get()銆傚鏋滄湭鎸囧畾锛屽垯瀛樺偍鐨勯€熺巼涓嶄細琚慨鏀广€?杩斿洖 nil 渚?鈥揝et time to 2015 JuLy 9, 18:29:49 rtetime.set(1436430589j 0) 涔熷彲浠ョ湅鐪?sntp.sync() 鏂囨。銆嬭嫳璇€濇ā鍧椔籹i7021 Si7021妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2017骞?鏈?9鏃?fetchbot fetchbot si7021.c

璇ユā鍧楁彁渚涘Si7021婀垮害鍜屾俯搴︿紶鎰熷櫒鐨勮闂? si7021.firmware () 闃呰S7021浼犳劅鍣ㄧ殑鍐呴儴鍥轰欢鐗堟湰銆?si7021.read () si7021.serial () 璇诲彇Si7021浼犳劅鍣ㄧ殑涓€у寲64锝涚珛鐢靛瓙搴忓垪鍙枫€?si7021.setting () 璁剧疆浼犳劅鍣ㄩ厤缃瘎瀛樺櫒鏉ヨ皟鏁存祴閲忓垎杈ㄧ巼锛岀墖涓婂姞鐑櫒鍜岃鍙栫數婧愮數鍘嬬姸 鎬併€?si7021.setup () 鍦ㄥ浐瀹氱殑FC鍣ㄤ欢鍦板潃(0x40)涓婂垵濮嬪寲鍣ㄤ欢銆?/p>

si7021.firmware () 闃呰Si7021浼犳劅鍣ㄧ殑鍐呴儴鍥轰欢鐗堟湰銆?鍙ユ硶 si7021.firmware() 鍙傛暟 娌℃湁 杩斿洖 fwrev鍥轰欢鐗堟湰鍥轰欢鐗堟湰1.0鍥轰欢鐗堟湰2.0 0XFF 0x20 渚?local sdaj scl = 6, 5 i2c.setup(0j sda, scl> i2c.SL0W) 鈥?caLL i2c.setup() onLy once si7021.setup() fwrev = si7021.firmware() print(string.format(MFW: %X\r\n"J fwrev)) si7021.read () si7021.read() 鍙傛暟 娌℃湁 杩斿洖 鈥um婀垮害(瑙佷笅闈㈢殑娉ㄩ噴) 鈥emp娓╁害(瑙佷笅闈㈢殑娉ㄩ噴) 鈥um_dec婀垮害灏忔暟 鈥emp_dec娓╁害鍗佽繘鍒?鉂舵敞鎰?濡傛灉浣跨敤娴姩鍥轰欢鐒跺悗hum鍜宼emp鏄诞鐐规暟銆傚湪鏁存暟鍥轰欢涓婏紝鏈€鍚庣殑鍊煎繀椤讳粠hum 鍜?hum_dec / temp 鍜岃繛鎺ヨ捣鏉?temp_dec銆?渚?local sda, scl = 6, 5 i2c.setup(0J sda, scl, i2c.SLOW) 鈥?caLL i2c.setup() onLy once si7021.setup() hum, temp, hum_deCj temp_dec = si7021.read() 鈥揑nteger firmware using this exampLe print(string.format(鈥淗umidity:\t\t%d.%03d\nTemperature:\t%d.%03d\n鈥? hum, hum 鈥揊Loat firmware using this exampLe print(鈥淗umidity: 鈥溾€um鈥︹€漒n鈥濃€?Temperature: "鈥emp) si7021.serial () 璇诲彇Si7021浼犳劅鍣ㄧ殑涓€у寲64浣嶇數瀛愬簭鍒楀彿銆?鍙ユ硶 si7021.serial() 鍙傛暟 娌℃湁 杩斿洖 鈥?sna 32浣嶅簭鍒楀彿閮ㄥ垎a , snb 32浣嶅簭鍒楀彿閮ㄥ垎b,楂樹綅瀛楄妭鍖呭惈璁惧鏍囪瘑 O 0X00鎴?xFF宸ョ▼鏍峰搧 O 0x0D 13 Si7013 O 0x14 20 Si7020 O 0X15 21 S17021 渚?local sda, scl = 6, 5 i2c.setup(0, sda, scl, i2c.SLOW) 鈥?caLL i2c.setup() onLy once si7021.setup() sna, snb = si7021.serial() print(string.format(鈥淪N:\t\t%X%X\nDevice:\tSi70%d鈥? sna, snb, bit.pshift(snb禄24) si7021.setting () 璁剧疆浼犳劅鍣ㄩ厤缃瘎瀛樺櫒鏉ヨ皟鏁存祴閲忓垎杈ㄧ巼锛岀墖涓婂姞鐑櫒鍜岃鍙栫數婧愮數鍘嬬姸鎬併€?鍙ユ硶 si7021.setting(RESOLUTION[J HEATER, HEATER_SETTING]) 鍙傛暟 銉?RESOLUTION o si7021.RH12_TEMP14 鐩稿婀垮害12浣?娓╁害14浣?榛樿) 0 si7021.RH08_TEMP12 鐩稿婀垮害8浣?娓╁害12浣?0 si7021.RH10_TEMP13 鐩稿婀垮害10浣?娓╁害13浣?0 si7021.RHll_TEMPll 鐩稿婀垮害11浣?娓╁害11浣?鈥?HEATER鍙€夌殑 0 si7021.HEATER_ENABLE鐗囦笂鍔犵儹鍣ㄥ惎鐢?o si7021.HEATER_DISABLE鐗囦笂鍔犵儹鍣ㄧ鐢?榛樿) 鈥?HEATER_SETTING 鍙€夌殑 o 0x00 - 0x0F 3.09 mA - 94.20 mA

杩斿洖 鈥?resolution 0 0 鐩稿婀垮害12浣?娓╁害14浣?0 1 鐩稿婀垮害8浣?娓╁害12浣?0 2 鐩稿婀垮害10浣?娓╁害13浣?0 3 鐩稿婀垮害11浣?娓╁害11浣?鈥?vdds o 0 VDD姝e父(1.9V-3.6V) o 1 VDD浣?1.8V-1.9V) 鈥eater 銆傘€傛畫 銆?鍚敤 鈥eater_setting o 0 - 15 local id, sda, scl = 0, 6, 5 i2c.setupCid, sda, scl, i2c.SLOW) 鈥?coLL i2c.setup() onLy once si7021.setup() resj vdds, heater, heater_set = s17021.setting(s17021.RH12_TEMP14) res, vdds, heater, heater_set = si7021.setting(si7021.RH12_TEMP14, si7021.HEATER si7021.setup () 鍦ㄥ浐瀹氱殑銆嶤鍣ㄤ欢鍦板潃(0x40)涓婂垵濮嬪寲鍣ㄤ欢銆?鍙ユ硶 si7021.setup() 鍙傛暟 娌℃湁 杩斿洖 nil local sda, scl = 6, 5 i2c.setup(0, sdascl, i2c.SLOW) 鈥?caLL i2c.setup() onLy once si7021.setup() Sigma-delta 妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016骞?鏈?0鏃?浠spressif涓轰緥,ArnimLauger 闃垮凹濮嗏€㈡媺鏍?sigma_delta.c 璇ユā鍧楁彁渚涘sigma-delta缁勪欢鐨勮闂€傝繖鏄竴涓‖浠朵俊鍙峰彂鐢熷櫒锛屽彲浠ヨ繛鎺ュ埌闄ゅ紩鑴?涔嬪鐨?浠讳綍GPlOo

淇″彿鐨勪骇鐢熸槸鐢眘etprescale()鍜宻ettarget()鍔熻兘鎺у埗鐨勩€?-0銆堢洰鏍囷紲=128 1锛氶珮=(棰勫垎棰?1) /80寰 t鍛ㄦ湡=涓冮珮256/1鏍?-128銆堢洰鏍囷紲256 涓冧綆=(棰勫垎棰?1)/80寰 t鍛ㄦ椃浣庝綆256/ (256-鐩爣) 銉荤洰鏍?0 淇″彿鍋滃湪浣庝綅 鍦ㄣ€?12.5 kHz鐨勫浐瀹氶鐜嘝WM鍙互浣跨敤璇etpwmdutyO鍔熻兘銆?sigma_delta.close () 鍋滄淇″彿鐢熸垚锛屽苟鍦ㄦ寚瀹氱殑寮曡剼涓婇噸鏂板惎鐢℅PIO鍔熻兘銆?sigma_delta.setprescale () 璁剧疆棰勫垎棰戝€笺€?sigma_delta.setpwmduty () 浠ュ浐瀹氬熀棰戠殑PWM妯″紡鎿嶄綔sigma-del ta妯″潡= sigma_delta.settarget () 璁惧畾鐩爣鍊笺€?sigma_delta.setup () 鍋滄淇″彿鍙戠敓鍣ㄥ苟灏嗗叾璺敱鍒版寚瀹氱殑寮曡剼銆?/p>

sigma_delta.close () 鍋滄淇″彿鐢熸垚锛屽苟鍦ㄦ寚瀹氱殑寮曡剼涓婇噸鏂板惎鐢℅PIO鍔熻兘銆?鍙ユ硶 sigma_delta.close(pin) 鍙傛暟 pin 1銆?2, I銆傛寚鏁?杩斿洖 nil sigma_delta.setprescale () 璁剧疆棰勫垎棰戝€笺€?鍙ユ硶 'sigma_delta.setprescale (鍊? 鍙傛暟 value棰勫垎棰?鑷?55 杩斿洖 nil 涔熷彲浠ョ湅鐪?sigma_delta.settarget() sigma_delta.setpwmduty () 浠ュ浐瀹氬熀棰戠殑PWM妯″紡鎿嶄綔sigma-delta妯″潡銆?鍙ユ硶 sigma_delta.setpwmduty(ratio) 鍙傛暟 ratio 0鈥?55鐨勫崰绌烘瘮0鈥?00%,銆備娇淇″彿澶勪簬浣庣數骞?杩斿洖 nil 渚?鈥揳ttach generator to pin 2 sigma_delta.setup(2) 鈥搒et 50% duty cycle ratio (and impLicitLy start signaL) sigma_delta.setpwmduty(128) 鈥搒top sigma_delta.setpwmduty(0) 鈥搑esume with ~99.6% ratio sigma_delta , setpwmduty(255) 鈥搒top and detach generator from pin 2 sigma_delta.close(2) sigma_delta.settarget () 璁惧畾鏃ユ爣鍊笺€?鍙ユ硶 sigma_delta.settarget(value) 鍙傛暟 value鐩爣銆傚埌255 杩斿洖 nil 涔熷彲浠ョ湅鐪?sigma_delta.setprescale() sigma_delta.setup () 鍋滄淇″彿鍙戠敓鍣ㄥ苟灏嗗叾璺敱鍒版寚瀹氱殑寮曡剼銆?鍙ユ硶 sigma_delta.setup(pin) 鍙傛暟 pin 1銆?2, I銆傛寚鏁?杩斿洖 nil SJSON妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2017骞?鏈?鏃?鑿插埄鏅€㈡牸鑾辨柉椤?鑿插埄鏅€㈡牸鑾辨柉椤?sjson

JSON鏀寔妯″潡銆傚厑璁稿JSON杩涜缂栫爜鍜岃В鐮併€?璇锋敞鎰忥紝宓屽琛ㄦ牸鍙兘闇€瑕佸ぇ閲忓唴瀛樻潵缂栫爜銆傝鍙戠幇鍐呭瓨涓嶈冻鐨勯敊璇紝璇蜂娇鐢╬call锛堬級 0 杩欐浠g爜浣跨敤娴佸紡json搴搄sonsl鏉ヨВ鏋愬瓧绗︿覆銆?杩欎釜妯″潡鍙互鐢ㄤ袱绉嶆柟寮忎娇鐢ㄣ€傛洿绠€鍗曠殑鏂规硶鏄娇鐢ㄥ畠浣滀负cjson鐨勭洿鎺ユ彃鍏ワ紙浣犲彲浠ヨ繖鏍?鍋歘G.cjson = sjson 锛夈€傛洿楂樼骇鐨勬柟娉曟槸浣跨敤娴佸紡鎺ュ彛銆傝繖鍏佽缂栫爜鍜岃В鐮佹樉鐫€鏇村ぇ鐨勫 璞°€?json null鐨勫鐞嗗涓嬶細 銉婚粯璁ゆ儏鍐典笅锛岃В鐮佸櫒浠h〃null浣滀负sjson.NULL 锛堣繖鏄竴涓猽serdata瀵硅薄锛夈€傝繖鏄痗json鐨勮 涓恒€?銉荤紪鐮佸櫒鎬绘槸灏嗕换浣晆serdata瀵硅薄杞崲涓簄ull銆?-鍙€夊湴锛屽彲浠ュ湪缂栫爜鍣ㄥ拰瑙g爜鍣ㄤ腑鎸囧畾鍗曚釜瀛楃涓层€傝瀛楃涓插皢鐢ㄤ簬缂栫爜/瑙g爜浠ヨ〃绀簀son 绌哄€笺€傝繖涓瓧绗︿覆涓嶅簲璇ュ湪鏁版嵁缁撴瀯鐨勫叾浠栧湴鏂逛娇鐢ㄣ€備竴涓悎閫傜殑浠峰€煎彲鑳芥槸0 褰撶紪鐮佷竴涓猯ua瀵硅薄鏃讹紝濡傛灉鎵惧埌涓€涓嚱鏁帮紝閭d箞瀹冭璋冪敤锛堟病鏈夊弬鏁帮級锛屽苟涓旓紙鍗曚釜锛夎繑鍥?鍊艰缂栫爜鍦ㄥ嚱鏁扮殑鍦版柟銆?sjson.encoder () 杩欏皢鍒涘缓涓€涓紪鐮佸櫒瀵硅薄锛屽彲浠ュ皢LUA瀵硅薄杞崲涓篔SON缂栫爜鐨勫瓧绗︿覆銆?sjson.encoder锛氶槄璇?杩欎細寰楀埌涓€澶у潡JSON缂栫爜鏁版嵁銆?sjson.encode () 灏哃ua琛ㄧ紪鐮佷负JSON瀛楃涓层€?sjson.decoder () 杩欎娇寰楄В鐮佸櫒瀵硅薄鍙互灏咼SON缂栫爜鐨勫瓧绗︿覆瑙f瀽涓簂ua瀵硅薄銆?sjson.decoder锛氬啓 杩欐彁渚涗簡鏇村鐨勬暟鎹鍒嗘瀽鍒發ua瀵硅薄涓€?sjson.decoder锛氱粨鏋?杩欏皢鑾峰緱瑙g爜鐨刲ua瀵硅薄锛屾垨鑰呭鏋滆В鐮佸皻鏈畬鎴愶紝鍒欎細寮曞彂閿欒銆?sjson.decode () 瑙g爜涓€涓狫SON瀛楃涓插埌涓€涓狶ua琛ㄣ€?甯搁噺 鏈変竴涓父鏁?sjson銆?/p>

sjson.encoder () 杩欏皢鍒涘缓涓€涓紪鐮佸櫒瀵硅薄锛屽彲浠ュ皢LUA瀵硅薄杞崲涓篔SON缂栫爜鐨勫瓧绗︿覆o 鍙ユ硶 sjson.encoder(table [, opts]) 鍙傛暟 銉籺able鏁版嵁杩涜缂栫爜 鈥?opts 涓€涓彲閫夌殑閫夐」琛ㄣ€傚彲鑳界殑鏉$洰鏄細 -depth缂栫爜琛ㄦ墍闇€鐨勬渶澶х紪鐮佹繁搴︺€傞粯璁ゅ€兼槸20,鍑犱箮閫傜敤浜庢墍鏈夋儏鍐点€?銉籲ull灏嗗瓧绗︿覆鍊艰涓簄ull銆?杩斿洖 涓€涓?sjson.encoder 瀵硅薄銆?sjson.encoder锛?闃呰 杩欎細寰楀埌涓€澶у潡JSON缂栫爜鏁版嵁銆?鍙ユ硶 encoder:read([size]) 鍙傛暟 銉籹ize 涓€涓彲閫夌殑杩斿洖瀛楄妭鏁板€笺€傞粯璁ゅ€兼槸1024銆?杩斿洖 鏈€澶氬彲鍖呭惈size瀛楄妭鐨勫瓧绗︿覆锛屾垨鑰卬il缂栫爜瀹屾垚涓旀墍鏈夋暟鎹凡琚繑鍥炪€?渚?浠ヤ笅绀轰緥鎵撳嵃鍑?浠?4瀛楄妭鍧椾负鍗曚綅)鍖呭惈鏂囦欢绯荤粺涓瘡涓枃浠剁殑鍓?k鐨凧SON缂栫爜鐨勫瓧绗?涓层€傛€诲瓧绗︿覆鍙互澶т簬NodeMCU涓婄殑鎬诲唴瀛橀噺銆?function files() result = () for k,v in palrs(file.list()) do result[k] = function() return file.open(k):read(4096) end end return result end local encoder = sjson.encoder(files()) while true do data = encoder:read(64) if not data then break end print(data) end sjson.encode () 灏哃ua琛ㄧ紪棣呬负JSON瀛楃鍗樸€傝繖鏄负浜嗗唻鍚庡吋瀹瑰彥鎻愪緵鏃充究鍒╀竾娉昪json銆?鍙ユ硶 sjson.encode(table [, opts]) 鍙傛暟 銉籺able鏁版嵁杩涜缂栫爜 鈥?opts 涓€涓彲閫夌殑閫夐」琛ㄣ€傚彲鑳界殑鏉$洰鏄細 銆俤epth缂栫爜琛ㄦ墍闇€鐨勬渶澶х紪鐮佹繁搴︺€傞粯璁ゅ€兼槸20,鍑犱箮閫傜敤浜庢墍鏈夋儏鍐点€?0 null灏嗗瓧绗︿覆鍊艰涓簄ull銆?杩斿洖 JSON瀛楃涓?渚?ok, json = pcall(sjson.encode, {key=鈥渧alue鈥潁) if ok then print(json) else print(鈥渇ailed to encode!鈥? end sjson.decoder () 杩欎娇寰楄В鐮佸櫒瀵硅薄鍙互灏咼SON缂栫爜鐨勫瓧绗︿覆瑙f瀽涓簂ua瀵硅薄銆傚彲浠ヤ负鎵€鏈夋柊鍒涘缓鐨刲ua琛ㄦ寚瀹?metatableo杩欏厑璁告偍鍦ㄦ彃鍏ュ埌姣忎釜琛ㄤ腑鏃跺鐞嗘瘡涓€?閫氳繃瀹炴柦璇?newindex鏂规硶)銆?鍙ユ硶 sjson.decoder([opts]) 鍙傛暟 鈥pts 涓€涓彲閫夌殑閫夐」琛ㄣ€傚彲鑳界殑鏉$洰鏄細 銆俤epth缂栫爜琛ㄦ墍闇€鐨勬渶澶х紪鐮佹繁搴︺€傞粯璁ゅ€兼槸20,鍑犱箮閫傜敤浜庢墍鏈夋儏鍐点€?0 null灏嗗瓧绗︿覆鍊艰涓簄ull銆?掳 metatable 涓€涓〃浣滀负杩斿洖瀵硅薄涓墍鏈夋柊琛ㄧ殑鍏冩暟鎹€?杩斿洖 涓€涓?sjson.decoder 瀵硅薄 鍏冭〃 鍦ㄥ厓琛ㄤ腑鏈変袱涓富瑕佺殑鏂规硶(濡傛灉瀛樺湪鐨勮瘽)銆?鈥?newindex杩欐槸鍒涘缓鏂拌〃鏍煎厓绱犳椂璋冪敤鐨勬爣鍑嗘柟娉曘€?-checkpath杩欒璋冪敤(濡傛灉瀹氫箟鐨勮瘽)锛屾瘡褰撳垱寤轰竴涓柊琛ㄣ€傚畠琚皟鐢ㄤ簡涓や釜鍙傛暟锛?掳 table杩欐槸鏂板垱寤虹殑琛ㄦ牸 O path杩欐槸浠庢牴鏃抽敭鏃冲垪琛ㄣ€倀rue濡傛灉浠荤妇鏋滀腑闇€瑕佽瀵瑰啟锛屽垯蹇呴』杩斿洖锛宖alse 鍚﹀垯杩斿洖銆?渚嬪锛岃В鐮佹椂{ 鈥渇oo鈥? [1, 2, []] },妫€鏌ヨ矾寰勫皢琚皟鐢ㄥ涓嬶細 鈥heckpath({}, {})鐨則able璇存硶鏄紝灏嗕笌JSON瀵硅薄鐨勫€兼墍瀵瑰簲鐨勫璞°€?-checkpath({}, {鈥渇oo鈥潁)鐨則able璇存硶鏄紝灏嗕笌澶朖SON鏁扮粍鐨勫€兼墍瀵瑰簲鐨勫璞°€?鈥heckpath({}, {鈥渇oo鈥? 3))鐨則able璇存硶鏄紝灏嗗搴斾簬绌虹殑鍐呴儴JSON闃靛垪鐨勫璞°€?褰揷heckpath璋冪敤璇ユ柟娉曟椂锛宮etatable宸茬粡涓庢柊琛ㄧ浉鍏宠仈銆傚洜姝heckpath ,濡傛灉闇€瑕侊紝 璇ユ柟娉曞彲浠ュ彇浠e畠銆備緥濡傦紝濡傛灉鎮ㄦ鍦ㄨВ 鐮侊紝{ 鈥渇oo鈥? { 鈥渂ar鈥? 鈥渃at鈥? [5] } }骞朵笖鐢变簬鏌愮鍘熷洜锛屾偍涓嶆兂鎹?鑾?bar"瀵嗛挜鐨勫€硷紝閭d箞鏈夊绉嶆柟娉曞彲浠ユ墽琛屾鎿嶄綔锛?鈥㈠湪 newindex metamethod涓紝鍙渶妫€鏌ュ瘑閽ョ殑鍊硷紝rawset濡傛灉瀵嗛挜鏄烦杩?bar" o 杩欏彧閫傜敤浜庡鏋滀綘鎯宠烦杩囨墍鏈夌殑"bar"閿€?鈥㈠湪璇heckpath鏂规硶涓紝濡傛灉璺緞鏄痆鈥渇oo鈥漖,鍒欒繑鍥瀎alse銆?鈥娇鐢ㄤ互涓嬪唴瀹筩heckpath : checkpat h=f unction (tab j path) tab[鈥?json_path鈥?] = path return true end 杩欏皢 淇濆瓨姣忎釜鏋勯€犲璞$殑璺緞銆傜幇鍦ㄨ鈥攏ewindex鎴库枲娉曞彲浠ユ墽琛屾洿澶嶆潅鐨勮繃婊ゃ€?鑳藉杩囨护鐨勫師鍥犳槸瀹冭兘澶熷湪鍐呭瓨鍙楅檺鐨勫钩鍙颁笂澶勭悊闈炲父澶х殑JSON鍝嶅簲銆傝澶欰PI浼氳繑鍥炲ぇ閲?鐨勪俊鎭紝杩欎簺淇℃伅浼氳秴鍑哄钩鍙扮殑鍐呭瓨棰勭畻銆備緥 濡傦紝 https://api.github.com/repos/nodemcu/nodemcu-firmware/contents 瓒呰繃 13kB,浣?鏄紝濡傛灉浣犲彧闇€瑕乨ownload_url閽ュ寵锛岄偅涔堟€诲ぇ灏忕害涓?00B銆傝繖鍙互鐢ㄤ竴涓畝鍗?鐨?newindex鏂规硶鏉ュ鐞嗐€?sjson.decoder锛氬啓 杩欐彁渚涗簡鏇村鐨勬暟鎹鍒嗘瀽鍒發ua瀵硅薄涓€?鍙ユ硶 decoder:write(string) 鍙傛暟 鈥tring涓嬩竴鍧桱SON缂栫爜鏁版嵁 杩斿洖 鏋勯€犵殑lua瀵硅薄鎴杗il瑙g爜灏氭湭瀹屾垚銆?閿欒 濡傛灉鍦ㄨВ鐮佽繃绋嬩腑鍑虹幇鍒嗘瀽閿欒锛屽垯浼氭姏鍑洪敊璇紝骞惰В鏋愬垎鏋愩€傝瀵硅薄涓嶈兘鍐嶆浣跨敤銆?sjson.decoder锛?缁撴灉 杩欏皢鑾峰緱瑙g爜鐨刲ua瀵硅薄锛屾垨鑰呭鏋滆В鐮佸皻鏈畬鎴愶紝鍒欎細寮曞彂閿欒銆傝繖鍙互琚娆¤皟鐢紝骞朵笖 姣忔閮戒細杩斿洖鐩稿悓鐨勫璞°€?decoder:result() 閿欒 濡傛灉瑙g爜娌℃湁瀹屾垚锛屽垯浼氭姏鍑洪敊璇€?渚?local decoder = sjson.decoder() decoder:write(鈥淸10, 1鈥? decoder:write(鈥淚鈥? decoder:write(鈥? \鈥漟oo\鈥漖鈥? for k,v in pairs(decoder:result()) do print (k, v) end 涓嬩竴涓ず渚嬫紨绀轰簡浣跨敤metatable鍙傛暟銆傚湪杩欑鎯呭喌涓嬶紝瀹冨彧鏄墦鍗版搷浣滐紝浣嗗鏋滈渶瑕侊紝瀹冨彲 浠ュ畬鍏ㄧ姝㈠垎閰嶃€?local decoder = sjson.decoder({metatable= { newindex=function(t,k,v) print(鈥淪etting '鈥?鈥?k 鈥?鈥溾€?= '鈥?鈥?tostrinj rawset(tkjV) end}}) decoder jwriteCtl, 2, {鈥渇oo鈥?: 鈥渂ar鈥潁]鈥? sjson.decode () 瑙g爜涓€涓狫SON瀛楃涓插埌涓€涓狶ua琛ㄣ€傝繖鏄负浜嗗悜鍚庡吋瀹硅€屾彁渚涚殑渚垮埄鏂规硶cjson銆?鍙ユ硶 sjson.decode(str[, opts]) 鍙傛暟 -str JSON瀛楃涓叉潵瑙g爜 鈥?opts 涓€涓彲閫夌殑閫夐」琛ㄣ€傚彲鑳界殑鏉$洰鏄細 O depth缂栫爜琛ㄦ墍闇€鐨勬渶澶х紪鐮佹繁搴︺€傞粯璁ゅ€兼槸20,鍑犱箮閫傜敤浜庢墍鏈夋儏鍐点€?o null灏嗗瓧绗︿覆鍊艰涓簄ull銆?銆俶etatable 涓€涓〃浣滀负杩斿洖瀵硅薄涓墍鏈夋柊琛ㄧ殑鍏冩暟鎹€傝鍙傞槄sjson.decoder銆備笂 闈㈢殑鎻忚堪涓殑metatable閮ㄥ垎銆?杩斿洖 JSON鏁版嵁鐨凩ua琛ㄦ牸琛ㄧず 閿欒 濡傛灉瀛楃涓蹭笉鏄湁鏁堢殑JSON,鍒欎細鎶涘嚭閿欒銆?渚?t = sjson.decode(鈥檣鈥渒ey鈥?鈥渧alue鈥潁') for k,v in pairs(t) do print(k鈥檝) end 甯搁噺 鏈変竴涓父閲?sjson.null鍦╨ua缁撴瀯涓敤浜庤〃绀哄瓨鍦↗SON nulL SNTP妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 浜岄浂涓€浜斿勾鍏湀涓夊崄闆舵棩 DiUS, Johny Mattsson Johny Mattsson sntp.c

SNTP妯″潡瀹炵幇绠€鍗曠殑缃戠粶鏃堕棿Procotol瀹㈡埛绔€傝繖鍖呮嫭瀵光€渁nycast" NTP妯″紡鐨勬敮鎸侊紝濡傛灉鎮?鐨勭綉缁滀腑鐨凬TP鏈嶅姟鍣ㄦ敮鎸侊紝鍒欎笉闇€瑕佺煡閬揘TP鏈嶅姟鍣ㄧ殑IP鍦板潃銆傞粯璁ゆ儏鍐典笅锛岃繖灏嗛€氳繃 3.nodemcu.pool.ntp.org浣跨敤鏈嶅姟鍣∣.nodemcu.pool.ntp.org銆傝繖浜涙湇鍔″櫒鍑犱箮閫傜敤浜庢墍鏈夌敤 閫斻€?褰撲笌rtctime妯″潡涓€璧风紪璇戞椂锛屽畠杩樻彁渚涗簡涓庡畠鐨勬棤缂濋泦鎴愶紝鍙兘浼氬噺灏戝湪sntp.sync()娌℃湁 浠讳綍鍙傛暟鐨勬儏鍐典笅鑾峰緱NTP鍚屾鐨勮繃绋嬨€?sntp.sync () 璇曞浘鑾峰緱鏃堕棿鍚屾銆?sntp.setoffset 璁剧疆rtc鏃堕挓鍜孨TP鏃堕棿涔嬮棿鐨勫亸绉婚噺銆?sntp.getoffset 鑾峰彇rtc鏃堕挓鍜孨TP鏃堕棿涔嬮棿鐨勫亸绉婚噺銆?/p>

sntp.sync () 璇曞浘鑾峰緱鏃堕棿鍚屾銆?涓鸿幏寰楁渶浣虫晥鏋滐紝鎮ㄥ彲鑳介渶瑕佸畾鏈熻皟鐢ㄦ鍑芥暟浠ヨˉ鍋垮唴閮ㄦ椂閽熸紓绉汇€傛濡傚湪rtctime妯″潡鏂囨。 涓墍杩帮紝寤鸿鍦ㄦ繁搴︾潯鐪犲悗鍚屾鏃堕棿锛屽苟涓斿湪妯″潡澶嶄綅鍚庨渶瑕佸悓姝?init.lua鍦╓iFi鍒濆 鍖栦箣鍚庢坊鍔?銆傝娉ㄦ剰锛屽彲浠ユ彁渚涘崟涓湇鍔″櫒浣滀负鍙傛暟(鍚嶇О鎴栧湴鍧€)锛屼篃鍙互鎻愪緵鏈嶅姟鍣?鍒楄〃(琛?銆?鍙ユ硶 sntp.sync([server_ip], [callback], [errcallback], [autorepeat]) sntp.sync(( serverl, server2j 鈥?}, [callback]s [errcallback]3 [autorepeat]) 鍙傛暟 銉籹erver_ip濡傛灉涓嶆槸nil ,鍒欎娇鐢ㄨ鏈嶅姟鍣ㄣ€傚鏋渘il ,鍒欎娇鐢ㄤ笂娆¤仈绯荤殑鏈嶅姟鍣ㄣ€傚 鏋滄病鏈変互鍓嶇殑鏈嶅姟鍣紝鍒欎娇鐢ㄦ睜ntp鏈嶅姟鍣ㄣ€傚鏋滀娇鐢ㄤ簡浠绘挱鏈嶅姟鍣紝鍒欑涓€涓搷搴旀湇鍔?鍣ㄥ皢琚繚瀛樸€?-serverl , server!杩欎簺鏄灏濊瘯鐨勪竴涓垨澶氫釜鏈嶅姟鍣ㄧ殑IP鍦板潃鎴朌NS鍚嶇О銆?銉籧allback濡傛灉鎻愪緵鐨勮瘽锛屽畠灏嗗湪鎴愬姛鐨勫悓姝ユ椂琚皟鐢紝鍏锋湁鍥涗釜鍙傛暟锛氱锛屽井绉掞紝鏈嶅姟 鍣ㄥ拰淇℃伅銆傝娉ㄦ剰锛屽綋rtctime妯″潡鍙敤鏃讹紝涓嶉渶瑕佹樉寮忚皟鐢╮tctime.set()-涓轰簡鑾峰緱鏈€ 浣崇殑绮剧‘搴︼紝姝ゆā鍧椾細鑷姩杩涜鍐呴儴澶勭悊銆俰nf銆傚弬鏁版槸涓€涓?鍗?鏈夎叮鍊肩殑琛ㄦ牸銆傝繖浜涘湪 涓嬮潰鎻忚堪銆?-errcallback鐗╀釜鍙傛暟澶辫触鍥炶皟銆傜涓€涓槸鎻忚堪閿欒绫诲瀷鐨勬暣鏁般€備换鏀惧純鍜屾姤鍛婇敊璇箣 鍓嶏紝妯″潡浼氳嚜鍔ㄦ墽琛屽娆¢噸璇曘€傜浜屼釜鏄寘鍚ˉ鍏呬俊鎭殑瀛楃涓诧紙濡傛灉鏈夌殑璇濓級銆傞敊璇唬 鐮侊細 銉?锛?DNS鏌ユ壘澶辫触锛堢浜屼釜鍙傛暟鏄け璐ョ殑DNS鍚嶇О锛?-2锛氬唴瀛樺垎閰嶅け璐?-3锛?UDP鍙戦€佸け璐?-4锛氳秴鏃讹紝娌℃湁鏀跺埌NTP鍝嶅簲 -autorepeat濡傛灉杩欎笉鏄浂锛岄偅涔堝悓姝ュ皢姣?000绉掑彂鐢熶竴娆★紝濡傛灉鍙兘鐨勮瘽灏濊瘯璋冩暣鏃?閽熴€傚洖璋冨皢鍦ㄦ瘡娆″悓姝ユ搷浣滃悗琚皟鐢ㄣ€?杩斿洖 淇℃伅琛?杩欎紶閫掔粰鎴愬姛鍥炶皟锛屽苟鍖呭惈鏈夊叧鍒氬畬鎴愮殑鏃堕棿鍚屾鐨勬湁鐢ㄤ俊鎭€傝琛ㄤ腑鐨勫叧閿瓧鏄細 銉籵ffset_s杩欐槸涓€涓彲閫夊瓧娈碉紝鍖呭惈鏃堕挓璋冩暣鐨勭鏁般€傝繖鍙€傜敤浜庡ぇ閲忥紙寰堝绉掞級鐨勮皟 鏁淬€傞€氬父鎯呭喌涓嬶紝杩欏彧鍦ㄥ垵濮嬪悓姝ヨ皟鐢ㄤ腑鍑虹幇銆?鈥?offset_us杩欐槸涓€涓彲閫夊瓧娈碉紙浣嗕箣涓€鈥?offset_s鍜宱ffset_us灏嗗缁堝瓨鍦級銆傝繖鍖呭惈 鏃堕挓璋冮﹢鐨勫井绉掓暟銆?-delay_us杩欐槸浠ュ井绉掍负鍗曚綅鍚戞湇鍔″櫒鐨勫線杩斿欢杩熴€備綘璁剧疆鐨勪笉纭畾鎬ф瘮杩欎釜鍊艰灏忎竴 浜涖€?銉籹tratum杩欐槸鏈嶅姟鍣ㄧ殑闃跺眰銆?銉籰eap杩欏寘鍚潵鑷狽TP鍗忚鐨勯棸浣嶃€?鎰忓懗鐫€娌℃湁闂扮姝e湪绛夊緟锛?鏄疷TC鏈堟湯鐨勬湭鍐抽棸 绉掞紝2鏄疷TC鏈堝簳鐨勬湭鍐抽棸绉掗櫎鍘汇€?鈥揢se the nodemeu specific pooL servers and keep the time synced forever (this 銆?sntp.sync(nilj nil, nil, 1)

鈥揝ingLe shot sync time with a server on the LocaL network. sntp.sync(,224.0.1.1,J function(sec, usee, server, info) print(1 sync 1, sec, usee, server) end, function() print('failed!1) end ) 涔熷彲浠ョ湅鐪?rtetime.set() sntp.setoffset 璁剧疆rtc鏃堕挓鍜孨TP鏃堕棿涔嬮棿鐨勫亸绉婚噺銆傝娉ㄦ剰锛孨TP鏃堕棿鏈夐棸绉掞紝鍥犳鎻掑叆闂扮鏃惰繍琛岀紦 鎱€傝繖涓猻etoffset璋冪敤浣挎槑纭殑闂扮璺熻釜锛屽苟瀵艰嚧rtc鏃堕挓鏇村潎鍖€鍦版墦鍕?浣嗗畠涓庡涓婃椂閽?鐨勬椂闂翠笉涓€鑷淬€傜鏁版槸鍋忕Щ閲忋€?sntp.setoffset([offset]) 鍙傛暟 -offset NTP鏃堕棿鍜宺tc鏃堕棿涔嬮棿鐨勫亸绉婚噺銆傝繖鍙互鐪佺暐锛岄粯璁や负闆躲€傛璋冪敤鍚敤鍋忕Щ閲忚窡 韪€?杩斿洖 闆?sntp.getoffset 鑾峰彇rtc鏃堕挓鍜孨TP鏃堕棿涔嬮棿鐨勫亸绉婚噺銆傚簲璇ヤ粠rtc鏃堕棿涓噺鍘绘鍊间互鑾峰緱NTP鏃堕棿-杩欏搴斾簬 鎸傞挓鏃堕棿銆傚鏋滆繑鍥炵殑鍋忕Щ閲忓繁缁忎粠鍏堝墠鐨勫懠鍙敼鍙樹簡锛岄偅涔堝湪杩欎箣闂村氨鏈変簡涓€涓棸绉掋€?鍙ユ硶 offset = sntp.getoffset() 杩斿洖 褰撳墠鎶垫秷銆?鏂囨。銆嬭嫳璇€濇ā鍧椼€嬪皻椋?Somfy妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016骞?9 鏈?27 鏃?vsky279 vsky279 somfy.c 璇ユā鍧楁彁渚涗簡涓€涓畝鍗曠殑鐣岄潰锛岄€氳繃RF鍙戝皠鍣?433.42 MHz)鎺у埗Somfy鐧惧彾绐椼€傚畠鍩轰簬 Nickduino Somfy 杩滅▼ Arduino skectho 鎵€浣跨敤鐨勭‖浠舵槸鏍囧噯鐨?33 MHz灏勯鍙戝皠鍣ㄣ€備笉骞哥殑鏄紝杩欎簺鑺墖閫氬父浠?33.92MHz鐨勯鐜?浼犺緭锛屾墍浠ユ櫠浣撹皭鎸櫒搴旇鐢?33.42MHz鐨勮皭鎸櫒鏉ユ浛浠o紝灏界涓€浜涗汉鎶ュ憡璇寸敋鑷冲湪鍘熷鏅?浣撶殑鎯呭喌涓嬩篃鑳藉伐浣溿€?瑕佷簡瑙omfy鍗忚鐨勮缁嗕俊鎭紝璇峰弬闃匰omfyRTS鍗忚浠ュ強杩欓噷鐨勮璁恒€?璇ユā鍧椾娇鐢ㄧ‖浠惰鏃跺櫒锛屽洜姝ゅ畠涓嶈兘鍦ㄥ悓涓€鏃堕棿浣跨敤鎵€杩扮‖浠惰鏃跺櫒鍏朵粬NodeMCU妯″潡锛屽嵆 鍙互浣跨敤 sigma delta 锛?pcm , perf ,鎴?pwm 妯″潡銆?somfy.sendcommand () 鏋勫缓鐢盨omfy鍗忚瀹氫箟鐨勫抚骞跺皢鍏跺彂閫佸埌RF鍙戝皠鍣ㄣ€?somfy.sendcommand () 鏋勫缓鐢盨omfy鍗忚瀹氫箟鐨勫抚骞跺皢鍏跺彂閫佸埌RF鍙戝皠鍣ㄣ€?鍙ユ硶 somfy.sendcommand(pin, remote_address, command, rolling_codej repeat_count, call_back) 鍙傛暟 -pin灏哛F鍙戝皠鍣ㄨ繛鎺ュ埌GPI銆傚紩鑴氥€?-remote_address閬ユ帶鍣ㄧ殑鍦板潃銆傝鎺у埗鐨勮澶囦娇鐢ㄥ畠搴旇鍚殑閬ユ帶鍣ㄧ殑鍦板潃杩涜缂栫▼銆?鈥ommand鍛戒护琚紶閫併€傚彲浠ユ槸涓€ 涓?somfy.SOMFY_UP , somfy.S0MFY_D0WN , somfy.S0MFY_PR0G , somfy.S0MFY_ST0P 銉籸olling_code鎬绘寜涓€娆℃寜閽紝婊氭垚浠g爜灏变細澧炲姞銆傚鏋滅法浠g爜楂樹簬鏈€鍚庢敹鍒扮殑浠g爜锛?骞朵笖涓嶅湪鏈€鍚庢敹鍒扮殑浠g爜涔嬪墠锛屾帴鏀跺櫒鍙帴鍙楀懡浠ゃ€傝繖涓獥鍙f槸涓€涓?00澶х殑椤哄簭銆傞渶瑕?灏嗘粴鍔ㄤ唬鐮佸瓨鍌ㄥ湪EEPROM (鍗虫枃浠剁郴缁?涓互淇濆瓨ESP8266澶嶄綅銆?鈥epeat_count鍛戒护閲嶅浜嗗灏戞 銉籧allback鍦ㄥ彂閫佸懡浠や箣鍚庤皟鐢ㄧ殑鍑芥暟銆傚厑璁搁摼鎺ュ懡浠ゅ皢鐧惧彾绐楄缃埌涓€涓畾涔夌殑浣?缃€?鎴戝師鏉ョ殑閬ユ帶鍣ㄦ槸TELIS4 MODULIS RTS銆傝繖涓仴鎺у櫒姝e湪澶勭悊闄勫姞淇℃伅-闄勫姞鏁版嵁鍚庨潰鐨?6 浣?缂╃煭甯ч棿闂撮殧)銆備技涔庤繕娌℃湁閫忛湶鍑鸿繖涓憞鎽嗕笉瀹氱殑鍔ㄥ姏銆?褰撴垜鍙戦€乻omfy.DOWN鍛戒护锛岄噸澶嶉】鐗╂(杩欎技鍗婃槸涓€涓煭鎺堥挳鏃虫爣璋?锛?鍗硆epeat_count绛変簬2,鐧惧彾绐楀彧璧?姝ャ€傝繖瀵瑰簲浜庡師濮嬮仴鎺у櫒涓婄殑杞瓙鐨勭Щ鍔ㄣ€傚師濮嬮仴鎺?鍣ㄤ笂鐨勫悜*鎸夐挳涔熷彂閫乻omfy.DOWN鍛戒护锛屼絾闄勫姞淇℃伅鏄笉鍚岀殑锛岃繖浣垮緱鐧惧彾绐楀畬鍏ㄦ斁涓嬨€?骞歌繍鐨勬槸锛岄噸澶嶈甯?6娆′娇寰楃櫨鍙剁獥瀹屽叏鏀句笅銆?杩斿洖 闆?渚?瑕佸紑濮嬫帶鍒朵綘鐨凷omfy鐧惧彾绐楋紝浣犻渶瑕侊細 銉婚€夋嫨涓€涓换鎰忕殑杩滅▼鍦板潃(涓庣幇鏈夌殑杩滅▼鍦板潃涓嶅悓)-123鍦ㄦ湰渚嬩腑 銉婚€夋嫨婊氬姩浠g爜鐨勮捣鐐广€備换浣晆nsigned inti浣滐紝1鏄竴涓ソ鐨勫紑濮?-闀块┚鐜版湁閬ユ帶鍣ㄤ笂鐨勭▼搴忔寜閽紝鐩村埌鐩蹭汉杞诲井涓婁笅 鈥㈡墽琛?somfy. sendcommand(4j 123, somfy.PROG, 1, 2)-鐧惧彾绐椾細鍝嶅簲锛屾偍鐨凟SP8266閬?骞存毃鐜板湪宸茬粡娉ㄥ唽 鈥㈣繍琛?somfy. sendcommand(4j 123, somfy.DOWN, 2, 16)-瀹屽叏鍏抽棴鐧惧彾绐?鏇磋缁嗙殑渚嬪瓙璇峰弬鑰僺omfy.lua銆?SPI妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2015骞?鏈?6鏃?鏄撳崪鎷夋鈥㈤樋鍗滃痉鈥㈠焹灏斿崱寰?闃垮凹濮嗏€㈡媺鏍?spi.c 鎵€鏈夌殑鍙戦€佸拰鎺ユ敹浜嬪姟閮芥槸鏈€閲嶈鐨勶紝鏈€鍚庝竴涓篃鏄渶涓嶉噸瑕佺殑銆傛湁鍏冲簳灞傜‖浠剁殑鎶€鏈粏鑺傦紝璇峰弬 闃?metalphreak 鐨?ESP8266 HSPI 鏂囩珷銆?銆傛敞鎰?ESP纭欢鎻愪緵涓や釜SPI鎬荤嚎锛孖D涓恒€傚拰1,鏄犲皠鍒颁竴鑸爣涓篠P鍥癏SP鍟插紩鑴氥€傚鏋滄偍浣跨敤浠讳綍涓€绉?鎻愪緵闂瓨鐨勫紑鍙戞澘锛岄偅涔堟€荤嚎IDO (SPI)鍑犱箮鑲畾鐢ㄤ簬涓庨棯瀛樿姱鐗囪繘琛岄€氫俊銆傛偍鍙兘瑕佷负鎮ㄧ殑 閫氫俊閫夋嫨鍏氦杞D1 (HSPI),鍥犱负鎮ㄥ皢鏃犳剰涓娇鐢ㄥ畠銆?HSPI淇″彿鍥哄畾鍦ㄤ互涓婭銆傜储寮曞拰GPI銆傚紩鑴氫笂: 淇″彿 IO绱㈠紩 ESP8266寮曡剼 HSPI鏃堕挓 浜?GPIO14 HSPI/CS 8 GPIO15 HSPI MOSI 7 GPIO13 HSPI MISO 6 GPIO12

鍙﹁鍙傞槄spi.setup ()銆?楂樼骇鍔熻兘 楂樼骇鍔熻兘鎻愪緵鍗婂弻宸ュ拰鍏ㄥ弻宸ユā寮忕殑鍙戦€佸拰鎺ユ敹API銆?spi.recv () 浠嶴PI鎺ユ敹鏁版嵁銆?spi.send () 浠ュ崐鍙屽伐妯″紡閫氳繃SPI鍙戦€佹暟鎹€?spi.setup () 璁剧疆SPI閰嶇疆銆?浣庣骇纭欢鍔熻兘 浣庣骇鍑芥暟涓洪渶瑕佺粌涔犳洿澶嶆潅SPI浜嬪姟鐨勫簲鐢ㄥ満鏅彁渚涗互纭欢涓轰腑蹇冪殑API銆?spi.get_miso () 鍦╯pi涔嬪悗浠嶮IS銆傜紦鍐插尯鎻愬彇鏁版嵁椤广€?spi.set_mosi () 灏嗘暟鎹」鎻掑叆鍒皊pi鐨凪OSI缂撳啿鍖轰腑銆?spi.transaction ()

鍜肩骇鍔熻兘 楂樼骇鍔熻兘鎻愪緵鍗婂弻宸ュ拰鍏ㄥ弻宸ユā寮忕殑鍙戦€佸拰鎺ユ敹API銆傚彂閫佸拰鎺ユ敹鐨勬暟鎹」闄愬埗涓?-32浣嶉暱锛屾瘡涓?鏁版嵁椤硅(H) SPICS鏃犳晥鍖呭洿銆?spi.recv () 浠巗pi鎺ユ敹鏁版嵁銆?spi.recv(idj size], default_data]) 鍙傛暟 鈥d SPUD鍙凤細SPI涓?, HSPI涓?1 銉籹ize瑕佽鍙栫殑鏁版嵁椤圭殑鏁伴噺 鈥efault_data鍦∕OSI涓婂彂閫侀粯璁ゆ暟鎹?鍏?,濡傛灉鐪佺暐) 杩斿洖 鍖呭惈浠嶴PI璇诲彇鐨勫瓧鑺傜殑瀛楃涓层€?涔熷彲浠ョ湅鐪?spi.send () spi.send () 浠ュ崐鍙屽伐妯″紡閫氳繃spi鍙戦€佹暟鎹€備互鍏ㄥ弻宸ユā寮忓彂閫佸拰鎺ユ敹鏁版嵁銆?鍙ユ硶 鍗婂弻宸ワ細 wrote = spi.send(idj datalfj data2[,銉?銉?datan]]) 鍏ㄥ弻宸ワ細 wrote[4 rdatal[, .鈥兓, rdatan]] = spi.send(idj datal[data2[,.銉?鍙傛暟 鈥d SPUD鍙?SPI涓?, HSPI涓?1 鈥ata鏁版嵁鍙互鏄瓧绗︿覆锛岃〃鏍兼垨鏁存暟銆?姣忎釜鏁版嵁椤归兘琚涓篸atabits鏄綅鏁般€?杩斿洖 鈥rote鍐欏叆鐨勫瓧鑺傛暟 鈥data鎺ユ敹鐨勬暟鎹厤缃负spi. FULLDUPLEX 涓庣浉搴旂殑鏁版嵁鍙傛暟鐩稿悓鐨勬暟鎹被鍨嬨€?渚?=spi.send(lJ 04 255, 255, 255) 4 255 192 32 0 x = {spi.sendCl, 255, 255, 255)} =x[l] 4 =X[2] 255 =x[3] 192 =X[4] 32 =x[5] 0 =x[6] nil =#x 5 x = spi.send(l3 0, {255, 255, 255}) =x[l] 192 =x[2] 32 =X[3] 0 涔熷彲浠ョ湅鐪?鈥plsetup () 鈥pi.recv () spi.setup () 璁剧疆spi閰嶇疆銆傛湁鍏虫椂閽熸瀬鎬у拰鐩镐綅瀹氫箟鐨勮缁嗕俊鎭紝璇峰弬鑰冧覆琛屽璁炬帴鍙f€荤嚎銆?鍛煎彨spi.setup()浼氬皢HSPI淇″彿璺敱鍒扮浉鍏冲紩鑴氾紝瑕嗙洊涔嬪墠鐨刧pio妯″潡閰嶇疆鍜屾帶鍒躲€傚鏋滀笉闇€ 瑕佸畠鐨凥SPI鍔熻兘锛屽彲浠ュ皢浠讳綍寮曡剼鎭㈠鍒癵pi銆傛帶鍒讹紝鍙渶璁剧疆gpio.mode()瀹冦€傚鏋淪PI浠庤澶囬€?鎷╂槸鐢变笉鍚岀殑寮曡剼椹卞姩鐨勶紝gpio.write銆係PI寮曟搸灏嗕細鍒囨崲寮曡剼8,鍚﹀垯锛屽缓璁娇鐢ㄦ鍔熻兘銆?鍙ユ硶 spi.setup(idj mode, cpolj cpha, databits^ clock_div[duplex_mode]) 鍙傛暟 鈥d SPUD鍙?SPI涓?, HSPI涓?1 鈥ode閫夋嫨涓绘ā寮忔垨浠庢ā寮?o spi.MASTER 銆俿pi.SLAVE -鐩墠涓嶆敮鎸?鈥pol鏃堕挓鏋佹€ч€夋嫨 o spi.CPOL_LOW o spi.CPOL_HIGH 鈥pha鏃堕挓鐩镐綅閫夋嫨 銆?spi.CPHA_LOW 銆?spi.CPHA_HIGH 鈥atabits姣忎釜鏁版嵁椤圭殑浣嶆暟1-32 鈥lock_div SPI鏃堕挓鍒嗛鍣紝f (SPI) = 80MHz/ clock div , 1鈥 (0榛樿涓哄垎棰戝櫒8) 鈥uplex_mode鍙屽伐妯″紡 銆俿pi.HALFDUPLEX (鐪佺暐鏃堕粯璁? o spi.FULLDUPLEX 杩斿洖 1鍙?渚?spi.setupClj spi.MASTER, spi.CPOL_LOW, spi銉籆PHA_LOW, 8, 8) 鈥搘e won鈥檛 be using the HSPI /CS Linej so disabLe it again gpio.mode(8j gpio.INPUT, gpio.PULLUP) 浣庣骇纭欢鍔熻兘 浣庣骇鍑芥暟涓洪渶瑕佺粌涔犳洿澶嶆潅SPI浜嬪姟鐨勫簲鐢ㄥ満鏅彁渚涗互纭欢涓轰腑蹇冪殑API銆傜紪绋嬫ā鍨嬫槸鍥寸粫纭欢鍙戦€?鍜屾帴鏀剁紦鍐插尯寤虹珛鐨勶紝SPI浜嬪姟鏄湪纭欢鐗规€у畬鍏ㄦ帶鍒剁殑鎯呭喌涓嬪惎鍔ㄧ殑銆?spi.get_miso () 涔嬪悗浠嶮ISO缂撳啿鍖轰腑鎻愬彇鏁版嵁椤箂pi.transaction()銆?鍙ユ硶 datal[j data2[.銉汇兓, datan]] = spi.get_miso(idj offsetj bitlen^ num) string = spi銉籫et_miso(id, num) 鍙傛暟 鈥d 5PI ID涓擄細bHIZJU, HbPIZJl 銉籵ffset绗竴涓暟鎹」鐨凪ISO缂撳啿鍖虹殑浣嶅亸绉婚噺 鈥itlen鍗曚釜鏁版嵁椤圭殑浣嶉暱搴?-num瑕佹绱㈢殑鏁版嵁椤圭殑鏁伴噺 杩斿洖 num鏁版嵁椤规垨string 涔熷彲浠ョ湅鐪?spi.transaction () spi.set_mosi () 灏嗘暟鎹」鎻掑叆鍒癕OSI缂撳啿鍖轰腑spi.transaction()銆?鍙ユ硶 spi銉籹et_mosi(id, offsetj bitlen4 datal[data2[4 datan]]) spi銉籹et_mosi(id, string) 鍙傛暟 鈥d SPUD鍙凤細SPI涓?, HSPI涓?1 銉籵ffset鐢ㄤ簬鎻掑叆datal鍜屽悗缁」鐩殑MOSI缂撳啿鍖?鈥itlen datal, data2, 鈥︾殑闀垮害 鈥ata bitlen鍦ㄤ氦鏄撲腑鑰冭檻浣嶆暟鐨勬暟鎹」銆?銉籹tring灏嗘暟鎹彂閫佸埌鍋忕Щ閲忎负0,浣嶉暱涓?鐨凪OSI缂撳啿鍖轰腑 杩斿洖 nil 涔熷彲浠ョ湅鐪?spi.transaction () spi.transaction () 寮€濮嬩竴涓猄PI浜ゆ槗锛屾渶澶氱敱5涓樁娈电粍鎴? 1.鍛戒护 2.鍦板潃 3.MOSI 4.鍋?5.鍛冲檶 鍙ユ硶 spi.transaction(id? cmd_bitlen, cmd_data, addr_bitlen4 addr_dataj mosi_bitlenj dummy_bitlen4 miso_l 鍙傛暟 鈥d SPUD鍙凤細SPI涓?, HSPI涓?1 鈥md_bitlen鍛戒护闃舵鐨勪綅闀垮害(0 - 16) 鈥md_data鏁版嵁涓哄懡浠ら樁娈?鈥ddr_bitlen 鍦板潃鐩镐綅(0- 32) 鈥ddr_data鏁版嵁涓哄懡浠ら樁娈?鈥osi_bitlen MOSI鐩哥殑浣嶉暱搴?0-512) 鈥ummy_bitlen浼浉浣嶇殑浣嶉暱搴?0-256) 鈥iso_bitlen MI5U闃舵鏃充綅绠曞害(U-31Z)鏂瑰崐鍙屼竸銆?鍏ㄥ弻宸ユā寮忚婵€娲讳负璐熷€笺€?杩斿洖 nil 涔熷彲浠ョ湅鐪?鈥pi.set_mosi () 鈥pi.get_miso () 鏂囨。銆嬭嫳璇€濇ā鍧椼€嬬粨鏋?缁撴瀯妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2015骞?鏈?13 鏃?Roberto lerusalimschy, Philip Gladstone 鑿插埄鏅€㈡牸鑾辨柉椤?structc 杩欎釜妯″潡鎻愪緵浜嗗皢Lua鍊艰浆鎹㈡垚C缁撴瀯鍜屼粠C缁撴瀯杞崲鐨勫熀鏈姛鑳姐€傚畠鐨勪富瑕佸姛鑳?鏄痵truct.pack灏嗗涓狶ua鍊兼墦鍖呮垚绫讳技缁撴瀯鐨勫瓧绗︿覆;骞朵笖struct.unpack浠庣粰瀹氱殑绫讳技 缁撴瀯鐨勫瓧绗︿覆涓В鍘嬬缉澶氫釜Lua鍊笺€?杩欎袱涓嚱鏁扮殑绗竴涓弬鏁版槸鏍煎紡瀛楃涓诧紝瀹冩弿杩颁簡缁撴瀯鐨勫竷灞€銆傛牸寮忓瓧绗︿覆鏄竴绯诲垪杞崲鍏?绱狅紝瀹冧滑閬靛惊褰撳墠鐨勫瓧鑺傞『搴忓拰褰撳墠鐨勫榻愯姹傘€傛渶鍒濓紝褰撳墠鐨勭鐐规槸鏈哄櫒鐨勬湰鍦版帓搴忥紝褰?鍓嶇殑瀵归綈瑕佹眰鏄?锛堟剰鎬濇槸鏍规湰涓嶅榻愶級銆傛偍鍙互浣跨敤鏍煎紡瀛楃涓蹭腑鐨勯€傚綋鎸囦护鏇存敼杩欎簺璁?缃€?璇锋敞鎰忥紝float鍜宒ouble杞崲浠呴€傜敤浜庢诞鐐筃odeMCU鏋勫缓銆?鏍煎紡瀛楃涓?鏍煎紡瀛楃涓蹭腑鐨勫厓绱犲涓嬫墍绀猴細 .鈥溾€滐紙绌虹櫧绌洪棿锛夎蹇界暐銆?銉烩€滐紒n"鏍囧織灏嗗綋鍓嶇殑瀵归綈瑕佹眰璁剧疆涓簄 锛堝繀鐒舵槸2鐨勫箷锛夛紱缂哄腑n鎰忓懗鐫€鏈哄櫒鐨勬湰鍦板榻愩€?-鈥?鈥滄爣蹇楀皢妯″紡璁剧疆涓哄ぇ绔€?-鏍囧織灏嗘ā寮忚缃负灏忕銆?-鈥淴"濉厖闆跺瓧鑺傦紝娌℃湁瀵瑰簲鐨凩ua鍊笺€?,锛屼竷鈥?涓€涓鍚峜har銆?,鈥淏鈥?鈥斾釜鏃犵鍙风殑char銆?銉诲皬鈥?涓€涓鍚峴hort 锛堟湰鍦板ぇ灏忥級銆?鈥⑩€淗鈥?涓€涓棤绗﹀彿short 锛堟湰鍦板ぇ灏忥級銆?銉烩€渓鈥?涓€涓鍚峫ong 锛堟湰鍦板ぇ灏忥級銆?鈥⑩€淟鈥?涓€涓棤绗﹀彿long 锛堟湰鍦板ぇ灏忥級銆?,鈥淭鈥?涓€涓猻ize_t 锛堟湰鏈哄昂瀵革級銆?銉烩€渋n鈥?涓€涓湁n涓瓧鑺傜殑鏈夌鍙锋暣鏁般€備竴涓己甯殑n琛ㄧず涓€涓湰鍦扮殑澶у皬int o 銉烩€淚n"鍠滄"in"浣嗘病鏈夌鍚嶃€?,%鈥?涓€涓猲oat 锛堟湰鏈哄昂瀵革級銆?銉烩€渄鈥?涓€涓猟ouble 锛堟湰鏈哄昂瀵革級銆?鈥⑩€渟"浠ラ浂缁撳熬鐨勫瓧绗︿覆銆?-鈥渃n鈥?涓€涓叉濂藉搴斾簬涓€涓狶ua瀛楃涓茬殑n涓瓧绗︺€傜己甯璶鎰忓懗鐫€1.鎵撳寘鏃讹紝缁欏畾鐨勫瓧绗︿覆 蹇呴』鑷冲皯鏈塶涓瓧绗︼紙澶氫綑鐨勫瓧绗﹁涓㈠純锛夈€?-杩欏氨鍍忔槸鈥渃n鈥滐紝闄や簡n鏄敱鍏朵粬鏂瑰紡缁欎簣锛氬綋鍖呰锛宯鏄粰瀹氱殑瀛楃涓茬殑闀垮害;褰?瑙e寘鏃讹紝n鏄墠涓€涓В鍘嬪€硷紙蹇呴』鏄暟瀛楋級鐨勫€笺€傚湪杩欑鎯呭喌涓嬶紝浠ュ墠鐨勫€间笉浼氳杩斿洖銆?渚嬪瓙 struct Str { char b; int i[4]; }; 浣犲彲浠ヤ娇鐢ㄥ瓧绗︿覆鈥?!4biiii鈥濄€?瑕佹墦鍖呭叾闀垮害缂栫爜鍦ㄥ叾绗竴涓瓧鑺備腑鐨勫瓧绗︿覆锛岃浣跨敤浠ヤ笅浠g爜锛?x = struct.packC鈥橞cO鈥? string.1011(5), s) 瑕佽В鍘嬮偅涓瓧绗︿覆锛岃鎸夊涓嬫搷浣滐細 s = struct.unpack(鈥淏cO鈥? x) 璇锋敞鎰忥紝闀垮害(鐢卞厓绱犺鍙?B")涓嶈繑鍥炪€?鑻ヨ鍦ㄧ敤绌烘牸濉厖鐨?0涓瓧绗︾殑鍥哄畾瀹藉害瀛楁涓墦鍖呭瓧绗︿覆锛岃鎵ц浠ヤ笅鎿嶄綔: x = struct.packC鈥檆lO", s 鈥?string.rep(" 10)) structpack () 杩斿洖鍖呭惈鍊糳l, d2绛夌殑瀛楃涓?structunpack () 鏍规嵁鏍煎紡瀛楃涓瞗mt杩斿洖瀛楃涓瞫涓墦鍖呯殑鍊笺€?structsize () 杩斿洖鏍规嵁鏍煎紡瀛楃涓瞗mt鏍煎紡鍖栫殑瀛楃涓茬殑澶у皬銆?/p>

struct.pack () 杩斿洖鍖呭惈鐨勫€肩殑瀛楃涓瞕l , d2绛夈€傛牴鎹牸寮忓瓧绗︿覆鎵撳寘fmt o 鍙ユ硶 struct.pack (fmt, dl, d2,鈥? 鍙傛暟 鈥?fmt涓婅堪鏍煎紡鐨勬牸寮忓瓧绗︿覆 -dl绗竴涓暟鎹」琚墦鍖?銉籨2绗簩涓鎵撳寘鐨勬暟鎹」 杩斿洖 鍖呰鐨勫瓧绗︿覆銆?渚?S = struct.packCl鈥?^ 0x41424344) print(s) struct.unpack () S鏍规嵁鏍煎紡瀛愮鍗樿繑鍥炴巿瀛楃鐢虫墦鍖呮棾鍊糵mt銆備竴涓彲閫夋棾i鏍囪锛屼换鍝噷s鍗囧闃呰 (榛樿鏄?)銆傚湪璇诲彇鍊间箣鍚庯紝璇ュ嚱鏁拌繕浼氳繑鍥瀞鍋滄璇诲彇鐨勪綅缃鐨勭储寮曪紝杩欎篃鏄偍搴旇 寮€濮嬭鍙栧瓧绗︿覆鍏朵綑閮ㄥ垎鐨勪綅缃€?鍙ユ硶 struct.unpack (fmt, s[, offset]) 鍙傛暟 鈥mt涓婅堪鏍煎紡鐨勬牸寮忓瓧绗︿覆 -s淇濆瓨瑕佽В鍘嬬殑鏁版嵁鐨勫瓧绗︿覆 -offset鍦ㄥ瓧绗︿覆涓紑濮嬬殑浣嶇疆(榛樿涓?) 杩斿洖 鎵€鏈夌殑瑙e帇鏁版嵁銆?渚?鍋囪鎴戜滑蹇呴』瑙g爜涓€涓猻鏈煡鏁扮殑鍙岀簿搴︾殑瀛楃涓?缁撳熬鏍囨湁涓€涓浂鍊笺€傛垜浠彲浠ヤ娇鐢ㄤ笅闈?鐨勪唬鐮侊細 local a = {) local i = 1 鈥?index where to read while true do local d d, i = struct.unpack("d"j s, i) if d == 0 then break end a[#a + 1] = d end struct.size () 杩斿洖鏍规嵁鏍煎紡瀛楃涓叉牸寮忓寲鐨勫瓧绗︿覆鐨勫ぇ灏廸mt o鏍煎紡瀛楃涓插簲璇ユ棦涓嶅寘鍚€夐」s涔熶笉鍖?鍚€夐」C0 O 鍙ユ硶 struct.size (fmt) 鍙傛暟 鈥mt涓婅堪鏍煎紡鐨勬牸寮忓瓧绗︿覆 杩斿洖 灏嗕娇鐢ㄦ鏍煎紡瀛楃涓插湪鍖呮搷浣滀腑杈撳嚭鐨勫瓧绗︿覆鐨勫ぇ灏忋€?渚?print(struct.size(鈥渋鈥?) 杩欏皢鎵撳嵃鏈湴鏁存暟绫诲瀷鐨勫ぇ灏忋€?鎵х収 杩欎釜杞欢鍖呮槸鏍规嵁MIT璁稿彲璇佸垎鍙戠殑銆傝鍙傞槄鏂囦欢鏈熬鐨勭増鏉冨0鏄巗truct.c銆?Switec妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016骞?鏈?6鏃?鑿插埄鏅€㈡牸鑾辨柉椤?鑿插埄鏅€㈡牸鑾辨柉椤?switec.c 璇ユā鍧楁帶鍒朵竴鍙癝witecX.27 锛堟垨鍏煎锛変华鍣ㄦ杩涚數鏈恒€傝繖浜涙槸鐢ㄤ簬鐜颁唬姹借溅浠〃缁勭殑姝ヨ繘鐢?鏈恒€備粬浠槸闈炲父渚垮疁锛屽彲浠ュ湪浣犳渶鍠滄鐨勬媿鍗栫綉绔欐垨涓浗璐墿缃戠珯鎵惧埌銆傛湁鍙岃酱鐨勫搧绉?鍗虫湁 涓や釜姝ヨ繘鐢垫満椹卞姩涓や釜鍚屽績杞达紝鎵€浠ヤ綘鍙互浠庡悓涓€杞村畨瑁呬袱涓拡銆?杩欎簺鐢垫満杩愯5V 锛堟湁浜涘彲鑳藉伐浣滃湪3.3V锛?o瀹冧滑鐨勭數娴佷綆浜?0mA,璁捐涓虹洿鎺ヤ粠MCU寮曡剼 椹卞姩銆傜敱浜巒odemeu杩愯鍦?.3V,鎵€浠ラ渶瑕佷竴涓數骞宠浆鎹㈠櫒銆傚儚74WC4245A杩欐牱鐨勫叓杩涘埗杞?鎹㈠櫒鍙互鎵ц杩欎釜缈昏瘧銆傚畠杩樺寘鎷墍鏈夐渶瑕佺殑淇濇姢浜屾瀬绠°€?杩欎簺鐢垫満鍙互椹遍櫎涓変釜绠¤剼锛屼笌pin2鍜宲in3鏄浉鍚岀殑GPIO寮曡剼銆傚鏋滅數鏈虹洿鎺ヨ繛鎺ュ埌 MCU,鍒欑數娴佽礋杞戒細缈诲€嶏紝骞跺彲鑳借秴杩囨渶澶ч瀹氬€笺€備絾鏄紝濡傛灉姝e湪浣跨敤椹卞姩鍣ㄨ姱鐗囷紝鍒?MCU涓婄殑璐熻浇鍙互蹇界暐涓嶈锛屽悓涓€涓狹CU寮曡剼鍙互杩炴帴鍒颁袱涓┍鍔ㄥ櫒寮曡剼銆備负浜嗗仛鍒拌繖涓€ 鐐癸紝鍙渶鎸囧畾pin2鍜宲in3銆?杩欎簺鐢垫満娌℃湁缁濆鐨勫畾浣嶏紝浣嗗湪鑼冨洿鐨勪袱绔仠姝€傚惎鍔ㄧ▼搴忔槸閫嗘椂閽堥┍鍔ㄧ數鏈猴紝鐩村埌纭繚閽?鍦ㄥ彴闃朵笂銆傞偅涔堣繖涓偣鍙互璁剧疆涓洪浂銆傚湪姝e父杩愯鏈熼棿锛屼笉瑕佽鐢垫満杩涘叆鍒版渶缁堜綅缃槸寰堥噸 瑕佺殑锛屽洜涓鸿繖浼氫娇鎸囧悜涓嶅噯纭€傝妯″潡涓嶆墽琛屼换浣曡寖鍥撮檺鍒躲€?鉂堕噸瑕?璇ユā鍧椾娇鐢ㄧ‖浠跺畾鏃跺櫒涓柇锛屽洜姝や笉鑳戒笌PWM妯″潡鍚屾椂浣跨敤銆傝繖涓や釜妯″潡閮藉彲浠ョ紪璇戞垚 鐩稿悓鐨勫浐浠堕暅鍍忥紝浣嗗簲鐢ㄧ▼搴忓彧鑳戒娇鐢ㄤ竴涓€傛湁鍙兘浣垮簲鐢ㄧ▼搴忎箣闂翠氦鏇縮witec 鍜宲wm ,浣嗗繀椤诲皬蹇冦€?switec.setup () 鍒濆鍖杗odemeu浠ヤ笌switec X杩涜閫氫俊銆?switec.moveto () 鍚姩閽堢Щ鍔ㄥ埌鎸囧畾鐨勪綅缃€?switec.reset () 杩欏皢閽堢殑褰撳墠浣嶇疆璁剧疆涓洪浂銆?switec.getpos () 鑾峰彇閽堢殑褰撳墠浣嶇疆浠ュ強鏄惁姝e湪绉诲姩銆?switec.close () 閲婃斁涓庢杩涘櫒鐩稿叧鐨勮祫婧愩€?鏍″噯 涓轰簡姝g‘璁剧疆闆剁偣锛屽簲璇ラ€嗘椂閽堥┍鍔ㄩ拡澶达紝鐩村埌杩涘叆鏈€缁堟鍔ㄤ綅缃€?/p>

switec.setup 锛堬級 鍒濆鍖杗odemeu浠ヤ笌switec X.27鎴栧吋瀹圭殑浠櫒姝ヨ繘鐢垫満瀵硅瘽銆傞粯璁よ浆鎹㈤€熺巼璁剧疆涓洪€傜敤浜庡ぇ 澶氭暟鐢垫満銆傛湁浜涚數鏈哄彲浠ユ瘡绉掕繍琛?00娆°€?switec.setup(channel, pinl4 pin2, pin3, pin4 [, maxDegPerSec]) 鍙傛暟

maxDegPerSec (鍙€?杩欏彲浠ヨ缃负闄愬埗鏈€澶ф憜鐜囥€傞粯璁ゅ€兼槸姣忕400搴︺€?杩斿洖 娌℃湁銆傚鏋滃弬鏁伴敊璇紝鎴栬€呮搷浣滄棤娉曞畬鎴愶紝鍒欎細鎶涘嚭閿欒銆?娉ㄦ剰 涓€鏃﹁缃簡閫氶亾锛屽湪閽堝仠姝㈢Щ鍔ㄤ箣鍓嶏紝涓嶈兘閲嶆柊璁剧疆閫氶亾銆?switec.setup(0j 5銆?銆?, 8) switec.moveto () 鍚姩閽堢Щ鍔ㄥ埌鎸囧畾鐨勪綅缃€傚鏋滈拡宸茬粡绉诲姩锛屽垯褰撳墠鍔ㄤ綔琚彇娑堬紝閽堢Щ鍔ㄥ埌鏂扮殑浣嶇疆銆傚綋閽?鍋滄绉诲姩鏃讹紝鍙互寰楀埌鍥炶皟銆傝繖閫氬父鏄笉闇€瑕佺殑锛屽洜涓簃oveto鍙互杩炵画鍙戝嚭澶氫釜鎿嶄綔銆傚湪 鍒濆鏍″噯鏈熼棿锛岃繖寰堥噸瑕併€傝娉ㄦ剰锛屽洖璋冧笉鑳戒繚璇佽璋冪敤-鍦ㄥ彟涓€涓猰oveto鎿嶄綔琚Е鍙戜箣 鍓嶏紝閽堝彲鑳戒笉浼氬仠鍦ㄧ洰鏍囦綅缃€?鍙ユ硶 switec.moveto(channel, positionstoppedCallback) 鍙傛暟 銉籧hannel switec妯″潡鏀寔涓変釜姝ヨ繘鐢垫満銆傞€氶亾鏄?,1鎴?銆?鈥osition绉诲姩閽堢殑浣嶇疆(椤烘椂閽堢殑姝ユ暟)銆備竴鑸湪0鍒?000宸﹀彸銆?鈥toppedCallback (鍙€?鍥炶皟鍦ㄩ拡鍋滄绉诲姩鏃惰璋冪敤銆?閿欒 閫氶亾蹇呴』宸茬粡璁剧疆锛屽惁鍒欎細寮曞彂閿欒銆?switec.moveto(04 1000^ function () switec.moveto(0j 0) end) switec.reset () 杩欏皢閽堢殑褰撳墠浣嶇疆璁剧疆涓洪浂銆傞拡澶村繀椤婚潤姝€?鍙ユ硶 switec 銉?reset(channel) 鍙傛暟 鈥hannel switec妯″潡鏀寔涓変釜姝ヨ繘鐢垫満銆傞€氶亾鏄?,1鎴?銆?閿欒 閫氶亾蹇呴』璁剧疆濂斤紝閽堝ご涓嶈兘绉诲姩锛屽惁鍒欎細鍑虹幇閿欒銆?switec.getpos () 鑾峰彇閽堢殑褰撳墠浣嶇疆浠ュ強鏄惁姝e湪绉诲姩銆?鍙ユ硶 switec.getpos(channel) 鍙傛暟 銉籧hannel switec妯″潡鏀寔涓変釜姝ヨ繘鐢垫満銆傞€氶亾鏄?,1鎴?銆?杩斿洖 鈥osition閽堢殑褰撳墠浣嶇疆 銉籱oving濡傛灉閽堥潤姝紝鍒欎负0銆?涓洪『鏃堕拡锛?1涓洪€嗘椂閽堛€?switec.close () 閲婃斁涓庢杩涘櫒鐩稿叧鐨勮祫婧愩€?鍙ユ硶 switec . close(channel) 鍙傛暟 銉籧hannel Switec妯″潡鏀寔涓変釜姝ヨ繘鐢垫満銆傞€氶亾鏄?,1鎴?銆?閿欒 閽堝ご涓€瀹氫笉鑳界Щ鍔紝鍚﹀垯浼氬嚭鐜伴敊璇€?鏍″噯 涓?姝㈢‘璁剧疆闆剁偣锛屽簲璇ラ€嗘椂閽堥┍鍒濋拤澶达紝鐩村埌杩涗汉鏈€缁堟鍒濅綅瀹c€傜劧鍚庡彲浠ヨ缃浂鐐广€備究 鐢ㄧ殑鍊间负-1000,鍥犱负瀹冨ぇ浜庣數鏈虹殑鑼冨洿锛屽嵆瀹冨湪鏁翠釜鑼冨洿鍐呴€嗘椂閽堟柟鍚戦┍鍔ㄥ苟鍒拌揪缁堢偣鎸?鍧椼€?switec.setup(0j 5,6,7,8) calibration = true switec.moveto(0j -1000, function() switec , reset(0) calibration = false end) 鍏朵粬moveto鎿嶄綔涓嶅簲璇ュ湪calibration璁剧疆鏃舵墽琛屻€?TCS34725妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2017骞?鏈?鏃?tjhowse tjhowse tcs34725.c

璇ユā鍧椾负TCS34725褰╄壊/鍏夌嚎浼犳劅鍣?Adafruit)鎻愪緵浜嗕竴涓畝鍗曠殑鐣岄潰銆?璇锋敞鎰忥紝鎮ㄥ繀椤诲厛鎵撶數璇濓紝setup銆傜劧鍚庢墠鑳藉紑濮嬭鍙栧€硷紒 tcs34725.setup () setupializes 妯″潡銆?tcs34725.enable (鍑芥暟()) 鍚敤浼犳劅鍣ㄣ€?tcs34725.disable () 绂佺敤浼犳劅鍣ㄣ€?tcs34725.raw () 璇诲彇浼犳劅鍣ㄧ殑娓呮櫚锛岀孩鑹诧紝缁胯壊鍜岃摑鑹插€笺€?tcs34725.setGain () 璁剧疆浼犳劅鍣ㄧ殑澧炵泭銆?tcs34725.setlntegrationTime () 璁剧疆浼犳劅鍣ㄧ殑绉垎鏃堕棿銆?/p>

tcs34725.setup () setupializes妯″潡銆傚湪璇诲彇鍊间箣鍓嶏紝setupialization鏄繀闇€鐨勩€?鍙ユ硶 tcs34725.setup() 杩斿洖 0濡傛灉瀹夎澶辫触(娌℃湁浼犳劅鍣ㄨ繛鎺ワ紵 ) , 1濡傛灉浼犳劅鍣ㄦ槸TCS34725 渚?tcs34725 銉?setup() tcs34725.enable(function() print(鈥淭CS34275 Enabled鈥? clear,redgreenblue=tcs34725 銉?raw() end) tcs34725.enable (鍑芥暟()) 鍚敤浼犳劅鍣ㄣ€傜鐢ㄥ悗鍙互鐢ㄦ潵鍞ら啋銆?tcs34725.enable(function() print(nTCS34275 Enabled") clearred,greenblue=tcs34725.raw() end) 鍙傛暟 浼犳劅鍣ㄥ畬鎴愬垵濮嬪寲鏃惰皟鐢ㄧ殑鍑芥暟銆?杩斿洖 0 tcs34725.disable () 绂佺敤浼犳劅鍣ㄣ€傚惎鐢ㄤ綆鍔熻€楃潯鐪犳ā寮忋€?鍙ユ硶 tcs34725.disable() 杩斿洖 0 tcs34725.raw () 璇诲彇浼犳劅鍣ㄧ殑娓呮櫚锛岀孩鑹诧紝缁胯壊鍜岃摑鑹插€笺€?鍙ユ硶 clearj redjgreen,blue=tcs34725.raw() 杩斿洖 娓呮櫚锛岀孩鑹诧紝缁胯壊锛岃摑鑹插湪uintl6_to tcs34725.setGain () 璁剧疆浼犳劅鍣ㄧ殑澧炵泭銆備紶鎰熷櫒鍚敤鍚庡繀椤昏皟鐢ㄣ€?鍙ユ硶 tcs34725.setGain(gain) 鍙傛暟 鑾峰緱 鑾峰緱 涓?x00 TCS34725 GAIN IX 鑾峰緱 鑾峰緱 0x01 TCS34725_GAIN_4X 0x02 TCS34725_GAIN_16X x03 TCS34725 GAIN 60X

杩斿洖 0 tcs34725.setIntegrationTime () 璁剧疆浼犳劅鍣ㄧ殑绉垎鏃堕棿銆備紶鎰熷櫒鍚敤鍚庡繀椤昏皟鐢ㄣ€?鍙ユ硶 tcs34725 . setlntegrationTime(time) 鍙傛暟 鏃堕棿 鑾峰緱 涓?OxFF TCS34725_INTEGRATIONTIME_2_4MS 0xF6 TCS34725_INTEGRATIONTIME_24MS 0xD5 TCS34725_INTEGRATIONTIME_101MS 灏?OxCO TCS34725_INTEGRATIONTIME_154MS 涓?0x00 TCS34725_INTEGRATIONTIME_700MS

杩斿洖

鏂囨。銆嬭嫳璇€濇ā鍧椼€婽LS TLS妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 浜孫鈥斿叚骞村崄浜屾湀鍗佷簲鏃?鍑ゅ嚢 鍑ゅ嚢 tls.c

SSL/TLS 鏀寔 銆傛敞鎰?TLS妯″潡渚濊禆浜庣綉缁滄ā鍧楋紝杩欐槸鎵€闇€鐨勪緷璧栧叧绯汇€?NodeMCU鍖呭惈mbedTLS搴撶殑寮€婧愮増鏈€傞€氳繃NodeMCU鐨勯粯璁ら厤缃紝瀹冩敮鎸乀LS1.O/1.1/ 1.2鍜屾渶甯哥敤鐨勫瘑鐮佸浠讹紝鍖呮嫭DH/ECDH銆傚熀浜嶦CDSA鐨勫瘑鐮佸浠堕粯璁ゆ槸绂佺敤鐨勩€?銆傚皬璐?瀹屾暣鐨勯厤缃瓨鍌ㄥ湪user_mbedtls.h涓€傚鏋滄偍鏋勫缓鑷繁鐨勫浐浠跺苟瑕佹洿鏀筸bedTLS琛屼负锛屽垯 杩欐槸瑕佺紪杈戠殑鏂囦欢銆?鏈夊叧鍔熻兘鍒楄〃锛岃鐪媘bedTLS鍔熻兘椤甸潰銆?褰揝SL/TLS姝e湪浣跨敤鏃讹紝璇ユā鍧楀鐞嗚瘉涔﹂獙璇併€?tls.createConnection () 鍒涘缓TLS杩炴帴銆?tls.socket锛氬叧闂紙锛?鍏抽棴濂楁帴瀛椼€?tls.socket锛?connect () 鐨?杩炴帴鍒拌繙绋嬫湇鍔″櫒銆?tls.socket锛?DNS () 涓轰富鏈哄悕鎻愪緵DNS瑙f瀽 tls.socket锛?getPeer () 宸?妫€绱㈠绛夌鍙e拰ip銆?tls.socket锛氫繚鎸?) 閫氳繃鍙戝嚭闃绘TCP鎺ユ敹鍔熻兘鐨勮姹傛潵闄愬埗鏁版嵁鎺ユ敹銆?tls.socket锛?涓?) 娉ㄥ唽鐗瑰畾浜嬩欢鐨勫洖璋冨嚱鏁般€?tls.socket锛氬彂閫?) 灏嗘暟鎹彂閫佸埌杩滅▼瀵圭瓑銆?tls.socket锛氬彇娑堜繚鐣欙紙锛?閫氳繃鎾ら攢鍏堝墠鐨勪繚鎸侊紙锛夋潵瑙i櫎瀵筎CP鎺ユ敹鏁版嵁鐨勯樆姝€?tls.certverify () 鎺у埗Nodemeu寤虹珛瀹夊叏杩炴帴鏃剁殑楠岃瘉杩囩▼銆?/p>

tls.createConnection () 鍒涘缓TLS杩炴銆?鍙ユ硶 tls.cneateConnection() 鍙傛暟 娌℃湁 杩斿洖 tls.socket 瀛愭ā鍧?渚?tls.createConnection() tls.socket 妯″潡 tls.socket锛氬叧闂?) 鍏抽棴濂楁帴瀛椼€?鍙ユ硶 close() 鍙傛暟 娌℃湁 杩斿洖 nil 涔熷彲浠ョ湅鐪?tls.cneateConnection() tls.socket锛?connect ()鐨?杩炴帴鍒拌繙绋嬫湇鍔″櫒銆?鍙ユ硶 connect(port, ip|domain) 鍙傛暟 鈥ort 绔彛鍙?鈥p IP鍦板潃鎴栧煙鍚嶅瓧绗︿覆 杩斿洖 nil 涔熷彲浠ョ湅鐪?tls . socket:on() tls.socket锛?DNS () 涓轰富鏈哄悕鎻愪緵DNS瑙f瀽 鍙ユ硶 dns(domainj function(tls銉籹ocketip)) 鍙傛暟 鈥omain 鍩熷悕 鈥unction(tls.socket, ip)鍥炶皟鍑芥暟銆傜涓€涓弬鏁版槸濂楁帴瀛楋紝绗簩涓弬鏁版槸IP鍦板潃浣滀负 瀛楃涓层€?杩斿洖 nil 渚?sk = tls.cneateConnection() sk:dns(鈥済oogle.com"j function(conn, ip) print(ip) end) sk = nil tls.socket锛?getPeer () S 妫€绱㈠绛夌鍙e拰ip銆?鍙ユ硶 getpeer() 鍙傛暟 娌℃湁 杩斿洖 鈥p鐨勫悓琛?鈥ort鐨勫悓琛?tls.socket锛氫繚鎸?) 閫氳繃鍙戝嚭闃绘TCP鎺ユ敹鍔熻兘鏃宠姹傜背闄愬埗鏁浉鎺ユ敹:銆傛璇锋眰灏忕珛鍗崇敓鏁堬紝Espressif寤鸿浠讳繚鐣?5 * 1460瀛楄妭鐨勫唴瀛樻椂璋冪敤瀹冦€?鍙ユ硶 hold() 鍙傛暟 娌℃湁 杩斿洖 nil 涔熷彲浠ョ湅鐪?tls.socket:unhold() tls.socket锛氫笂() 娉ㄥ唽鐗瑰畾浜嬩欢鐨勫洖璋冨嚱鏁般€?鍙ユ硶 on(event, function()) 鍙傛暟 -event瀛楃涓诧紝鍙互鏄€滆繛鎺モ€濓紝鈥滈噸鏂拌繛鎺モ€濓紝鈥滄柇寮€"锛屸€滄帴鏀?鎴栤€滃彂閫佲€?-function(tls.socket], string])鍥炶皟鍑芥暟銆傜涓€涓弬鏁版槸濂楁帴瀛椼€傚鏋滀簨浠舵槸鈥滄帴 鏀垛€濓紝鍒欑浜屼釜鍙傛暟鏄互瀛楃涓插舰寮忔帴鏀剁殑鏁版嵁銆傚鏋滀簨浠舵槸鈥滈噸鏂拌繛鎺モ€濓紝鍒欑浜屼釜鍙傛暟鏄?杩炴帴閿欒(瀛楃涓?鐨勫師鍥犮€?杩斿洖 nil 渚?srv = tls.createConnection() srvzonCreceive", function(sck, c) print漏 end) srv:on(鈥渃onnection鈥? function(sck, c) 鈥揥ait for connection before sending. sck:send("GET / HTTP/1.l\r\nHost: google.com\r\nConnection: keep-alive\r\nAcce| end) spv:connect(443,鈥済oogle.com鈥? 鉂舵敞鎰?璇eceive浜嬩欢琚Е鍙戞瘡涓綉缁滃抚锛佸湪netsocket锛?on ()涓婃煡鐪嬬粏鑺傘€?涔熷彲浠ョ湅鐪?鈥ls.createConnection() 鈥ls.socket:hold() tls.socket锛氬彂閫?) 灏嗘暟鎹彂閫佸埌杩滅▼瀵圭瓑銆?鍙ユ硶 send(string) 鍙傛暟 銉籹tring瀛楃涓蹭腑鐨勬暟鎹皢琚彂閫佸埌鏈嶅姟鍣?杩斿洖 nil 娉ㄦ剰 send()鐢变簬SDK灏嗙綉缁滆姹傝涓哄崟鐙殑浠诲姟锛屽洜姝や笉鑳戒繚璇佽繛缁娆¤皟鐢?閫氬父涓嶄細)銆?鐩稿弽锛岃璁㈤槄濂楁帴瀛椾笂鐨勨€滃彂閫佲€濅簨浠讹紝骞跺湪璇ュ洖璋冧腑鍙戦€佸叾浠栨暟鎹?鎴栧叧闂?銆傝鎯呰鍙傞槄# 730o 涔熷彲浠ョ湅鐪?tls.socket:on() tls.socket锛氬彇娑堜繚鐣?) 閫氳繃鎾ら攢鍓嶉潰鐨勬柟娉曟潵瑙i櫎瀵筎CP鎺ユ敹鏁版嵁鐨勯樆姝oid() o 鍙ユ硶 unhold() 鍙傛暟 娌℃湁 杩斿洖 nil 涔熷彲浠ョ湅鐪?tls.socket:hold() tls.cert 妯?鍧?tls.cert.verify () 鎺у埗Nodemeu寤虹珛瀹夊叏杩炴帴鏃剁殑楠岃瘉杩囩▼銆?鍙ユ硶 tls.cert.verify(enable) tls 銉?cert.verify(pemdata) 鍙傛暟 鈥nable鎸囩ず鏄惁鍚敤楠岃瘉鐨勫竷灏斿€笺€傚惎鍔ㄦ椂鐨勯粯璁ゅ€兼槸false銆?鈥emdata鍖呭惈鐢ㄤ簬楠岃瘉鐨凜A璇佷功鐨勫瓧绗︿覆銆?杩斿洖 true濡傛灉瀹冨伐浣溿€?濡傛灉鎻愪緵浜嗘棤鏁堢殑鏁版嵁锛屽彲浠ユ姏鍑轰竴浜涢敊璇€?渚?寤虹珛瀹夊叏鐨刪ttps杩炴帴骞堕獙璇佽瘉涔﹂摼鏄惁鏈夋晥銆?tls.cert.verify(true) http.get(鈥渉ttps://example.com/info鈥? nil, function (code, resp) print(code^ resp 灏嗚瘉涔﹀姞杞藉埌闂瓨鑺墖骞跺彂鍑鸿姹傘€傝繖鏄痵tartssl鏍硅瘉涔︺€備粬浠彁渚涘厤璐硅瘉涔︺€?tls.cert.verify([[ BEGIN CERTIFICATE MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW MBQGAlUEChMNU3RhcnRDb20gTHRkLjErMCkGAlUECxMiU2VjdXJlIERpZ210YWwg Q2VydGlmaWNhdGUgU21nbmluZzEpMCcGAlUEAxMgU3RhcnRDb20gQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9 MQswCQYDVQQGEwJJTDEWMBQGAlUEChMNU3RhcnRDb20gTHRkLjErMCkGAlUECxMi U2VjdXJlIERpZ210YWwgQ2VydGlmaWNhdGUgU21nbmluZzEpMCcGAlUEAxMgU3Rh cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXulM5DycmLWwTYgIiRezul38kMKogZk pMyONvg45iPwbm2xPNlyo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf OQVSWff0G0ZDpNKFhdLDcfNlYjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT Kqi5pquDSR318u/d5AG0GAqPYlMWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN60qce+Zu9ydmDBpI125C4z/eIT574Qlw +2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ Gkhpi8KWTRoSsmkXwQqQlvp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 Zzrd/qqc8NSLf 3Iizsaf 17b4r4qgEKjZ+xjGtrVclljyJthkqcwEKDw0zEmDyei+B 26Nu/yYwl/WL3YlXtq09s68rxbd2AvClliuahhQqcvbjM4xdCUsT37uMdBNSSwID AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGAlUdHwRdMFswLKAqoCiGJmh0dHA6Ly9j ZXD0LnN0YXJ0Y29tLm9yZy9zZnNjYSljcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js LnN0YX锛?Y29tLm9yZy9zZnNjYSljcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM BgsrBgEEAYGlNwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0 Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMw3xYgU3Rh cnQgQ29tbWVyY21hbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqB10xpbW10ZWQgTGlh YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaWlpdGF0aW9ucyogb2Yg dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT TCBDZX锛?aWZpY2F0aW9uIEFldGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ 9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8 jhvh3TaHK0u7aNM5Zj2gDsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVDloNBl ny+v8OqCQ5j4aZy3ecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu L61whceWD3yJZfWOQlQOq921gDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtL3L4YSjCMJwRuC O3NJo2pXh5TllnjFmUNj403gdy3hZZlyaQQaRwnmDwFW3Psfvw55qVguucQ3AX6V um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh N0sF/5oirpt9P/FlUQqmlvIGqz9IgcgA38corogl4= END CERTIFICATE ]]) http.get(,https://pskreporter.info/gen404"nil, function (code, resp) print(codi 绗旇 楠岃瘉鎵€闇€鐨勮瘉涔﹀瓨鍌ㄥ湪闂瓨鑺墖涓€傝tls.cert.verify鍛煎彨true鍙互浣跨敤瀛樺偍鍦ㄩ棯瀛樹腑 鐨勫€艰繘琛岄獙璇併€?璇佷功鍙互閫氳繃涓ょ鏂瑰紡鍔犺浇鍒伴棯瀛樿姱鐗?涓€涓槸鍥轰欢鐗堟湰锛屽彟涓€涓槸鍥轰欢鍒濆寮曞銆備负浜嗗湪鏋?寤烘椂鍔犺浇璇佷功锛屽彧闇€灏嗗寘鍚獵A璇佷功锛堜互PEM鏍煎紡锛夌殑鏂囦欢鏀剧疆server-ca.crt鍦╪odemcu- firmware鏋勫缓鏍戠殑鏍圭洰褰曚笅銆傛瀯寤鸿剼鏈皢鎶婂畠缁撳悎鍒扮敓鎴愮殑鍥轰欢闀滃儚涓€?鍙︿竴绉嶄竾娉曟瘮杈冨鏄撳崌鍙嬶紝閭e氨鏄皢PEM鏁版嵁浣滀负瀛楃鐢插€兼彁渚泃ls.cert.verify銆傝繖浼?灏嗚瘉涔﹀瓨鍌ㄥ湪闂瓨鑺墖涓紝骞舵墦寮€璇ヨ瘉涔︾殑楠岃瘉銆傞殢鍚庯紝nodemeu鐨勫紩瀵煎彲浠ヤ娇 鐢╰ls. cert, verify (true)骞朵娇鐢ㄥ瓨鍌ㄧ殑璇佷功銆?鏂囨。銆嬭嫳璇?妯″潡禄tml829 TM1829妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016骞?鏈?5鏃?濉炲反鏂拏瀹夆€㈠搱鏂?濉炲反鏂拏瀹夆€㈠搱鏂?tm!829.c tml829鏄竴涓娇鐢═itan Micro tml829 led鎺у埗鍣ㄥ鐞唋ed鐏潯鐨勫簱銆?璇ュ簱浣跨敤浠讳綍GPI銆傚led鎺у埗鍛戒护杩涜姣旂壒娴併€?tml829.write () 浣跨敤鍘熺敓鑺墖鏍煎紡灏嗘暟鎹彂閫佸埌LED鐏甫銆?tml829.write () 浣跨敤鍘熺敓鑺墖鏍煎紡灏嗘暟鎹彂閫佸埌LED鐏甫銆?鍙ユ硶 tml829.write(string) 鍙傛暟 -string鏈夋晥杞借嵎琚彂閫佸埌涓€涓垨澶氫釜TM1829LED銆?杩斿洖 tml829.write(5, string.char(255,0,0,25500)) 鈥?turn the two first RGB Leds to i 瀹氭椂鍣ㄦā鍧?浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2014-12-12 Zeroday dnc40085 tmr.c

tmr妯″潡鍏佽璁块棶绠€鍗曠殑瀹氭椂鍣紝绯荤粺璁℃暟鍣ㄥ拰姝e父杩愯鏃堕棿銆?瀹冪殑鐩殑鏄缓绔嬪畾鏈熷彂鐢熺殑浠诲姟锛岃秴鏃惰繍琛岋紝骞舵彁渚涗綆鍒嗚鲸鐜囩殑澧為噺銆?tmr妯″潡涓嶆槸浠€涔堬紝鏄竴涓鏃舵ā鍧椼€傝櫧鐒跺ぇ澶氭暟瓒呮椂鏃堕棿浠ユ绉掓垨鐢氳嚦寰涓哄崟浣嶏紝浣嗗噯纭?搴︽槸鏈夐檺鐨勶紝澶嶅悎璇樊浼氬鑷寸浉褰撲笉鍑嗙‘鐨勬椂闂翠繚鎸併€傝€冭檻灏唕tctime妯″潡鐢ㄤ簬鈥滄寕閽熲€濇椂闂淬€?NodeMCU鎻愪緵7涓潤鎬佸畾鏃跺櫒锛岀紪鍙蜂负0-6,鍔ㄦ€佸畾鏃跺櫒鍒涘缓鍔熻兘tmr.create銆傘€?銆傛敞鎰?闈欐€佸畾鏃跺櫒宸茶寮冪敤锛岀◢鍚庡皢琚垹闄ゃ€備娇鐢ㄣ€侽API鍚姩tmr.createO銆?tmr.alarm () 杩欐槸涓€涓粨鍚坱mr鐨勪究鍒╁姛鑳姐€?tmr.create () 鍒涘缓涓€涓姩鎬佽鏃跺櫒瀵硅薄銆?tmr.delay () 浣垮鐞嗗櫒蹇欑鎸囧畾鐨勫井绉掓暟銆?tmr.interval () 鏇存敼宸叉敞鍐岀殑璁℃椂鍣ㄧ殑鍒版湡鏃堕棿闂撮殧銆?tmr.now () 杩斿洖绯荤粺璁℃暟鍣紝浠ュ井绉掕銆?tmr.register () 閰嶇疆涓€涓畾鏃跺櫒骞舵敞鍐屽洖璋冨嚱鏁颁互渚垮湪璋冪敤杩囨湡鏃朵娇鐢?tmr.resume () 鎭㈠涓汉璁℃椂鍣ㄣ€?tmr.resume_all () 鎭㈠鎵€鏈夎鏃跺櫒銆?tmr.softwd () 鎻愪緵涓€涓畝鍗曠殑杞欢鐪嬮棬鐙楋紝闇€瑕佸湪鍒版湡鍓嶉噸鏂拌缃垨绂佺敤锛屽惁鍒欑郴缁熷皢 閲嶆柊鍚姩銆?tmr.start () 鍚姩鎴栭噸鏂板惎鍔ㄥ厛鍓嶉厤缃殑璁℃椂鍣ㄣ€?tmr.state () 妫€鏌ュ畾鏃跺櫒鐨勭姸鎬併€?tmr.stop () 鍋滄姝e湪杩愯鐨勮鏃跺櫒锛屼絾涓嶅彇娑堟敞鍐屻€?tmr.suspend () 鎸傝捣涓€涓瑁呰鏃跺櫒銆?tmr.suspend_all () 鎸傝捣鎵€鏈夌洰鍓嶇殑姝﹁璁℃椂鍣ㄣ€?/p>

tmr.unregister () 鍋滄瀹氭椂鍣?濡傛灉姝e湪杩愯)骞跺彇娑堟敞鍐岀浉鍏崇殑鍥炶皟銆?tmr.wdclr () 閫佸叆绯荤粺鐪嬮棬鐙椼€?tmr.alarm () 杩欐槸涓€涓柟渚跨殑鍔熻兘鐩哥粨鍚坱mr. register(),骞秚mr.start()鎴愪竴涓崟涓€鐨勭數璇濄€?浣跨敤姝よ鏃跺櫒閲婃斁璧勬簮鏃讹紝璇疯皟鐢╰mr.unregisterO瀹冦€傚浜庝竴娆℃€у畾鏃跺櫒锛岃繖鏄病鏈夊繀 瑕佺殑锛岄櫎闈炲畠浠湪澶辨晥涔嬪墠鍋滄銆?鍙ユ硶 tmr.alarm([id/ref], interval_mSj mode, func()) 鍙傛暟 鈥d / ref 瀹氭椂鍣↖D (0-6)鎴栧璞★紝OOAPI (鈥?tmr.create())宸茶繃鏃?鈥nterval.ms瀹氭椂鍣ㄩ棿闅?浠ユ绉掍负鍗曚綅)銆傛渶澶у€兼槸6870947 (1锛?54锛?30.947)銆?鈥ode瀹氭椂鍣ㄦā寮忥細 0 tmr. ALARM_SINGLE 鈥旀鎬ф姤璀?涓嶉渶瑕佹墦鐢佃瘽 tmr. unregister()) 銆倀mr.ALARM_SEMI鎵嬪姩閲嶅鎶ヨ(璋冪敤tmr.start()閲嶅惎) O tmr.ALARM_AUTO鑷姩閲嶅鎶ヨ 鈥unc(timer)鐢ㄥ畾鏃跺櫒瀵硅薄浣滀负鍙傛暟璋冪敤鐨勫洖璋冨嚱鏁?杩斿洖 true濡傛灉瀹氭椂鍣ㄥ惎鍔紝false閿欒 渚?if not tmr.create():alarm(5000j tmr.ALARM_SINGLE3 function() print(鈥渉ey there鈥? end) then print(鈥渨hoopsie鈥? end 涔熷彲浠ョ湅鐪?鈥mr.create() 鈥mr.register() 鈥mr.start() 鈥mr.unregister() tmr.create () 鍒涘缓涓€涓姩鎬佽鏃跺櫒瀵硅薄銆?鍔ㄦ€佽鏃跺櫒鍙互鐢ㄦ潵浠f浛鎺у埗鍔熻兘涓殑鏁板瓧ID銆備篃鍙互浠ラ潰鍚戝璞$殑鏂瑰紡杩涜鎺у埗銆?瀹氭椂鍣ㄥ瀹舵敮鎸佹棾鍔熻兘: 鈥:alarm() 鈥:interval() 鈥:register() 鈥:resume() 鈥:start() 鈥: state() 鈥:stop() 鈥 :suspend() 鈥:unregister() 鍙傛暟 娌℃湁 杩斿洖 timer鐩殑 渚?local mytimer = tmr.create() 鈥搊o calling mytimer:register(5000j tmr.ALARM_SINGLE, function (t) print(鈥渆xpired鈥?; t:unregi: mytimer:start() 鈥?with seLf parameter tmr.register(mytimerj 5000, tmr.ALARM_SINGLE3 function (t) printCexpired"); tmr tmr.start(mytimer) tmr.delay () 浣垮鐞嗗櫒蹇欑鎸囧畾鐨勫井绉掓暟銆?杩欓€氬父鏄竴涓潖涓绘剰锛屽洜涓烘病鏈夊埆鐨勪笢瑗垮彲浠ヨ繍琛岋紝缃戠粶鍫嗘爤(浠ュ強鍏朵粬涓滆タ)鍙兘浼氬洜姝?鑰屽穿婧冦€傚敮涓€ tmr.delay銆傚彲鑳介€傚悎浣跨敤鐨勬槸濡傛灉澶勭悊闇€瑕?闈炲父)鐭殏鐨勫懡浠や箣闂寸殑寤惰繜 鐨勫鍥磋澶囷紝鎴栫被浼肩殑銆傝皑鎱庝娇鐢紒 杩樿娉ㄦ剰锛屽疄闄呭欢杩熺殑鏃堕棿閲忓彲鑳芥槑鏄炬洿澶э紝杩欐槸鐢变簬瀹氭椂涓嶅噯纭互鍙婂湪姝ゆ湡闂村彲鑳借繍琛岀殑 涓柇閫犳垚鐨勩€?鍙ユ硶 tmr.delay(us) 鍙傛暟 us 寰鍒癰usyloop nil tmr.delay(100) tmr.interval () 鏇存敼宸叉敞鍐岀殑璁℃椂鍣ㄧ殑鍒版湡鏃堕棿闂撮殧銆?鍙ユ硶 tmr.interval([id/ref], interval_ms) 鍙傛暟 鈥d / ref 瀹氭椂鍣↖D (0-6)鎴栧璞★紝OOAPI (鈥?tmr.create())宸茶繃鏃?鈥nterval.ms鏂扮殑瀹氭椂鍣ㄩ棿闅旓紝浠ユ绉掍负鍗曚綅銆傛渶澶у€兼槸6870947 (1锛?54锛?30.947)銆?杩斿洖 nil 渚?mytimer = tmr.create() mytimer:register(10000j tmr.ALARM_AUTO, function() print(鈥渉ey there鈥? end) mytimer:interval(3000) 鈥?actually, 3 seconds is better! mytimer:start() tmr.now () 杩斿洖绯荤粺璁℃暟鍣紝浠ュ井绉掕銆傞檺浜?1浣嶏紝涔嬪悗瀹冨洖缁曞埌闆躲€傚鏋滀娇鐢ㄦ鍔熻兘娑堥櫎鎴栨姂鍒禛PIO 杈撳叆锛岄偅涔堣繖鏄潪甯搁噸瑕佺殑銆?鍙ユ硶 tmr.now() 鍙傛暟 娌℃湁 杩斿洖 绯荤粺璁℃暟鍣ㄧ殑褰撳墠鍊?print(tmr,now()) print(tmr.now()) tmr.register () 閰嶇疆涓€涓畾鏃跺櫒骞舵敞鍐屽洖璋冨嚱鏁颁互渚垮湪璋冪敤杩囨湡鏃朵娇鐢ㄣ€?浣跨敤姝よ鏃跺櫒閲婃斁璧勬簮鏃讹紝璇疯皟鐢╰mr.unregister()瀹冦€傚浜庝竴娆℃€у畾鏃跺櫒锛岃繖鏄病鏈夊繀 瑕佺殑锛岄櫎闈炲畠浠湪澶辨晥涔嬪墠鍋滄銆?鍙ユ硶 tmr. register ([id/ref], intervales, mode, func()) 鍙傛暟 鈥d / ref 瀹氭椂鍣↖D (0-6)鎴栧璞★紝OOAPI (鈥?tmr.create())宸茶繃鏃?-interval_ms瀹氭椂鍣ㄩ棿闅?浠ユ绉掍负鍗曚綅)銆傛渶澶у€兼槸6870947 (1锛?54锛?30.947)銆?鈥ode瀹氭椂鍣ㄦā寮忥細 銆倀mr.ALARM_SINGLE 鈥旀鎬ф姤璀?涓嶉渶瑕佹墦鐢佃瘽 tmr.unregister()) 0 tmr.ALARM_SEMI鎵嬪姩閲嶅鎶ヨ(璋冪敤tmr.start()閲嶅惎) o tmr.ALARM_AUTO鑷姩閲嶅鎶ヨ -func(timer)鐢ㄥ畾鏃跺櫒瀵硅薄浣滀负鍙傛暟璋冪敤鐨勫洖璋冨嚱鏁?璇锋敞鎰忥紝鐧昏锛屽苟娌℃湁鍚姩鎶ヨ銆?杩斿洖 nil 渚?mytimer = tmr.create() mytimer:register(5000j tmr.ALARM_SINGLE, function銆?print(鈥渉ey there鈥? end) mytimer:start() 涔熷彲浠ョ湅鐪?鈥mr.create() 鈥mr.alarm() tmr.resume () 鎭㈠涓汉璁℃椂鍣ㄣ€?鎭㈠鍏堝墠宸茬粡鏆傚仠鎴栬€呮槸璁℃椂鍣╰mr.suspend鎴杢mr.suspend_all 鍙ユ硶 tmr.resume(id/ref) 鍙傛暟 id/ref 瀹氭椂鍣↖D (0-6)鎴栧璞★紝OOAPI (t tmr.create())宸茶繃鏃?true濡傛灉瀹氭椂鍣ㄦ仮澶嶆垚鍔?鈥搑esume timer mytimer mytimer:resume() 鈥揳Lternate metod tmr.resume(mytimer) 涔熷彲浠ョ湅鐪?鈥mr.suspend() 鈥mr.suspend_all() 鈥mr.resume_all() tmr.resume_all () 鎭㈠鎵€鏈夎鏃跺櫒銆?鎭㈠鎵€鏈夊畾鏃跺櫒锛屽寘鎷偅浜涗互鍓嶈涓鐨則mr.suspend鎴栬€卼mr.suspend_all 鍙ユ硶 tmr.resume_all() 鍙傛暟 娌℃湁 杩斿洖 true濡傛灉瀹氭椂鍣ㄦ仮澶嶆垚鍔?鈥搑esume aLL previousLy suspended timers tmr.resume_all() 涔熷彲浠ョ湅鐪?鈥mr.suspend() 鈥mr.suspend_all() 鈥mr.resume() tmr.softwd () 鎻愪緵涓€涓畝鍗曠殑杞欢鐪嬮棬鐙楋紝闇€瑕佸湪鍒版湡鍓嶉噸鏂拌缃垨绂佺敤锛屽惁鍒欑郴缁熷皢閲嶆柊鍚姩銆?鍙ユ硶 tmr.softwd(timeout_s) 鍙傛暟 timeout_s鐪嬮棬鐙楄秴鏃讹紝浠ョ涓哄崟浣嶃€傝绂佺敤鐪嬮棬鐙楋紝璇蜂娇鐢?1 (鎴栦换浣曞叾浠栬礋鍊?銆?杩斿洖 nil 渚?function on_success_callback() tmr.softwd(-1) print(鈥淐omplex task done, soft watchdog disabled!鈥? end tmr.softwd(5) 鈥揼o off and attempt to do whatever might need a restart to recover from complex_stuff_which_might_never_call_the_callback(on_success_callback) tmr.start () 鍚姩鎴栭噸鏂板惎鍔ㄥ厛鍓嶉厤缃殑璁℃椂鍣ㄣ€?鍙ユ硶 tmr.start([id/ref]) 鍙傛暟 id / ref 瀹氭椂鍣↖D (0-6)鎴栧璞★紝OOAPI (鈥?tmr.create())宸辫繃鏃?杩斿洖 true濡傛灉瀹氭椂鍣ㄥ惎鍔紝false閿欒 渚?mytimer = tmr.create() mytimer:register(5000tmr.ALARM_SINGLE, function() print(鈥渉ey there鈥? end) if not mytimer:start() then print(鈥渦h oh鈥? end 涔熷彲浠ョ湅鐪?鈥mr.create() 鈥mr.register() 鈥mr.stop() 鈥mr.unregister() tmr.state () 妫€鏌诲畾鏃跺櫒鐨勭姸鎬併€?鍙ユ硶 tmr.state([id/ref]) 鍙傛暟 id / ref 瀹氭椂鍣↖D (0-6)鎴栧璞★紝OOAPI (t tmr.create())宸茶繃鏃?杩斿洖 (bool, int)鎴栬€?nil 濡傛灉鎸囧畾鐨勮鏃跺櫒宸辨敞鍐岋紝鍒欒繑鍥炲綋鍓嶆槸鍚﹀惎鍔ㄥ強鍏舵ā寮忋€傚鏋滃畾鏃跺櫒鏈娉ㄥ唽锛宯il鍒欒繑 鍥炪€?渚?mytimer = tmr.create() print(mytimer:state()) 鈥?nil mytimer:register(5000j tmr.ALARM_SINGLE, function() print(鈥渉ey there鈥? end) running, mode = mytimer:state() print(鈥渞unning: " 鈥?tostring(running)銉汇兓鈥? mode:"銉汇兓 mode) 鈥?running: false, tmr.stop () 鍋滄姝e湪杩愯鐨勮鏃跺櫒锛屼絾骞舵病鏈夊彇娑堟敞鍐屻€傚仠姝㈢殑瀹氭椂鍣ㄥ彲浠ラ噸鏂板惎鍔╰mr.startO銆?鍙ユ硶 tmr.stop([id/ref]) 鍙傛暟 id / ref 瀹氭椂鍣↖D (0-6)鎴栧璞★紝OOAPI (t tmr.create())宸茶繃鏃?杩斿洖 true濡傛灉瀹氭椂鍣ㄨ鍋滄锛宖alse閿欒 渚?mytimer = tmr.create() if not mytimer:stop() then print(鈥渢imer not stopped, not registered?鈥? end 涔熷彲浠ョ湅鐪?鈥mr.register() 鈥mr.stop() 鈥mr.unregister() tmr.suspend () 鑽忚捣涓€涓瑁呰鏃跺櫒銆?-瀹氭椂鍣ㄥ湪姝﹁鍚庡彲浠ラ殢鏃舵殏鍋溿€?鈥㈠鏋滃畾鏃跺櫒閲嶆柊鍚姩锛宼mr.start鎴杢mr.alarm浠讳綍鍖归厤鐨勬殏鍋滃畾鏃跺櫒灏嗚涓㈠純銆?鍙ユ硶 tmr.suspend(id/ref) 鍙傛暟 id/ref 瀹氭椂鍣↖D (0-6)鎴栧璞★紝00API (涓€ tmr,create())宸茶繃鏃?杩斿洖 true濡傛灉瀹氭椂鍣ㄦ仮澶嶆垚鍔?渚?鈥搒uspend timer mytimer mytimer:suspend() 鈥揳lternate metod tmr.suspend(mytimer) 涔熷彲浠ョ湅鐪?鈥mr.suspend_all() 鈥mr.resume() 鈥mr.resume_all() tmr.suspend_all () 鎸傝捣鎵€鏈夌洰鍓嶇殑姝﹁璁℃椂鍣ㄣ€?銆傝鍛?璇ュ姛鑳芥殏鍋滄墍鏈夋椿鍔ㄥ畾鏃跺櫒锛屽寘鎷敱NodeMCU瀛愮郴缁熸垨鍏朵粬妯″潡鍚姩鐨勪换浣曟椿鍔ㄥ畾鏃?鍣ㄣ€傝繖鍙兘浼氬鑷撮儴鍒嗙▼搴忓仠姝㈡甯歌繍琛屻€備娇鐢ㄦ鍔熻兘闇€鑷媴椋庨櫓锛?鍙ユ硶 tmr.suspend_all() 鍙傛暟 娌℃湁 杩斿洖 true濡傛灉瀹氭椂鍣ㄨ鎴愬姛鏆傚仠 鏂囨。銆嬭嫳璇€濇ā鍧椔籘SL2561 TSL2561妯″潡

2015骞?鏈?2鏃?杩堝厠灏斿崲鍗℃柉 杩堝厠灏斿崲鍗℃柉 tsl2561.c

tsl2561.getrawchannels () 璇诲彇璁惧鐨?涓紶鎰熷櫒骞惰繑鍥炲叾鍊笺€?/p>

tsl2561.getlux () 浠庤澶囪鍙栦紶鎰熷櫒鍊煎苟杩斿洖璁$畻鐨勫嫆鍏嬫柉鍊笺€?鍙ユ硶 tsl2561.getlux() 鍙傛暟 娌℃湁 杩斿洖 -1UX浠ュ嫆鍏嬫柉璁$畻鐨勭収搴?IX) -status鎸囩ず鎴愬姛鎴栧け璐ョ殑鍊煎涓嬫墍杩? O tsl2561.TSL2561_0K o tsl2561.TSL2561_ERR0R_I2CINIT 涓嶈兘鍒濆鍖栥€嶤 鎬荤嚎 o tsl2561.TSL2561_ERR0R_I2CBUSY銆嶤 鎬荤嚎绻佸繖 o tsl2561.TSL2561_ERR0R_N0INIT鍦ㄨ皟鐢ㄥ嚱鏁颁箣鍓嶅垵濮嬪寲銆嶤鎬荤嚎 o tsl2561.TSL2561_ERR0R_LAST status = tsl2561.init(5, 6, tsl2561.ADDRESS_FL0AT, tsl2561.PACKAGE_T_FN_CL) if status == tsl2561.TSL2561_0K then lux = tsl2561.getlux() print(鈥淚lluminance: .lux.lx鈥? tsl2561.getrawchannels () 璇诲彇璁惧鐨?涓紶鎰熷櫒骞惰繑鍥炲叾鍊笺€?鍙ユ硶 tS12561.getrawchannels() 鍙傛暟 娌℃湁 杩斿洖 -Ch0骞胯氨浼犳劅鍣ㄧ殑浠峰€?鈥?chi绾㈠浼犳劅鍣ㄧ殑浠峰€?-status鎸囩ず鎴愬姛鎴栧け璐ョ殑鍊煎涓嬫墍杩帮細 0 tsl2561.TSL2561_0K 0 tsl2561.TSL2561_ERR0R_I2CINIT 涓嶈兘鍒濆鍖栥€嶤 鎬荤嚎 0 tsl2561.TSL2561_ERR0R_I2CBUSY銆嶤 鎬荤嚎绻佸繖 o tsl2561.TSL2561_ERR0R_N0INIT鍦ㄨ皟鐢ㄥ嚱鏁颁箣鍓嶅垵濮嬪寲銆嶤鎬荤嚎 o tsl2561.TSL2561_ERR0R_LAST 渚?status = tsl2561.init(5, 6, tsl2561.ADDRESS_FLOAT, tsl2561.PACKAGE_T_FN_CL) if status == tsl2561.TSL2561_0K then ch0, chi = ts12561.getrawchannels() print(鈥淩aw values:鈥濃€h0, chi) lux = tsl2561.getlux() print(nIlluminance: n鈥ux.lx") end tsl2561.init () 鍦ㄥ紩鑴歴d鍙﹊n&sclpin涓婂垵濮嬪寲鍣ㄤ欢銆傝繕鍙互閫夋嫨閰嶇疆璁惧鍦板潃鍜屽寘瑁呫€傞粯璁わ細鍦板潃寮曡剼鎮┖ (0x39)鍜孎N灏佽銆?鍙ユ硶 tsl2561.init(sdapin, sclpinfaddress], package]]) 鍙傛暟 鈥dapin鍣ㄤ欢l2Csda杩炴帴鐨勫紩鑴氬彿 鈥clpin鍣ㄤ欢銆嶤scl杩炴帴鐨勫紩鑴氬彿 鈥ddress銆嶤鎬荤嚎涓婂櫒浠剁殑鍙€夊湴鍧€ O tsl2561.ADDRESS_GND O tsl2561.ADDRESS_FL0AT (鐪佺暐鏃堕粯璁? O tsl2561.ADDRESS_VDD 銉籶ackage鍙€夎澶囧眾瑁呯被鍨?鍕掑厠鏂绠楃暐鏈夊樊寮? o tsl2561.PACKAGE CS O tsl2561. PACKAGE_T_FN_CL (鏇剧暐鏃堕粯璁? 杩斿洖 status鎸囩ず鎴愬姛鎴栧け璐ョ殑鍊煎涓嬫墍杩帮細 銉籺sl2561.TSL2561_0K 銉籺sl2561.TSL2561_ERR0R_I2CINIT 涓嶈兘鍒濆鍖栥€嶤 鎬荤嚎 銉籺sl2561.TSL2561_ERR0R_I2CBUSY銆嶤 鎬荤嚎绻佸繖 銉籺sl2561.TSL2561_ERR0R_N0INIT鍦ㄨ皟鐢ㄥ嚱鏁颁箣鍓嶅垵濮嬪寲1骞绘€荤嚎 銉籺sl2561.TSL2561_ERR0R_LAST 渚?status = tsl2561.init(5, 6, tsl2561.ADDRESS_FLOAT, tsl2561.PACKAGE_T_FN_CL) if status == ts12561.TSL2561_0K then lux = tsl2561.getlux() print(鈥淚lluminance: 鈥溾€ux鈥︹€?lx鈥? end tsl2561.settiming () 璁剧疆璁惧鐨勭Н鍒嗘椂闂村拰澧炵泭璁剧疆銆備綍鏃秚ls2561.init()琚皟鐢紝杩欎簺鍊奸粯璁や负402姣锛屾病 鏈夊鐩娿€?鍙ユ硶 tsl2561.settiming(integralionj gain) 鍙傛暟 銉籭ntegration璁剧疆璁惧鐨勭Н鍒嗘椂闂淬€傛湁鏁堢殑閫夐」鏄細 O tsl2561.INTEGRATIONTIME_13MS o tsl2561.INTEGRATIONTIME_101MS o tsl2561. INTEGRATIONTIME_402MS (鐪佺暐鏃堕粯璁? -gain璁剧疆璁惧鐨勫鐩娿€傛湁鏁堝墠閫夐」鏄細 O tsl2561.GAIN_lX (鐪佺暐鏃堕粯璁? o tsl2561.GAIN_16X 杩斿洖 status鎸囩ず鎴愬姛鎴栧け璐ョ殑鍊煎涓嬫墍杩帮細 銉籺sl2561.TSL2561_0K 銉籺sl2561.TSL2561_ERR0R_I2CINIT 涓嶈兘鍒濆鍖栥€嶤 鎬荤嚎 銉籺sl2561.TSL2561_ERR0R_I2CBUSY銆嶤 鎬荤嚎绻佸繖 銉籺sl2561.TSL2561_ERR0R_N0INIT鍦ㄨ皟鐢ㄥ嚱鏁颁箣鍓嶅垵濮嬪寲銆嶤鎬荤嚎 銉籺sl2561.TSL2561_ERR0R_LAST status = tsl2561.init(5, 6, tsl2561.ADDRESS_FLOAT, tsl2561.PACKAGE_T_FN_CL) if status == tsl2561.TSL2561_0K then status = tsl2561.settiming(tsl2561.INTEGRATIONTIME_101MS, tsl2561.GAIN_16X) end if status == tsl2561.TSL2561_0K then lux = tsl2561.getlux() print(鈥淚lluminance: 鈥溾€ux鈥︹€?lx鈥? end 鏂囨。銆嬭嫳璇?妯″潡銆媢8g u8g妯″潡 浠ユ潵 璧锋簮璐ㄧ尞鑰?缁存姢鑰?璧勬簮 2015骞?鏈?0鏃?Oli Kraus, ArnimLauger 闃垮凹濮嗏€㈡媺鏍?u8glib

U8glib鏄湪olikraus/u8glib寮€鍙戠殑涓€涓浘褰㈠簱锛屾敮鎸佽澶氫笉鍚岀殑鏄剧ず銆侼odeMCU鍥轰欢鏀寔杩欎簺鐨勪竴 涓瓙闆嗐€?銆嶤鍜孲PI妯″紡锛?鈥hll06_128x64 鈥sdl306-128x32,128x64鍜?4x48鍙樹綋 鈥sd1309_128x64 鈥sdl327_96x96^gr 鈥C1611 - dogm240鍜?dogxl240鍙樼 浠?SPI锛?鈻爈d7032_60x32 鈥cd8544_84x48 鈥cf8812,6x65 鈥sdl322_nhd31oled - bw 鍜?gr鍙樼 鈥sdl325_nhd27oled - bw 鍜?gr鍙樼 鈥sdl351_128xl28-gh 鍜?hicolor 鍙樹綋 鈥㈠彉浣?4128n, dogml28/132, lm6059/lm6063, C12832/C12864 鈥cl601_cl28032 鈻燯C1608 - 240x128鍜?40x64鍙樼 鈥cl610_dogxll60 - bw 鍜?gr 鍙樼 鈥cl611 - dogm240鍜?dogxl240鍙樼 鈥C1701 - dogsl02 鍜?minil2864鍙樼 璇ラ泦鎴愬熀浜巚l.19.1銆?/p>

FC鏄剧ず椐嗗姩鍣?閫氳繃FC鍒濆鍖栨樉绀恒€?SPI鏄剧ず椹卞姩鍣?閫氳繃纭欢SPI鍒濆鍖栨樉绀恒€?u8g.fb_rle 鍒濆鍖栦竴涓櫄鎷熸樉绀猴紝鎻愪緵杩愯闀垮害缂栫爜甯х紦鍐插尯鍐呭鍒颁竴涓?Lua鍥炶皟銆?甯搁噺 鍚勭鍔熻兘鐨勫父閲忋€?u8g.disp锛氬紑濮嬶紙锛?璇峰弬闃卽8glib begin ()銆?u8g.disp锛?drawBitmap () 鍦ㄦ寚瀹氱殑x/y浣嶇疆锛堜綅鍥剧殑宸︿笂瑙掞級缁樺埗浣嶅浘銆?u8g.disp锛?drawBox () 璇峰弬闃卽8glib drawBox ()銆?u8g.disp锛氱敾鍦嗭紙锛?璇峰弬闃卽8glibdrawCircle ()銆?u8g.disp锛?drawDisc () 璇峰弬闃卽8glibdrawDisc ()銆?u8g.disp锛?drawEllipse () 璇峰弬闃卽8glibdrawEllipse ()銆?u8g.disp锛?drawFilledEllipse () 璇峰弬闃?u8glib drawFilledEllipse銆?u8g.disp锛氬苟鏉℃満锛堬級 璇峰弬闃卽8glibdrawFrame ()銆?/p>

浠?gdsp鈥?drawHLine o 浠?gdsp 鈥渟drawune o 浠?gdsp鈥?drawpixe-() 浠?gdsp鈥?drawRBox o 浠?gdsp鈥?drawRFrame o 浠?gdsp鈥?drawStr () U8gdsp鈥?drawsrso () U8gdsp鈥?drawSt:rl80 o 浠?8gdsp鈥?draws=r270 o 浠?gdsp鈥?drawwang-e o 浠?gdsp鈥?drawVLine () U8gdsp鈥?drawXBM o U8gdsp鈥?鍣?lao 浠?8gdsp " gscoor-ndex () U8g.disp 鈥?gsFontAscenfo 浠?gdsp" gaFOa-Descenf o 浠?gdsp" gaFonpmespacing () u8gdsp 鈥渟gs-HQghf o 椹熷洸 U8g= 椹熷洸 U8g= 椹熸矓 U8g= ssKlu8g= ssKlu8g= ss鍥?U8g= ss*鍥?U8g= 芦鏂峰洸 U8g= bdrawHUne ()銆?bdrawUne ()銆?bdrawpixe-()銆?bdrawRBox ()銆?bdrawRFrame ()銆?bdrawSfr ()銆?bdrawswo銆?bdrawsf銆?80 ()銆?b draws=r270 ()銆?鐬倯u8g=bdrawTriang-e ()銆?芦鏂峰洸 U8g=bdrawvune ()0 Ba鈥擳XBM^K銆?ss鐕冨渾 U8g= *#鍥砋8g= *#鍥砋8g= *椹熷洸 U8g= *椹熷洸 U8g= bzhrsrpage ()銆?bgsco-or-ndex ()銆?b gsFontAscent: () o b gffi-FOMDescea-() o b gffi-FontL-nespac-ng ()銆?/p>

瑭犻鍥睻8g= bgftHQghf ()銆?/p>

u8g.disp锛?setFontRefHeightExtendedlext () 璇峰弬闃卽8glibsetFontRefHeightExtendedTert ()銆?u8g.disp锛?setFontRefHeightText () 璇峰弬闃卽8glibsetFontRefHeightlext ()銆?u8g.disp锛?setRot90 () 璇峰弬闃卽8glibsetRot90 ()銆?u8g.disp锛?setRotl80 () 璇峰弬闃卽8glibsetRotl80 ()銆?u8g.disp锛?setRot270 () 璇峰弬闃卽8glibsetRot270 ()銆?u8g.disp锛?setScale2x2 () 璇峰弬闃卽8glibsetScale2x2 ()銆?u8g.disp锛?sleepOn () 璇峰弬闃卽8glibsleepOn ()銆?u8g.disp锛?sleepOff () 璇峰弬闃卽8glibsleepOff ()銆?u8g.disp锛?undoRotation () 璇峰弬闃卽8glibundoRotation ()銆?u8g.disp锛?undoScale () 璇峰弬闃卽8glibundoScale ()銆?/p>

鏈疄鐜扮殑鍑芥暟 姒傝 PC杩炴帴 灏哠DA鍜孲CL杩炴帴鍒颁换浣曠┖闂茬殑GPlOo 渚嬪銆倁8g^graphics_test.lua棰勮SDA = 5 (GPIO14)鍜孲CL =6 (GPIO12) 0璁块棶鏄剧ず鍣ㄤ箣鍓嶏紝瀹冧滑鐢ㄤ簬璁剧疆nodemeu鐨勩€嶤椹卞姩绋嬪簭锛?sda = 5 scl = 6 i2c.setup(0j sda, scl, i2c.SLOW) SPI杩炴帴 浣跨敤HSPI妯″潡(鏇村淇℃伅)锛屾墍浠ユ煇浜涘紩鑴氭槸鍥哄畾鐨勶細 鈥SPICLK = GPIO14 鈥SPIMOSI=GPIO13 鈥SPIMISO = GPIO12 (鏈娇鐢? 鎵€鏈夊叾浠栧紩鑴氬彲浠ュ垎閰嶇粰浠讳綍鍙敤鐨凣PIO锛?鈥S 鈥/C 鈥ES (鏌愪簺鏄剧ず鍣ㄥ彲閫? 鍙﹁鍙傞槄u8g_graphics_test.lua涓殑鍒濆鍖栧簭鍒? spi.setup(l4 spi.MASTER, spi銉籆POL_LOW, spi.CPHA_LOW, 8, 8) 搴撲娇鐢ㄦ儏鍐?杩欎釜搴撶殑Lua缁戝畾绱ц窡鐫€u8glib鐨勯潰鍚戝璞$殑C ++API銆傚熀浜巙8g绫伙紝鎮ㄥ彲浠ヤ负鎮ㄧ殑鏄剧ず绫诲瀷鍒涘缓涓€ 涓璞°€?SSD1306閫氳繃 FC锛?sla = 0x3c disp = u8g.ssdl306_128x64_i2c(sla) SSD1306閫氳繃 SPI锛?cs = 8 鈥?GPIOlSj puLL-down 10k to GND de = 4 鈥?GPI02 res = 0 鈥?GPI016J RES is optionaL YMMV disp = u8g.ssdl306_128x64_hw_spi(csj de, res) 杩欎釜瀵硅薄鎻愪緵浜嗘墍鏈夌殑u8glib鐨勬柟娉曟潵鎺у埗鏄剧ず銆傚啀娆★紝璇峰弬鑰僽Sg-^graphicS-testlua鏉ヤ簡瑙ua浠g爜 濡備綍瀹炵幇杩欎竴鐐广€傝闂畊8glib涓婚〉鑾峰彇鎶€鏈粏鑺傘€?鏄剧ず鍣?鍙互鍚敤鏀寔u8glib鐨凢C鍜孒WSPIfi绀恒€傝璁块棶鐩稿簲鐨勬瀯閫犲嚱鏁帮紝鍙皢鎵€闇€鐨勬潯鐩坊鍔犲埌app/ include/u8g_config.h 涓殑 FC 鎴?SPI 鏄剧ず琛ㄤ腑锛?#define U8G_DISPLAY_TABLE_12C U8G_DISPLAY_TABLE_ENTRY(ssdl306_128x64_i2c) #define U8G_DISPLAY_TABLE_SPI U8G_DISPLAY_TABLE_ENTRY(ssdl306_128x64_hw_spi) \ U8G_DISPLAY_TABLE_ENTRY(pcd8544_84x48_hw_spi) \ U8G_DISPLAY_TABLE_ENTRY(pcf8812_96x65_hw_spi) 瀛椾綋 u8glib涓哄皬鍨嬫樉绀哄櫒鎻愪緵浜嗗箍娉涚殑瀛椾綋銆傜敱浜庨渶瑕佸皢鍏剁紪璇戝埌鍥轰欢鏄犲儚涓紝鍥犳鎮ㄩ渶瑕佸皢瀹冧滑鍖呭惈 鍦╝pp/ include/u8g_config.h涓苟閲嶆柊缂栬瘧銆傚彧闇€灏嗘墍闇€鐨勫瓧浣撴坊鍔犲埌瀛椾綋琛ㄤ腑锛?#define U8G_F0NT_TABLE U8G_FONT_TABLE_ENTRY(font_6xl0) U8G_F0NT_TABLE_ENTRY(font_Chikita) 浠栦滑浼氬儚u8g. Lua涓€鏍峰彲鐢ㄣ€?浣嶅浘 浣嶅浘鍜孹BM浠ュ瓧绗︿覆褰㈠紡鎻愪緵缁檇rawBitmapO鍜宒rawXBM銆傘€傝繖灏嗗嵏杞戒粠u8g妯″潡鍒颁簩杩涘埗鏂囦欢 鐨勯€氱敤鏂规硶鐨勬墍鏈夋暟鎹鐞嗐€傝鍙傞槄u8g_bitmaps.lua銆備笌鍩轰簬婧愪唬鐮佺殑XBM鍖呭惈鍦╱8glib涓浉姣旓紝 瀹冮渶瑕佹彁渚涢缂栬瘧鐨勪簩杩涘埗鏂囦欢銆傝繖鍙互閫氳繃Online-Utility鐨勫浘鍍忚浆鎹㈠櫒鍦ㄧ嚎鎵ц锛氫粠XBM杞崲涓?MONO鏍煎紡锛屽苟浣跨敤nodemcu-uploader.py涓婁紶浜岃繘鍒剁粨鏋溿€?PC鏄剧ず椹卞姩鍣?閫氳繃|骞诲垵濮嬪寲鏄剧ず銆?init搴忓垪浼氭彃鍏ュ欢杩熶互鍖归厤鏄剧ず瑙勬牸銆傚鏋渨iA鏈嶅姟琚樆濉炲お涔咃紝杩欎簺鍙兘浼氫娇鏁翠釜绯荤粺涓嶇ǔ瀹氥€傚洜 姝わ紝寤鸿绂佺敤杩欐牱鐨勫欢杩燂紝闄ら潪鐗瑰畾鐢ㄤ緥鍙互鍦ㄥ垵濮嬪寲鏄剧ず椹卞姩绋嬪簭鏃舵帓闄ifi閫氫俊閲忋€?鈥8g.shll06_128x64_i2c() 鈥8g.ssdl306_128x32_i2c() 鈥8g.ssdl306_128x64_i2c() 鈥8g.ssdl306_64x48_i2c() 鈥8g.ssdl309_128x64_i2c() 鈥8g.ssdl327_96x96_gr_i2c() 鈥8g.ucl611_dogm240_i2c() 鈥8g.ucl611_dogxl240_i2c() 鍙ユ硶 u8g.ssdl306_128x64_i2c(address[j use_delay]) 鍙傛暟 鈥ddress FC鏄剧ず鐨勪粠鍦板潃 銉籾se.delay 鈥?鈥欙細鍦╥nit搴忓垪涓娇鐢ㄥ欢閫€锛屽鏋滅渷鐣ワ紝鍒欎娇鐢ㄢ€?鈥?杩斿洖 U8g鏄句笉瀵瑰啟 渚?sda = 5 scl = 6 i2c.setup(0j sda, scl, i2c.SLOW) sla = 0x3c disp = u8g.ssdl306_128x64_i2c(sla) 涔熷彲浠ョ湅鐪?SPI鏄剧ず椹卞姩鍣?SPI鏄剧ず椹卞姩鍣?閫氳繃纭欢spi鍒濆鍖栨樉绀恒€?init搴忓垪浼氭彃鍏ュ欢杩熶互鍖归厤鏄剧ず瑙勬牸銆傚鏋渨ifi鏈嶅姟琚樆濉炲お涔咃紝杩欎簺鍙兘浼氫娇鏁翠釜绯荤粺涓嶇ǔ瀹氥€傚洜 姝わ紝寤鸿绂佺敤杩欐牱鐨勫欢杩燂紝闄ら潪鐗瑰畾鐢ㄤ緥鍙互鍦ㄥ垵濮嬪寲鏄剧ず椹卞姩绋嬪簭鏃舵帓闄ifi閫氫俊閲忋€?鈥?u8g.ld7032_60x32_hw_spi() . u8g.pcd8544_84x48_hw_spi() u8g.pcf8812_96x65_hw_spi() 鈻?u8g.shll06_128x64_hw_spi() 鈻?u8g.ssdl306_128x32_hw_spi() . u8g.SSdl306_128x64_hw_Spi() . u8g.ssdl306_64x48_hw_spi(f] 鈻?u8g.ssdl309_128x64_hw_spi()| . u8g.ssdl322_nhd31oled_bw_hw_spi() 鈥?u8g.ssdl322_nhd31oled_gr_hw_spi() . u8g.ssdl325_nhd27oled_bw_hw_spi() u8g.ssdl325_nhd27oled_gr_hw_spi() 鈻?u8g.ssdl327_96x96_gr_hw_spi() 鈥?U8g.ssdl351_128xl28_332_hw_spi() U8g.ssdl351_128xl28gh_332_hw_spi() 鈻?u8g.ssdl351_128xl28_hicolor_hw_spi() 鈻?u8g.ssdl351_128xl28gh_hicolor_hw_spi() . u8g.ssdl353_160xl28_332_hw_spi() 鈥?u8g.ssdl353_160xl28_hicolor_hw_spi() . u8g.st7565_64128n_hw_spi() 鈻?u8g.st7565_dogml28_hw_spi() 鈥?u8g.st7565_dogml32_hw_spi()] 鈥?u8g.st7565_lm6059_hw_spi() . u8g.st7565_lm6063_hw_spi() 鈻?u8g.st7565_nhd_cl2832_hw_spi() 鈻?u8g.st7565_nhd_cl2864_hw_spi() . u8g.ucl601_cl28032_hw_spi() U8g.ucl608_240xl28_hw_spi() 鈻?u8g銉?UC1608_240x64_hw_spi(f] 鈻?u8g.ucl610_dogxll60_bw_hw_spi() . u8g.ucl610_dogxll60_gr_hw_spi() 鈥?u8g. ucl611_dogm240_hw_spi()_| u8g.ucl611_dogxl240_hw_spi() . u8g.ucl701_dogsl02_hw_spi() 鈥?u8g.ucl701_minil2864_hw_spi() 鍙ユ硶 u8g.ssdl306_128x64_spi(csJ dc[j res[j use_delay]])

鍙傛暟

鈥s GHIU5I鑴氱敤浜?Q> 鈥e GPIO寮曡剼鐢ㄤ簬DC 鈥es /RES鐨凣PIO寮曡剼锛岀渷鐣ユ椂鏃?鈥se_delay 1鈥欙細鍦╥nit搴忓垪涓娇鐢ㄥ欢杩?濡傛灉鐪佺暐锛屽垯浣跨敤銆?杩斿洖 u8g鏄剧ず瀵硅薄 渚?spi.set鍙?1, spi.MASTER, spi.CPOL_LOW, spi.CPHA_LOW, 8, 8) cs = 8 鈥?GPIOlSj pull-down 10k to GND de = 4 鈥?GPIO2 res = 0 鈥?GPI016, RES is optionaL YMMV disp = u8g.ssdl306_128x64_hw_spi(csj de, res) 涔熷彲浠ョ湅鐪?FC鏄剧ず椹卞姩鍣?u8g.fb_rle 鍒濆鍖栦竴涓櫄鎷熸樉绀猴紝鎻愪緵杩愯闀垮害缂栫爜甯х紦鍐插尯鍐呭鍒颁竴涓狶ua鍥炶皟銆?鍥炶皟鍑芥暟鍙互鐢ㄦ潵閫愯澶勭悊framebuffer銆傚畠琚玭il绉颁负鍙傛暟锛岀敤浜庢寚绀烘柊甯х殑寮€濮嬶紝鎴栬€呯敤鍖呭惈 鍏锋湁杩愯闀垮害缂栫爜鐨勫抚缂撳啿鍖虹殑琛岀殑瀛楃涓层€傚瓧绗︿覆涓殑绗竴涓瓧鑺傛寚瀹氫簡澶氬皯瀵?x, len),鑰?姣忓瀹氫箟浜嗕竴绯诲垪浜偣鍍忕礌鐨勫紑濮?鏈€宸﹁竟鐨剎鍧愭爣)鍜岄暱搴︺€傝琛屼腑鐨勬墍鏈夊叾浠栧儚绱犻兘鏄粦鑹茬殑銆?n = struct.unpack(鈥淏"J rle_line) print(n鈥︹€?pairs") for i = 0^n-1 do print(string.format(" x: %d len: %d", struct.unpack(鈥淏B鈥? rle_linej 1+1 + i2))) end 鍙ユ硶 u8g.fb_rle(cb_frij width, height) 鍙傛暟 鈥b_fn([rle_line])鍥炶皟鍑芥暟銆俽le_line鏄竴涓寘鍚繍琛岄暱搴︾紪鐮佺殑甯х紦鍐茶鐨勫瓧绗︿覆锛屾垨 鑰卬il鎸囩ず甯х殑寮€濮嬨€?銉粀idth鐨勬樉绀恒€傚繀椤绘槸8鐨勫€嶆暟锛屽皬浜庢垨绛変簬248銆?鈥eight鐨勬樉绀恒€傚繀椤绘槸8鐨勫€嶆暟锛屽皬浜庢垨绛変簬248銆?杩斿洖 u8g鏄剧ず瀵硅薄 甯搁噺 鍚勭鍔熻兘鐨勫父閲忋€?u8g.DRAW_UPPER_RIGHT , u8g.DRAW_UPPER_LEFT , u8g.DRAW_LOWER_RIGHT , u8g.DRAW_LOWER_LEFT , u8g.M0DE_BW , u8g.M0DE_GRAY2BIT u8g.font_6xl0 ,鈥?u8g.disp瀛愭ā鍧?u8g.disp锛?drawBitmap () 鍦ㄦ寚瀹氱殑x/y浣嶇疆(浣嶅浘鐨勫乏涓婅)缁樺埗浣嶅浘銆備綅鍥剧殑涓€閮ㄥ垎鍙兘鍦ㄦ樉绀鸿竟鐣屼箣澶栥€備綅鍥剧敱鏁扮粍浣?鍥炬寚瀹氥€傛竻闄ょ殑浣嶈〃绀猴細涓嶈缁樺埗鍍忕礌銆傛暟缁勫唴鐨勪竴涓綅琛ㄧず锛氱敤褰撳墠棰滆壊绱㈠紩鍐欏叆鍍忕礌銆傚浜庡崟 鑹叉樉绀猴紝棰滆壊绱㈠紩0閫氬父浼氭竻闄や竴涓儚绱狅紝棰滆壊绱㈠紩1灏嗚缃竴涓儚绱犮€?鍙ユ硶 disp:drawBitmap(X, y, ent, h, bitmap) 鍙傛暟 銉籜 X浣嶇疆(浣嶅浘鐨勫乏杈逛綅缃? 銉粂 Y浣嶇疆(浣嶅浘鐨勪笂閮ㄤ綅缃? 銉籩nt浣嶅浘鍦ㄦ按骞虫柟鍚戜笂鐨勫瓧鑺傛暟銆備綅鍥剧殑瀹藉害鏄痚nt8銆?-h浣嶅浘鐨勯珮搴?銉籦itmap浣嶅浘鏁版嵁浠ュ瓧绗︿覆褰㈠紡鎻愪緵 杩斿洖 nil 涔熷彲浠ョ湅鐪?鈥8glibdrawBitmap () 鈥ua_examples / u8glib / u8g_bitmaps.lua 鈥8g.disp锛?drawXBM () uSg.disp锛?drawBox () 璇峰弬闃卽8glibdrawBox ()銆?u8g.disp锛氱敾鍦?) 璇峰弬闃卽8glibdrawCircle ()銆?u8g.disp锛?drawDisc () 璇峰弬闃卽8glibdrawDisc ()銆?u8g.disp锛?drawEllipse () 璇峰弬闃卽8glibdrawEllipse ()銆?u8g.disp锛?drawFilledEllipse () 璇峰弬闃?u8glib drawFilledEllipseo u8g.disp锛氬苟鏉℃満() 璇峰弬闃卽8glibdrawFrame ()銆?u8g.disp锛?drawHLine () 璇峰弬闃卽8glib drawHLine ()銆?u8g.disp锛?鐨?drawLine () 璇峰弬闃卽8glibdrawLine ()銆?u8g.disp锛?drawPixel () 璇峰弬闃卽8glibdrawPixel ()銆?uSg.disp锛?drawRBox () 璇峰弬闃卽8glibdrawRBox ()銆?u8g.disp锛?drawRFrame () 璇峰弬闃卽8glib drawRFrame ()銆?u8g.disp锛?drawStr () 璇峰弬闃卽8glibdrawStr ()銆?u8g.disp锛?drawStr90 () 璇峰弬闃?u8glib drawStr90o u8g.disp锛?drawStrl80 () 璇峰弬闃卽8glibdrawStrl8O ()銆?u8g.disp锛?drawStr270 () 璇峰弬闃卽8glibdrawStr270 ()銆?u8g.disp锛?drawTriangle () 鍙傝u8glibdrawTriangle ()銆?u8g.disp锛?drawVLine () 璇峰弬闃卽8glibdrawVLine ()銆?uSg.disp锛?drawXBM () 缁樺埗涓€涓猉BM浣嶅浘銆備綅缃?x, y)鏄綅鍥剧殑宸︿笂瑙掋€俋BM鍖呭惈鍗曡壊鐨?浣嶄綅鍥俱€傛杩囩▼浠呯粯鍒跺儚绱?鍊?.褰撳墠棰滆壊绱㈠紩鐢ㄤ簬缁樺埗(璇峰弬闃卻etColorlndex)銆傚€间负0鐨勫儚绱犱笉缁樺埗(閫忔槑)銆?浣嶅浘鍜孹BM浠ュ瓧绗︿覆褰㈠紡鎻愪緵缁檇rawBitmap()鍜宒rawXBM銆傘€傝繖灏嗗嵏杞戒粠u8g妯″潡鍒颁簩杩涘埗鏂囦欢 鐨勯€氱敤鏂规硶鐨勬墍鏈夋暟鎹鐞嗐€備笌鍩轰簬婧愪唬鐮佺殑XBM鍖呭惈鍦╱8glib涓浉姣旓紝瀹冮渶瑕佹彁渚涢缂栬瘧鐨勪簩杩?鍒舵枃浠躲€傝繖鍙互浣跨敤Online-Utility鐨勫浘鍍忚浆鎹㈠櫒鍦ㄧ嚎鎵ц锛氫粠XBM杞崲涓篗ONO鏍煎紡锛屽苟浣?鐢?nodemcu-uploader.py 鎴?ESPIorer涓婁紶浜岃繘鍒剁粨鏋溿€?鍙ユ硶 disp:drawXBM(x, y, w, h, bitmap) 鍙傛暟 銉籜 X浣嶇疆(浣嶅浘鐨勫乏杈逛綅缃? 銉粂 涓綅缃?浣嶅浘鐨勪笂閮ㄤ綅缃? 銉粀浣嶅浘鐨勫搴?鈥浣嗗€掓棾鍜煎害 鈥itmap XBM鏁版嵁浠ュ瓧绗︿覆褰㈠紡鎻愪緵 杩斿洖 nil 涔熷彲浠ョ湅鐪?鈥8glibdrawXBM () 鈥ua_examples / u8glib / u8g_bitmaps.lua 鈥8g.disp锛?drawBitmap () u8g.disp锛氱涓€椤?) 璇峰弬闃卽8glibfirstPage ()銆?uSg.disp锛?getColorlndex () 璇峰弬闃卽8glibgetColorlndex ()銆?u8g.disp锛?getFontAscent () 璇峰弬闃卽8glibgetFontAscent () o u8g.disp锛?getFontDescent () 璇峰弬闃卽8glibgetFontDescent ()銆?u8g.disp锛?getFontLineSpacing () 璇峰弬闃?u8glib get Font LineSpacing ()銆?u8g.disp锛氱殑 getHeight () 璇峰弬闃卽8glibgetHeight ()銆?u8g.disp锛氳幏鍙栨ā寮?) 璇峰弬闃卽8glibgetMode ()銆?u8g.disp锛氱殑 getWidth () 璇峰弬闃卽8glibgetWidth ()銆?u8g.disp锛?getStrWidth () 璇峰弬闃?u8glib getStrWidth o u8g.disp锛氫笅涓€椤?) 璇峰弬闃卽8glib nextPage ()銆?u8g.disp锛?setColorlndex () 璇峰弬闃卽8glibsetColorlndex ()銆?uSa.disn锛?setcontrast () WllubgHDsetcontrast o 銆?u8g.disp锛?setDefaultBackgroundColor () 璇峰弬闃卽8glibsetDefaultBackgroundColor ()銆?uSg.disp锛?setDefaultForegroundColor () 璇峰弬闃卽8glibsetDefaultForegroundColor ()銆?u8g.disp锛?setfont绋嬪簭() u8glib涓哄皬鍨嬫樉绀哄櫒鎻愪緵浜嗗箍娉涚殑瀛椾綋銆傜敱浜庨渶瑕佸皢瀹冧滑缂栬瘧鍒板浐浠舵槧鍍忎腑锛屾墍浠ラ渶瑕佸皢瀹冧滑鍖呭惈 杩涙潵app/include/u8g_config.h骞堕噸鏂扮紪璇戙€傚彧闇€灏嗘墍闇€鐨勫瓧浣撴坊鍔犲埌瀛椾綋琛ㄤ腑锛?#define U8G_F0NT_TABLE U8G_FONT_TABLE_ENTRY(font_6xl0) U8G_FONT_TABLE_ENTRY(font_chikita) 浠栦滑浼氬儚u8g. Lua涓€鏍峰彲鐢ㄣ€?鍙ユ硶 disp:setFont(font) 鍙傛暟 font甯搁噺鏉ユ爣璇嗛缂栬瘧鐨勫瓧浣?杩斿洖 disp:setFont(u8g.font_6xl0) 涔熷彲浠ョ湅鐪?鈥?u8glibsetFont () uSg.disp锛?setFontLineSpacingFactor () 璇峰弬闃卽8glibsetFontLineSpacingFactor ()銆?uSg.disp锛?setFontPosBaseline () 璇峰弬闃卽8glibsetFontPosBaseline ()銆?uSg.disp锛?setFontPosBottom () 璇峰弬闃卽8glibsetFontPosBottom ()銆?uSg.disp锛?setFontPosCenter () 璇峰弬闃卽8glibsetFontPosCenter ()銆?uSg.disp锛?setFontPosTop () 璇峰弬闃卽8glib setFontPosTop ()銆?u8g.disp锛?setFontRefHeightAll () 璇峰弬闃卽8glibsetFontRefHeightAll ()銆?u8g.disp锛?setFontRefHeightExtendedText () 璇峰弬闃卽8glibsetFontRefHeightExtendedText ()銆?uSg.disp锛?setFontRefHeightText () 璇峰弬闃卽8glibsetFontRefHeightText ()銆?u8g.disp锛?setRot90 () 璇峰弬闃卽8glibsetRot90 ()銆?u8g.disp锛?setRotl80 () 璇峰弬闃卽8glibsetRot!80 () 鈻?u8g.disp锛?setRot270 () 璇峰弬闃卽8glibsetRot270 ()銆?u8g.disp锛?setScale2x2 () 璇峰弬闃卽8glibsetScale2x2 ()銆?u8g.disp锛?sleepOn () 璇峰弬闃卽8glibsleepOn ()銆?u8g.disp锛?sleepOff () 璇峰弬闃卽8glib sleepOff ()銆?u8g.disp锛?undoRotation () 璇峰弬闃卽8glibundoRotation ()銆?uSg.disp锛?undoScale () 璇峰弬闃卽8glibundoScale ()銆?鏈疄鐜扮殑鍑芥暟 鈥㈡父鏍囧鐞?o disableCursor () o enableCursor () o setCursorColor () 鈻?setCursorFont () o setCursorPos () o setCursorStyle () 鈥?涓€鑸姛鑳?o setPrintPos () o setHardwareBackup () o setRGB () o setDefaultMidColor () 鏂囨。銆嬭嫳璇?妯″潡+UART UART妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 鎯呰妭涓瓧 Zeroday Zeroday uart.c

鐨刄ART 锛堥€氱敤寮傛鎺ユ敹鍣?鍙戦€佸櫒锛夋ā鍧楀厑璁稿UART涓茶绔彛鐨勯厤缃拰閫氫俊銆?uart鐨勯粯璁よ缃敱鏋勫缓鏃堕棿璁剧疆鎺у埗銆傞粯璁ゅ€兼槸115,200bpso姝ゅ锛屽湪骞冲彴鍚姩鍚庣殑鍓嶄袱鍒嗛挓锛岃嚜 鍔ㄦ尝鐗圭巼妫€娴嬪姛鑳藉皢鍚敤銆備竴鏃︽敹鍒板嚑涓瓧绗︼紝杩欏皢瀵艰嚧鍒囨崲鍒版纭殑娉㈢壒鐜囥€傝嚜鍔ㄦ尝鐗圭巼妫€娴?鍦╱art.setup琚皟鐢ㄦ椂琚鐢ㄣ€?鉂堕噸瑕?灏界NodeMCU鏈変袱涓猆ART 锛?鍜?锛?浣哢ART 1涓嶈兘鎺ユ敹鏁版嵁锛屽洜姝ゅ彧鑳戒紶杈撱€?uartalt () 鏇存敼UART寮曡剼鍒嗛厤銆?uarton () 璁剧疆鍥炶皟鍑芥暟鏉ュ鐞哢ART浜嬩欢銆?uartsetup () 锛堥噸鏂帮級閰嶇疆UART鐨勯€氫俊鍙傛暟銆?uartgetconfig () 杩斿洖UART鐨勫綋鍓嶉厤缃弬鏁般€?uart.write () 灏嗗瓧绗︿覆鎴栧瓧鑺傚啓鍏ART銆?/p>

uart.alt 锛堬級 鏇存敼UART寮曡剼鍒嗛厤銆?鍙ユ硶 uart.alt(on) 鍙傛暟 銉?涓烘爣鍑嗗紩鑴?-1浣跨敤澶囩敤寮曡剼GPIO13鍜孏PIO15 杩斿洖 nil uart.on 锛堬級 璁剧疆鍥炶皟鍑芥暟鏉ュ鐞哢ART浜嬩欢銆?鐩墠鍙敮鎸佲€滄暟鎹?浜嬩欢銆?鉂舵敞鎰?鐢变簬ESP8266鐨勯檺鍒讹紝鍙湁UART0鎵嶈兘鎺ユ敹鏁版嵁銆?uart.on(method4 [number/end_char]4 [function], [run_input]) 鍙傛暟 銉籱ethod 鈥滄暟鎹€濓紝鏁版嵁宸茬粡鍦║ART涓婃帴鏀跺埌 鈥umber/end_char 銆傚鏋渘 = 0,灏嗘帴鏀剁紦鍐插尯涓殑姣忎釜瀛楃 o濡傛灉n<255,鍒欏湪鎺ユ敹鍒皀涓瓧绗︽椂璋冪敤鍥炶皟 銆傚鏋滀竴涓瓧绗︹€渃鈥濓紝鍒欏湪閬囧埌V鏃跺皢璋冪敤璇ュ洖璋冿紝鎴栬€呮渶澶ф帴鏀秐 = 255 鈥unction鍥炶皟鍑芥暟锛屼簨浠垛€滄暟鎹€濇湁杩欐牱涓€涓洖璋冿細function(data) end 鈥un_input銆傛垨1.濡傛灉0,浠嶶ART杈撳叆涓嶄細杩涘叆Lua瑙i噴鍣紝鍙互鎺ュ彈浜岃繘鍒舵暟鎹€傚鏋?,浠?UA2杈撳叆灏嗚繘鍏ua瑙i噴鍣紝鐒跺悗杩愯銆?瑕佹敞閿€鍥炶皟锛屽彧鎻愪緵鈥滄暟鎹€濆弬鏁般€?杩斿洖 nil 渚?鈥搘hen 4 chars is received. uart.on(鈥渄ata鈥? 4, function(data) print(鈥渞eceive from uart:鈥? data) if data==鈥渜uit鈥?then uart.on(鈥渄ata鈥? 鈥?unregister callback function end end, 0) 鈥搘hen 鈥榎r鈥?is received, uart.on("data\ 鈥?function(data) print(鈥渞eceive from uart:鈥? data) if data==鈥渜uit\r鈥?then uart.on(鈥渄ata鈥? 鈥?unregister catLback function end end, 0) uart.setup () (閲嶆柊)閰嶇疆UART鐨勯€氫俊鍙傛暟銆?鉂舵敞鎰?濡傛灉姝ゅ姛鑳藉湪鎺ユ敹杩囩▼涓噸鏂伴厤缃甎ART,鍒欏彂閫佸埌UART鐨勫瓧鑺傚彲鑳戒細涓㈠け銆?鍙ユ硶 uart.setup(id4 baud, databits, parity, stopbits[4 echo]) 鍙傛暟 鈥d UARTID (0鎴?1) o 鈥aud 300,600,1200,2400,4800,9600,19200,31250,38400,57600,74880,115200,230400,256000,460800,921600,18432 涓殑涓€涓?鈥atabits 5, 6, 7, 8涔嬩竴 鈥arity uart.PARITY_NONE , uart.PARITY_0DD 鎴?uart.PARITY_EVEN 鈥topbits uart.STOPBITS_l , uart.ST0PBITS_l_5 鎴?uart.ST0PBITS_2 -echo濡傛灉涓?,鍒欑鐢ㄥ洖澹帮紝鍚﹀垯鍚敤鍥炲0(濡傛灉鐪佺暐鍒欓粯璁? 杩斿洖 閰嶇疆鐨勬尝鐗圭巼(鏁伴噺) 渚?鈥揷onfigure for 9600, 8N1, with echo uart.setup(0, 96銆傘€傦紝 8, uart.PARITY_NONE, uart.STOPBITS_1, 1) uart.getconfig () 杩斿洖UART鐨勫綋鍓嶉厤缃弬鏁般€?鍙ユ硶 uart.getconfig(id) 鍙傛暟 鈥d UARTID (銆傛垨 1)銆?杩斿洖 鍥涗釜鍊煎涓嬶細 鈥aud 300,600,1200,2400,4800,9600,19200,38400,57600,74880,115200,230400,256000,460800,921600,1843200,368< 涓殑涓€涓?鈥atabits 5, 6, 7, 8涔嬩竴 鈥arity uart.PARITY_NONE , uart.PARITY_ODD 鎴?uart.PARITY_EVEN 鈥topbits uart.STOPBITS_l , uart.ST0PBITS_l_5 鎴?uart.STOPBITS_2 渚?print (uart.getconfig(0)) 鈥損rints 9600 801 for 96銆傘€? 8N1 uart.write () 灏嗗瓧绗︿覆鎴栧瓧鑺傚啓鍏ART銆?鍙ユ硶 uart.write(idj datal [, data24 鈥) 鍙傛暟 銉?id UARTID (0鎴?1) o 銉籨atal瀛楃涓叉垨瀛楄妭閫氳繃UART鍙戦€?杩斿洖 nil uart.write(0, 鈥淗ello, world\n鈥? 鏂囨。銆嬭嫳璇€濇ā鍧椼€婾CG ucg妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2015骞?鏈?鏃?Oli Kraus, ArnimLauger 闃垮凹濮嗏€㈡媺鏍?ucglib

Ucglib鏄湪olikraus/ucglib寮€鍙戠殑鍥惧舰搴擄紝鏀寔褰╄壊TFT鏄剧ず銆侼odeMCU鍥轰欢鏀寔浠ヤ笅閮?鍒嗭細 -ILI9163 -ILI9341 -PCF8833 -SEPS225 -SSD1331 -SSD1351 -ST7735 杩欎釜鏁村悎鍩轰簬vl.3.3銆? 姒傝 鏄剧ず椹卞姩 閫氳繃纭欢SPI鍒濆鍖栨樉绀恒€?甯搁噺 鍚勭鍔熻兘鐨勫父閲忋€?ucg.disp锛氬紑濮?) 璇峰弬闃卽cglibbegin ()銆?ucg.disp锛?clearScreen () 璇峰弬闃卽cglibclearScreen ()銆?ucg.disp锛?draw90Line () 鍙傝ucglibdraw90Line ()銆?ucg.disp锛?drawBox () 鍙傝ucglibdrawBox ()銆?ucg.disp锛氱敾鍦?) 鍙傝ucglibdrawCircle ()銆?ucg.disp锛?drawDisc () 鍙傝ucglib鐨刣rawDisc ()銆?ucg.disp锛氬苟鏉℃満() 璇峰弬闃卽cglibdrawFrame ()銆?ucg.disp锛?drawGlyph () 鍙傝ucglibdrawGlyph ()銆?ucg.disp锛?drawGradientBox () 鍙傝ucglibdrawGradientBox ()銆?ucg.disp锛?drawGradientLine () 鍙傝ucglibdrawGradientLine ()銆?ucg.disp锛?drawHLine () 鍙傝ucglibdrawHLine ()銆?ucg.disp锛氱殑drawLine () 鍙傝ucglibdrawLine ()銆?/p>

ucg.disp锛?drawPixel () 璇峰弬闃卽cglibdrawPixel ()銆?ucg.disp锛?drawRBox () 鍙傝ucglibdrawRBox ()銆?ucg.disp锛?drawRFrame () 鍙傝ucglibdrawRFrame ()銆?ucg.disp锛?drawString涔?() 璇峰弬闃卽cglibdrawString ()銆?ucg.disp锛?drawfetragon () 鍙傝ucglibdrawRtragon ()銆?ucg.disp锛?drawTriangle () 鍙傝ucglibdrawTriangle ()銆?ucg.disp锛?drawVLine () 鍙傝ucglibdrawVIine ()銆?ucg.disp锛?getFontAscent () 璇峰弬闃卽cglibgetFontAscent ()銆?ucg.disp锛?getFontDescent () 璇峰弬闃卽cglibgetFontDescent ()銆?ucg.disp锛?鐨刧etHeight () 璇峰弬闃卽cglibgetHeight () o ucg.disp锛?getStrWidth () 璇峰弬闃卽cglibgetStrWidth ()銆?ucg.disp锛氱殑getWidth () 璇峰弬闃卽cglibgetWidth ()銆?ucg.disp锛氭墦鍗?) 璇峰弬闃卽cglibprint ()銆?ucg.disp锛?setClipRange () 璇峰弬闃卽cglibsetClipRange ()銆?ucg.disp锛氱殑setColor () 璇峰弬闃卽cglibsetColor ()銆?ucg.disp锛?setfont绋嬪簭() ucglib涓哄皬鍨嬫樉绀哄櫒鎻愪緵浜嗗箍娉涚殑瀛椾綋銆?ucg.disp锛?setFontMode () 璇峰弬闃卽cglibsetFontMode ()銆?ucg.disp锛?setFontPosBaseline () 璇峰弬闃卽cglibsetFontPosBaseline ()銆?ucg.disp锛?setFontPosBottom () 璇峰弬闃卽cglibsetFontPosBottom () 鈻?ucg.disp锛?setFontPosCenter () 璇峰弬闃卽cglibsetFontPosCenter ()銆?ucg.disp锛?setFontPoslbp () 璇峰弬闃卽cglibsetFontPoslbp ()銆?ucg.disp锛?setMaxClipRange () 璇峰弬闃卽cglibsetMaxClipRange ()銆?ucg.disp锛?setPrintDir () 璇峰弬闃卽cglibsetPrintDir ()銆?ucg.disp锛?setPrintPos () 璇峰弬闃卽cglibsetPrintPos ()銆?ucg.disp锛?setRotate90 () 璇峰弬闃卽cglibsetRotate90 ()銆?ucg.disp锛?setRotatel80 () 璇峰弬闃卽cglibsetRotate!80 ()銆?ucg.disp锛?setRotate270 () 璇峰弬闃卽cglibsetRotate270 ()銆?ucg.disp锛?setScale2x2 () 璇峰弬闃卽cglibsetScale2x2 ()銆?/p>

ucg.disp锛?undoClipRange () 璇峰弬闃卽cglibundoClipRange ()銆?/p>

姒傝 SPI杩炴帴 浣跨敤HSPI妯″潡锛堟洿澶氫俊鎭級锛屾墍浠ユ煇浜涘紩鑴氭槸鍥哄畾鐨? 鈥SPICLK = GPIO14 鈥SPI MOSI=GPIO13 -HSPI MISO = GPIO12 (鏈娇鐢? 鎵€鏈夊叾浠栧紩鑴氬彲浠ュ垎閰嶇粰浠讳綍鍙敤鐨凣PIO锛?-cs -d/C -RES 锛堟煇浜涙樉绀哄櫒鍙€夛級 涔熻鍙傝€冧緥濡傚湪GraphicslestJua涓殑鍒濆鍖栭『搴? spi.setup(l, spi.MASTER, spi銉籆POL_LO铏?spi銉籆PHA_LO铏?8, 8) 搴撲娇鐢ㄦ儏鍐?Lua缁戝畾杩欎釜搴撶揣璺熺潃ucglib闈㈠悜瀵硅薄鐨凜++APIo鏍规嵁ucg绫伙紝涓烘偍鐨勬樉绀虹被鍨嬪垱寤轰竴涓 閫氳繃 SPI 鐨?ILI9341锛?cs = 8 鈥?GPIOlSj puLL-down 10k to GND de = 4 鈥?GPI02 res = 0 鈥?GPIOlGj RES is optionaL YMMV disp = ucg.ili9341_18x240x320_hw_spi(cs, de, res) 杩欎釜瀵硅薄鎻愪緵浜嗘墍鏈夌殑ucglib鏂规硶鏉ユ帶鍒舵樉绀恒€傚啀娆″弬鑰僄raphicslestlua鏉ヨ幏寰椾竴涓嵃璞″浣?鐢↙ua浠g爜瀹炵幇銆傝闂畊cglib涓婚〉鑾峰彇鎶€鏈粏鑺傘€?鏄剧ず鍣?瑕佽闂樉绀烘瀯閫犲嚱鏁帮紝灏嗘墍闇€鐨勬潯鐩坊鍔犲埌app / include/ ucg_config.h涓殑鏄剧ず琛ㄤ腑: #define UCG_DISPLAY_TABLE UCG_DISPLAY_TABLE_ENTRY(ili9341_18x240x320_hw_spi, ucg_dev_ili9341_18x240x32l UCG_DISPLAY_TABLE_ENTRY(st7735_18xl28xl60_hw_spiJ ucg_dev_st7735_18xl28xl60, 瀛椾綋

ucglib涓哄皬鍨嬫樉绀哄櫒鎻愪緵涓佸巶娉涙棾瀛愪綋銆傜敱鍗侀渶瑕佸皢鍏剁紪璇﹀埌鍥轰欢鏄犲偄涓紝鍥犳鎮ㄩ渶瑕佸皢瀹冧滑 鍖呭惈鍦╝pp / include / ucg_config.h涓苟閲嶆柊缂栬瘧銆傚彧闇€灏嗘墍闇€鐨勫瓧浣撴坊鍔犲埌瀛椾綋琛ㄤ腑锛?/p>

浠栦滑浼氬儚ucg. Lua鈥旀牱鍙敤銆?鏄剧ず椹卞姩 閫氳繃纭欢SPI鍒濆鍖栨樉绀恒€?銉籭li9163_18xl28xl28_hw_spi() 銉籭li9341_18x240x320_hw_spi() 銉籶cf8833_16xl32xl32_hw_spi() 銉籹eps225_16xl28xl28_uvis_hw_spi() 銉籹sdl351_18xl28xl28_hw_spi() 銉籹sdl351_18xl28xl28_ft_hw_spi() 銉籹sdl331_18x96x64_uvis_hw_spi() 銉籗t7735_18xl28xl60_hw_spi() 鍙ユ硶 ucg.st7735_18xl28xl60_hw_spi(csj de[, res]) 鍙傛暟 -cs GPI銆傚紩鑴氱敤浜?CS -de GPI銆傚紩鑴氱敤浜嶥C -res GPIO寮曡剼鐢ㄤ簬/RES (鍙€? 杩斿洖 ucg鏄剧ず瀵硅薄 渚?spi.setup(l, spi.MASTER, spi銉籆POL_LOW, spi.CPHA_LOWJ spi.DATABITS_8, 0) cs = 8 鈥?GPI015j puLL-down 10k to GND de = 4 鈥?GPI02 res = 0 鈥?GPI016J RES is optionaL YMMV disp = ucg.st7735_18xl28xl60_hw_spi(cs, de, res) 甯搁噺 鍚勭鍔熻兘鐨勫父閲忋€?ucg.FONT_MODE_TRANSPARENT , ucg.FONT_MODE_SOLID , ucg.DRAW_UPPER_RIGHT , ucg.DRAW_UPPER_LEFT , ucg.DRAW_LOWER_RIGHT , ucg.DRAW_LOWER_LEFT , ucg.DRAW_ALL ucg.font_7xl3B_tr ,鈥?ucg.disp瀛愭ā鍧?ucg.disp锛氬紑濮?) 璇峰弬闃卽cglib begin ()銆?ucg.disp锛?clearScreen () 璇峰弬闃卽cglib clearScreen ()銆?ucg.disp锛?draw90Line () 鍙傝ucglib draw90Line ()銆?ucg.disp锛?drawBox () 鍙傝ucglib drawBox ()銆?ucg.disp锛氱敾鍦?) 鍙傝ucglib drawCircle ()銆?ucg.disp锛?drawDisc () 鍙傝ucglib鐨刣rawDisc ()銆?ucg.disp锛氬苟鏉℃満() 璇峰弬闃卽cglibdrawFrame ()銆?ucg.disp锛?drawGlyph () 鍙傝ucglib drawGlyph ()銆?ucg.disp锛?drawGradientBox () 鍙傝ucglibdrawGradientBox ()銆?ucg.disp锛?drawGradientLine () 鍙傝ucglibdrawGradientLine ()銆?ucg.disp锛?drawHLine () 鍙傝ucglib drawHLine ()銆?ucg.disp锛?鐨刣rawLine () 鍙傝ucglib drawLine ()銆?ucg.disp锛?drawPixel () 璇峰弬闃卽cglib drawPixel ()銆?ucg.disp锛?drawRBox () 鍙傝ucglib drawRBox ()銆?ucg.disp锛?drawRFrame () 鍙傝ucglibdrawRFrame ()銆?ucg.disp锛?drawstring涔?() 璇峰弬闃卽cglib drawString ()銆?ucg.disp锛?drawTetragon () 鍙傝ucglib drawlbtragon ()銆?ucg.disp锛?drawTriangle () 鍙傝ucglib drawTriangle ()銆?ucg.disp锛?drawVLine () 鍙傝ucglibdrawVIine ()銆?ucg.disp锛?getFontAscent () 璇峰弬闃卽cglib getFontAscent ()銆?ucg.disp锛?getFontDescent () 璇峰弬闃卽cglibgetFontDescent ()銆?ucg.disp锛?鐨刧etHeight () 璇峰弬闃卽cglibgetHeight ()銆?ucg.disp锛?getStrWidth () 璇峰弬闃卽cglibgetStrWidth ()銆?ucg.disp锛氱殑getWidth () 璇峰弬闃卽cglibgetWidth ()銆?ucg.disp锛氭墦鍗?) 璇峰弬闃卽cglib print ()銆?ucg.disp锛?setClipRange () 璇峰弬闃卽cglib setClipRange ()銆?ucg.disp锛?鐨剆etColor () 璇峰弬闃卽cglib setColor ()銆?ucg.disp锛?setfont绋嬪簭() ucglib涓哄皬鍨嬫樉绀哄櫒鎻愪緵浜嗗箍娉涚殑瀛椾綋銆傜敱浜庨渶瑕佸皢鍏剁紪璇戝埌鍥轰欢鏄犲儚涓紝鍥犳鎮ㄩ渶瑕佸皢瀹冧滑 鍖呭惈鍦╝pp / include / ucg_config.h涓苟閲嶆柊缂栬瘧銆傚彧闇€灏嗘墍闇€鐨勫瓧浣撴坊鍔犲埌瀛椾綋琛ㄤ腑锛?#define UCG_FONT_TABLE UCG_FONT_TABLE_ENTRY(font. _7xl3B_tr) UCG_FONT_TABLE_ENTRY(font helvB12_hr) UCG_FONT_TABLE_ENTRY(font helvB18_hr) UCG_FONT_TABLE_ENTRY(font UCG_FONT_TABLE_ENTRY(font ncenR12_tr) ncenR14_hr) \

浠栦滑浼氬儚ucg. Lua涓€鏍峰彲鐢ㄣ€?鍙ユ硶 disp:setFont(font) 鍙傛暟 font涓嶆柇鍦拌瘑鍒缂栬瘧鐨勫瓧浣?disp:setFont(ucg.font_7xl3B_tr) 涔熷彲浠ョ湅鐪?ucglib setFont () ucg.disp锛?setFontMode () 璇峰弬闃卽cglib setFontMode ()銆?ucg.disp锛?setFontPosBaseline () 璇峰弬闃卽cglibsetFontPosBaseline ()銆?ucg.disp锛?setFontPosBottom () 璇峰弬闃卽cglibsetFontPosBottom ()銆?ucg.disp锛?setFontPosCenter () 璇峰弬闃卽cglib setFontPosCenter ()銆?ucg.disp锛?setFontPosTop () 璇峰弬闃卽cglibsetFontPosTop ()銆?ucg.disp锛?setMaxClipRange () 璇峰弬闃卽cglib setMaxClipRange ()銆?ucg.disp锛?setPrintDir () 璇峰弬闃卽cglib setPrintDir ()銆?ucg.disp锛?setPrintPos () 璇峰弬闃卽cglib setPrintPos ()銆?ucg.disp锛?setRotate90 () 璇峰弬闃卽cglibsetRotate90 ()銆?ucg.disp锛?setRotatel80 () I鏇搁椌I moliX ca+Dc+o+al GC ucg.disp锛?setRotate270 () 璇峰弬闃卽cglibsetRotate270 ()銆?ucg.disp锛?setScale2x2 () 璇峰弬闃卽cglib setScale2x2 ()銆?ucg.disp锛?undoClipRange () 璇峰弬闃卽cglib undoClipRange ()銆?ucg.disp锛?undoRotate () 璇峰弬闃卽cglibundoRotate ()銆?ucg.disp锛?undoScale () 璇峰弬闃卽cglib undoScale ()銆?鏂囨。禄鑻辫"妯″潡銆嬬殑WebSocket Websocket 妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2016骞?鏈?鏃?璺槗鏂€赴濉炲崱 璺槗鏂€赴濉炲崱 websocketc websocket瀹㈡埛绔ā鍧楋紝瀹炵幇RFC6455 (鐗堟湰13),骞舵彁渚涗竴涓畝鍗曠殑鎺ュ彛鏉ュ彂閫佸拰鎺ユ敹娑?鎭€?/p>

璇ュ疄鐜版敮鎸佺鐗囨秷鎭紝鑷姩鍝嶅簲ping璇锋眰锛屽苟瀹氭湡ping濡傛灉鏈嶅姟鍣ㄤ笉閫氫俊銆?SSL/TLS 鏀寔 娉ㄦ剰缃戠粶妯″潡涓褰曠殑绾︽潫鏉′欢銆?websocket.createC 1 ient () 鍒涘缓涓€涓柊鐨剋ebsocket瀹㈡埛绔€?websocket.client锛氬叧闂?) 鍏抽棴websocket杩炴帴銆?websocketclient锛氶厤缃?(PARAMS) 閰嶇疆websocket瀹㈡埛绔疄渚嬨€?websocket.client锛?connect ()鐨?灏濊瘯寤虹珛涓€涓獁ebsocket杩炴帴鑷?|缁欏畾鐨刄 RL銆?websocketclient锛?涓?) 娉ㄥ唽鍥炶皟鍑芥暟鏉ュ鐞唚ebsockets浜嬩欢(姣忎釜浜嬩欢绫诲瀷鍙兘娉ㄥ唽_ 涓鐞嗗嚱鏁?銆?websocketxlient锛氬彂閫?) 閫氳繃websocket杩炴帴鍙戦€佹秷鎭€?/p>

websocket.createClient () 鍒涘缓涓€涓柊鐨剋ebsocket瀹㈡埛绔€傝繖涓鎴风搴旇瀛樺偍鍦ㄤ竴涓彉閲忎腑锛屽苟鎻愪緵鎵€鏈夌殑鍔熻兘鏉ュ 鐞嗚繛鎺ャ€?褰撹繛鎺ュ叧闂椂锛屽悓涓€涓鎴风浠嶇劧鍙互琚噸鐢?鍥炶皟鍑芥暟琚繚鐣?浣犲彲浠ュ啀娆¤繛鎺ュ埌浠讳綍鏈嶅姟 鍣ㄣ€?鍦ㄥ鐞嗗鎴蜂箣鍓嶏紝涓€瀹氳鎵撶數璇漺s:close() o 鍙ユ硶 websocket.createClient() 鍙傛暟 娌℃湁 杩斿洖 websocketclient local ws = websocket.cneateClient() ws:close() ws = nil websocket.client: 鍏抽棴() 鍏抽棴websocket杩炴帴銆傚鎴风鍙戝嚭涓€涓叧闂殑妗嗘灦锛屽苟璇曞浘浼橀泤鍦板叧闂璚ebSocket銆傚鏋滄湇鍔?鍣ㄦ病鏈夊洖澶嶏紝杩炴帴浼氬湪涓€涓皬瓒呮椂鍚庣粓姝€?鍗充娇WebSocket娌℃湁杩炴帴锛屼篃鍙互璋冪敤璇ュ嚱鏁般€?鍦ㄥ鐞嗗websocket瀹㈡埛绔殑寮曠敤涔嬪墠锛屽繀椤诲缁堣皟鐢ㄦ鍑芥暟銆?鍙ユ硶 websocket:close() 鍙傛暟 娌℃湁 杩斿洖 nil ws = websocket.createClient() ws:close() ws:close() 鈥?nothing wiLL happen ws = nil 鈥?fuLLy dispose the cLient as Lua wiLL now gc it websocket.client:閰嶇疆(PARAMS) 閰嶇疆websocket瀹㈡埛绔疄渚嬨€?鍙ユ硶 websocket:config(params) 鍙傛暟 鈥?params琛ㄩ厤缃弬鏁般€備互涓嬮敭琚瘑鍒細 銉籬eaders褰卞搷姣忎釜璇锋眰鐨勯澶栬姹傛爣澶磋〃 杩斿洖 nil 渚?ws = websocket. created ient() ws:config({headers=([鈥楿ser-Agent鈥橾=鈥楴odeMCU鈥檥}) websocket.client: connect ()鐨?灏濊瘯寤虹珛涓€涓獁ebsocket杩炴帴鍒扮粰瀹氱殑U RL銆?鍙ユ硶 websocket:connect(url) 鍙傛暟 銉?url websocket鐨刄RL銆?杩斿洖 nil 渚?ws = websocket. created ient() ws:connect(鈥榳s://echo.websocket.org鈥? 濡傛灉澶辫触锛岄敊璇皢閫氳繃 websocket:on(鈥渃lose鈥? handler)銆?websocket.client:涓?) 娉ㄥ唽鍥炶皟鍑芥暟鏉ュSwebsockets浜嬩欢(姣忎釜浜嬩欢绫诲瀷鍙兘娉ㄥ唽涓€涓鐞嗗嚱鏁?銆?鍙ユ硶 websocket:on(eventName, function(ws,銉汇兓銉?) 鍙傛暟 -eventName websocket浜嬩欢鐨勭被鍨嬫潵娉ㄥ唽鍥炶皟鍑芥暟銆傝繖浜涗簨浠?鏄細 connection , receive 鍜?close 銆?銉籪unction(ws, 鈥?鍥炶皟鍑芥暟銆傚嚱鏁扮殑绗竴涓弬鏁板缁堟槸websocketclient銆傚叾浠栧弬鏁版槸 蹇呴渶鐨勶紝鍏蜂綋鍙栧喅浜庝簨浠剁被鍨嬨€傜湅鍒版洿澶氱殑缁嗚妭鐨勪緥瀛愩€傚鏋渘il浠ュ墠閰嶇疆鐨勫洖璋冩湭娉?rm zKl銆?local ws = websocket.createdient() ws:on(鈥渃onnection鈥? function(ws) print(鈥榞ot ws connection鈥? end) ws:on("receive"4 function(, msg, opcode) print('got message: 'msg, opcode) 鈥?opcode is 1 for text message, 2 for binai end) ws:on(鈥渃lose鈥? function(> status) print(鈥榗onnection closed鈥? status) ws = nil 鈥?required to Lua gc the websocket cLient end) ws:connect(鈥榳s://echo.websocket.org鈥? 璇锋敞鎰忥紝濡傛灉鍙戠敓浠讳綍閿欒锛屼篃浼氳Е鍙戝叧闂洖璋冦€?鍏抽棴鐨勭姸鎬佺爜锛屽鏋滀笉鏄?,鍒欒〃绀洪敊璇紝濡備笅琛ㄦ墍杩般€?鐘舵€佺爜 璇存槑 0 鐢ㄦ埛璇锋眰鍏抽棴鎴栬繛鎺ュ凡姝e父缁堟 -1 鏃犳硶浠嶶RL涓彁鍙栧崗璁?-2 涓绘満鍚嶅お澶э紙>256涓瓧绗︼級 -3 鏃犳晥鐨勭鍙e彿锛堝繀椤汇€?M<= 65535锛?-4 鏃犳硶鎻愬彇涓绘満鍚?-5 DNS鏃犳硶鏌绘壘涓绘満鍚?-6 鏈嶅姟鍣ㄨ姹傜粓姝?-7 鏈嶅姟鍣ㄥ彂閫佹棤鏁堢殑鎻℃墜HTTP鍝嶅簲锛堝嵆鏈嶅姟鍣ㄥ彂閫佷簡涓€涓敊璇殑瀵嗛挜锛?-8 鍒?14 鏃犳硶鍒嗛厤鍐呭瓨鏉ユ帴鏀舵秷鎭?-15 鏈嶅姟鍣ㄦ病鏈夋纭湴閬靛惊FIN浣嶅崗璁?-16 鏃犳硶鍒嗛厤鍐呭瓨鏉ュ彂閫佹秷鎭?-17 鏈嶅姟鍣ㄤ笉鍒囨崲鍗忚 -18 杩炴帴瓒呮椂 -19 鏈嶅姟鍣ㄤ笉鍝嶅簲鍋ュ悍妫€鏌ユ垨閫氫俊 -99 鍒?999 閭d箞涓嶅ソ鐨勪簨鍙戠敓浜?/p>

websocket.client:鍙戦€?) 閫氳繃websocket杩炴帴鍙戦€佹秷鎭€?websocket:send(message, opcode) 鍙傛暟 鈥essage瑕佸彂閫佺殑鏁版嵁銆?鈥pcode鍙€夊湴璁剧疆鎿嶄綔鐮?榛樿锛?,鐭俊) 杩斿洖 nil鎴栬€呭鏋滃鎺ュ瓧鏈繛鎺ワ紝鍒欏彂鐢熼敊璇?渚?ws = websocket. created ient() ws:on(鈥渃onnection鈥? function() ws:send(鈥榟ello!鈥? end) ws:connect('ws://echo.websocket.org1) 鏂囨。銆嬭嫳璇€濇ā鍧椼€嬫棤绾夸笂缃?WiFi妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2015 骞?5 鏈?12 H Zeroday dnc40085 wifi.c 銆傞噸瑕?/p>

WiFi瀛愮郴缁熺敱蹇呴』瀹氭湡杩愯鐨勫悗鍙颁换鍔$淮鎶ゃ€備换浣曡姳璐硅秴杩?5姣锛堟绉掞級鐨勫姛鑳芥垨浠诲姟 閮藉彲鑳藉鑷碬iFi瀛愮郴缁熷穿婧冦€備负浜嗛伩鍏嶈繖浜涙綔鍦ㄧ殑宕╂簝锛屽缓璁甒iFi瀛愮郴缁熷湪鎵ц瓒呰繃 15ms鎸囧崡鐨勪换浣曚换鍔℃垨鍔熻兘涔嬪墠锛屼娇鐢╳ifi.suspend 锛堬級鎸傝捣銆?NodeMCU WiFi鎺у埗鍒嗗竷鍦ㄥ涓〃涓細 -Wifi鐢ㄤ簬鏁翠綋WiFi閰嶇疆 鈥ifi.sta鐢ㄤ簬鐢靛彴妯″紡鍔熻兘 -wifi.ap鐢ㄤ簬鏃犵嚎鎺ュ叆鐐癸紙WAP鎴栫畝绉癆P锛夊姛鑳?鈥ifi.ap.dhcp鐢ㄤ簬DHCP鏈嶅姟鍣ㄦ帶鍒?鈥ifi.eventmon涓簑ifi浜嬩欢鐩戣鍣?wifi.getchannel () 鑾峰彇褰撳墠鐨刉iFi棰戦亾銆?wifi.getdefauItmode () 鑾峰彇榛樿鐨刉iF鑷婁綔妯″紡銆?wifi.getmode () 鑾峰彇WiFi鎿嶄綔妯″紡銆?wifi.getphymode () 鑾峰彇WiFi鐗╃悊妯″紡銆?wifi.nullmodesleep () 閰嶇疆WiFi鏄惁鑷姩杩涘叆NULL_MODE鐫$湢鐘舵€併€?wifi.resume () 浠庢寕璧风姸鎬佸敜閱扺i Fi鎴栧彇娑堟寕璧风殑Wi Fi鎸傝捣銆?wifi.setmode () 閰嶇疆WiFi妯″紡浣跨敤銆?wifi.setphymode () 璁剧疆WiFi鐗╃悊妯″紡銆?wifi.startsmart () 寮€濮嬭嚜鍔ㄩ厤缃紝濡傛灉鎴愬姛鑷姩璁剧疆SSID鍜屽瘑鐮併€?wifi.stopsmart () 鍋滄鏅鸿兘閰嶇疆杩囩▼銆?wifi.suspend () 鎸傝捣Wifi浠ュ噺灏戠數娴佹秷鑰椼€?wifi.sta.autoconnect () 鑷姩浠ョ珯妯″紡杩炴帴鍒癆P銆?wifi.sta.changeap () 浠巜ifi杩斿洖鍒楄〃涓€夋嫨鎺ュ叆鐐广€?/p>

wifi.sta.clearconfig () 娓呴櫎褰撳墠淇濆瓨鐨刉iFi绔欑偣閰嶇疆锛屼粠闂瓨涓竻闄ゃ€?wifi.sta.config () 璁剧疆WiFi绔欑偣閰嶇疆銆?wifi.sta.connect () 杩炴帴鍒扮珯妯″紡涓嬮厤缃殑AP銆?wifi.sta.disconnect () 鍦ㄥ伐浣滅珯妯″紡涓嬩笌AP鏂紑杩炴帴銆?wifi.sta.getap () 灏咥P鍒楄〃浣滀负Lua琛ㄦ壂鎻忓洖璋冨嚱鏁般€?wifi.sta.getapindex () 鑾峰彇瀛樺偍鍦ˋP缂撳瓨涓殑褰撳墠鎺ュ叆鐐圭殑绱㈠紩銆?wifi.sta.getapinfo () 鑾峰彇ESP8266绔欑偣缂撳瓨鐨凙P淇℃伅銆?wifi.sta.getbroadcast () 鑾峰彇绔欐ā寮忎笅鐨勫箍鎾湴鍧€銆?wifi.sta.getconfig () 鑾峰彇WiFi绔欑偣閰嶇疆銆?wifi.sta.getdefaultconfig () 鑾峰彇瀛樺偍鍦ㄩ棯瀛樹腑鐨勯粯璁iFi绔欑偣閰嶇疆銆?wifi.sta.gethostname () 鑾峰彇褰撳墠鐨勭珯鐐逛富鏈哄悕銆?wifi.sta.getip () 鑾峰彇绔欐ā寮忎笅鐨処P鍦板潃锛岀綉缁滄帺鐮佸拰缃戝叧鍦板潃銆?wifi.sta.getmac () 鑾峰彇绔欐ā寮忎笅鐨凪AC鍦板潃銆?wifi.sta.getrssi () 鑾峰彇ESP8266鎵€杩炴帴鐨勬帴鍏ョ偣鐨凴SSI 锛堟帴鏀朵俊鍙峰己搴︽寚绀虹锛夈€?wifi.sta.setaplimit () 璁剧疆瀛樺偍鍦ㄩ棯瀛樹腑鐨勬渶澶ф帴鍏ョ偣鏁伴噺銆?wifi.sta.sethostname () 璁剧疆绔欑偣涓绘満鍚嶃€?wifi.sta.setip () 鍦ㄥ伐浣滅珯妯″紡涓嬭缃甀P鍦板潃锛岀綉缁滄帺鐮侊紝缃戝叧鍦板潃銆?wifi.sta.setmac () 鍦ㄥ伐浣滅珯妯″紡涓嬭缃甅AC鍦板潃銆?wifi.sta.sleeptype () 鍦ㄨ繛鎺ュ埌鎺ュ叆鐐规椂閰嶇疆瑕佷娇鐢ㄧ殑WiFi璋冨埗瑙h皟鍣ㄧ殑鐫$湢绫诲瀷銆?wifi.sta.status () 鑾峰彇宸ヤ綔绔欐ā寮忎笅鐨勫綋鍓嶇姸鎬併€?wifi.ap.config () 鍦ˋP妯″紡涓嬭缃甋SID鍜屽瘑鐮併€?wifi.ap.deauth () 閫氳繃鍙戦€佺浉搴旂殑IEEE802,浠嶦SP鎺ュ叆鐐逛腑鍒犻櫎锛堝己鍒跺垹闄わ級瀹㈡埛 绔€?wifi.ap.getbroadcast () 鑾峰彇AP妯″紡涓嬬殑骞挎挱鍦板潃銆?wifi.ap.getclient () 鑾峰彇浠P妯″紡杩炴帴鍒拌澶囩殑瀹㈡埛绔〃銆?wifi.ap.getconfig () 鑾峰彇褰撳墠鐨凷oftAP閰嶇疆銆?wifi.ap.getdefaultconfig () 鑾峰彇瀛樺偍鍦ㄩ棯瀛樹腑鐨勯粯璁oftAP閰嶇疆銆?wifi.ap.getip () 鍦ˋP妯″紡涓嬭幏鍙朓P鍦板潃锛岀綉缁滄帺鐮佸拰缃戝叧銆?wifi.ap.getmac () 鍦ˋP妯″紡涓嬭幏鍙朚AC鍦板潃銆?/p>

wifi.ap.setip () 鍦ˋP妯″紡涓嬭缃甀P鍦板潃锛岀綉缁滄帺鐮佸拰缃戝叧鍦板潃銆?wifi.ap.setmac () 鍦ˋP妯″紡涓嬭缃甅AC鍦板潃銆?wifi.ap.dhcp.config () 閰嶇疆DHCP鏈嶅姟銆?wifi.ap.dhcp.start () 鍚姩DHCP鏈嶅姟銆?wifi.ap.dhcp.stop () 鍋滄DHCP鏈嶅姟銆?wifi.eventmon.register () 娉ㄥ唽寤婃秷娉ㄥ唽Wi Fi浜嬩欢鐩戣鍣ㄧ殑鍥炶皟銆?wifi.eventmon.unregister () 鍙栨秷娉ㄥ唽WiFi浜嬩欢鐩戣鍣ㄧ殑鍥炶皟銆?wifi.eventmon. reason 鍖呭惈鏂紑鍘熷洜鐨勮〃銆?/p>

wifi.getchannel () 鑾峰彇褰撳墠鐨刉iFi棰戦亾銆?鍙ユ硶 wifi.getchannel() 鍙傛暟 nil 杩斿洖 鐩墠鐨刉iFi棰戦亾 wifi.getdefaultmode () 鑾峰彇榛樿鐨刉iFi鎿嶄綔妯″紡銆?鍙ユ硶 wifi.getdefaultmode() 鍙傛暟 nil 杩斿洖 鍦╓iFi妯″紡锛屼负涓€浣?wifi.STATION , wifi.SOFTAP , wifi.STATIONAP 鎴?wifi.NULLMODE 甯告暟銆?涔熷彲浠ョ湅鐪?wifi . getmode() wifi.setmode() wifi.getmode () 鑾峰彇WiFi鎿嶄綔妯″紡銆?鍙ユ硶 wifi.getmode() 鍙傛暟 nil 杩斿洖 鍦?WiFi妯″紡锛屼负涓€浣?wifi. STATION , wifi.SOFTAP , wif i . STATIONAP 鎴?wifi . NULLMODE 甯告暟銆?涔熷彲浠ョ湅鐪?wifi , getdefaultmode() wifi.setmode() wifi.getphymode () 鑾峰彇WiFi鐗╃悊妯″紡銆?鍙ユ硶 wifi.getphymode() 鍙傛暟 娌℃湁 杩斿洖 褰撳墠鐨勭墿鐞嗘ā寮忎负鍏朵腑涔嬩竴 wifi. PHYMODE_B , wifi. PHYMODE_G 鎴栬€?wifi. PHYMODE_N銆?涔熷彲浠ョ湅鐪?wifi , setphymode() wifi.nullmodesleep () 閰嶇疆WiFi鏄惁鑷姩杩涘叆NU LL_MODE鐫$湢鐘舵€併€傞粯璁ゅ惎鐢ㄣ€?銆傛敞鎰?濡傛灉涓嶉渶瑕佸湪NULL.MODE涓嚜鍔ㄤ紤鐪狅紝鍒欒鍑芥暟涓嶄細灏嗗叾瀛樺偍鍦ㄩ棯瀛?涓紝wifi, nullmodesleep (false)蹇呴』鍦ㄤ笂鐢碉紝閲嶆柊鍚姩鎴栦粠娣卞害浼戠湢涓敜閱掑悗璋冪敤璇?鍑芥暟銆?wifi鈥ullmodesleep([enable]) 鍙傛暟 鈥nable -true鍦∟U LL.M ODE涓惎鐢╓iFi鑷姩鐫$湢銆?榛樿璁剧疆) -false鍦∟ULL.MODE涓鐢╓iFi鑷姩鐫$湢銆?杩斿洖 -sleep_enabled褰撳墠/鏂扮殑NULL.MODE鐫$湢璁剧疆 銆傚鏋渨ifi.nullmodesleep()涓嶅甫鍙傛暟璋冪敤锛屽垯杩斿洖褰撳墠璁剧疆銆?銆傚鏋渨ifi.nullmodesleep()鐢╡nable鍙傛暟璋冪敤锛屽垯杩斿洖鏂拌缃殑纭銆?wifi.resume () 浠庢寕璧风姸鎬佸敜閱扺iFi鎴栧彇娑堟寕璧风殑WiFi鎸傝捣銆?鉂舵敞鎰?Wifi鎭㈠寮傛鍙戠敓锛岃繖鎰忓懗鐫€鎭㈠璇锋眰灏嗗彧鍦ㄥ鐞嗗櫒鐨勬帶鍒舵潈浼犻€掑洖 SDK (MyResumeFunction ()瀹屾垚鍚?鎵嶈澶勭悊銆傛仮澶嶅洖璋冧篃鏄紓姝ユ墽琛岀殑锛屽彧鏈夊湪 WiFi鎭㈠姝e父杩愯鍚庢墠浼氭墽琛屻€?鍙ユ硶 wifi鈥esume([resume_cb]) 鍙傛暟 -resume_cb褰揥iFi浠庢殏鍋滅姸鎬佸敜閱掓椂鎵ц鍥炲彨銆傦紒娉ㄦ剰鈥滄敞鎰忥細鈥?浠讳綍浠ュ墠鎻愪緵鐨勫洖璋冨皢琚浛鎹紒 杩斿洖 nil 渚?鈥揜esume wifi from timed or indefinite sLeep wifi.resume() 鈥揜esume wifi from timed or indefinite sLeep w/ resume caLLback wifi.resume(function() print(鈥淲iFi resume鈥? end) 涔熷彲浠ョ湅鐪?鈥ifi.suspend() 鈥ode.sleep() 鈥ode.dsleep() wifi.setmode () 閰嶇疆WiFi妯″紡浣跨敤銆侼odeMCU鍙互浠ュ洓绉峎iFi妯″紡涔嬩竴杩愯锛?-绔欐ā寮忥紝NodeMCU璁惧鍔犲叆鐜版湁缃戠粶 -鎺ュ叆鐐?AP)妯″紡锛屽湪閭i噷鍒涘缓鑷繁鐨勭綉缁滐紝鍏朵粬浜哄彲浠ュ姞鍏?-Station+AP妯″紡锛屽湪姝ゆā寮忎笅锛屽畠鏃㈠垱寤鸿嚜宸辩殑缃戠粶锛屽悓鏃跺張杩炴帴鍒板彟涓€涓幇鏈夌殑缃戠粶 -WiFi鍏抽棴 褰撲娇鐢ㄧ粍鍚堢數鍙?AP妯″紡鏃讹紝涓や釜缃戠粶灏嗕娇鐢ㄧ浉鍚岀殑棰戦亾锛屽洜涓烘棤绾跨數鍙兘鍦ㄥ崟涓閬撲笂鏀?鍚€?鉂舵敞鎰?鍗充娇璁惧鍏抽棴锛學iFi閰嶇疆涔熶細淇濈暀锛岀洿鍒版洿鏀逛负姝€?鍙ユ硶 wifi,setmode(mode[, save]) 鍙傛暟 -mode浠峰€煎簲璇ユ槸鍏朵腑涔嬩竴 0 wifi.STATION褰撹澶囪繛鎺ュ埌WiFi璺敱鍣ㄦ椂銆傝繖閫氬父鏄负浜嗚璁惧璁块棶浜掕仈缃戙€?銆倃ifi.SOFTAP鍥犱负褰撹澶囧彧浣滀负涓€涓帴鍏ョ偣銆傝繖灏嗗厑璁告偍鍦╓iFi缃戠粶鍒楄〃涓煡鐪嬭澶?(褰撶劧锛岄櫎闈炴偍闅愯棌SSID)銆傚湪杩欑妯″紡涓嬶紝鎮ㄧ殑璁$畻鏈哄彲浠ヨ繛鎺ュ埌璁惧锛屽垱寤轰竴涓?灞€鍩熺綉銆傞櫎闈炴偍鏇存敼璇ュ€硷紝鍚﹀垯NodeMCU璁惧灏嗚幏寰椾竴涓湰鍦癐P鍦板潃192.168.4.1,骞?涓烘偍鐨勮绠楁満鍒嗛厤涓嬩竴涓彲鐢ㄧ殑IP鍦板潃锛屼緥濡?92.168.4.2銆?0 wifi.STATIONAP 鏄殑缁勫悎 wifi.STATION 鍜?wifi.SOFTAP銆傚畠鍏佽鎮ㄥ垱寤烘湰鍦癢iFi 杩炴帴骞惰繛鎺ュ埌鍙︿竴涓猈iFi璺敱鍣ㄣ€?o Wifi.NULLMODE 灏哤iFi妯″紡鏇存敼涓篘ULL_MODE灏嗕娇wifi杩涘叆涓嶮ODEM.SLEEP绫讳技 鐨勪綆鍔熻€楃姸鎬侊紝浣嗘湭鎻愪緵wifi. nullmodesleep(false)銆?-save閫夋嫨鏄惁灏唚ifi妯″紡淇濆瓨鍒伴棯瀛?鈻?true WiFi妯″紡閰嶇疆灏嗗湪鐢垫簮鍛ㄦ湡涓繚鐣欍€?榛樿) 掳 false WiFi妯″紡閰嶇疆灏嗕笉浼氶€氳繃閲嶆柊鍚姩杩涜淇濈暀銆?杩斿洖 褰撳墠妯″紡璁剧疆鍚?渚?wifi.setmode(wifi.STATION) 涔熷彲浠ョ湅鐪?wifi , getmode() wifi.getdefaultmode() wifi.setphymode () 璁剧疆WiFi鐗╃悊妯″紡銆?802.11b,鏇村鏃宠寖鍥达紝浣庝紶杈撻€熺巼锛屾洿澶氭棾鐢垫祦娲庤€?-wifi.PHYMODE_G 802.11g,涓瓑鑼冨洿锛屼腑绛変紶杈撻€熺巼锛屼腑绛夌數娴?銉粀ifi.PHYMODE_N 802.11D,鏈€灏忚寖鍥达紝蹇€熶紶杈撻€熺巼锛屾渶灏忕數娴佹秷鑰?浠呴檺浜庣珯鐐?鏉?鑷狤spressif鏁版嵁琛╲4.3鐨勪俊鎭?鍙傛暟 鍏稿瀷鐨勫姛鐜囦娇鐢?lx 802.11b, CCK 11Mbps, POUT = + 17dBm 170姣畨 Tx802.11g, OFDM 54Mbps, POUT = + 15dBm 140姣畨 Tx802.11n, MCS7 65Mbps, POUT = + 13dBm 120姣畨 Rx 802.11b, 1024瀛楄妭鏁版嵁鍖呴暱搴︼紝-80dBm 50姣畨 Rx802.11g, 102鎺ㄨ妭鍖呴暱锛?70dBm 56姣畨 Rx802.11n, 1024瀛楄妭鍖呴暱锛?65dBm 56姣畨

鍙ユ硶 wifi , setphymode(mode) 鍙傛暟 mode涓嬪垪涔嬩竴 鈥ifi.PHYMODE_B 鈥ifi.PHYMODE_G 鈥ifi.PHYMODE_N 杩斿洖 鐗╃悊妯″紡璁剧疆鍚?涔熷彲浠ョ湅鐪?wifi 銉?getphymode() wifi.startsmart () 寮€濮嬭嚜鍔ㄩ厤缃紝濡傛灉鎴愬姛鑷姩璁剧疆SSID鍜屽瘑鐮併€?鏃ㄥ湪鐢ㄤ簬SmartConfig搴旂敤绋嬪簭锛屽Espressif鐨凙ndroid鍜宨OS搴旂敤绋嬪簭銆?鍙兘鍦╳ifi.STATION妯″紡涓嬩娇鐢ㄣ€?銆傞噸瑕?SmartConfig鍦ㄩ粯璁ゆ儏鍐典笅澶勪簬绂佺敤鐘舵€?鍙互|wifi_smart_enable |鍦▅ user_config.h |鏋?寤哄浐浠朵箣鍓嶉€氳繃璁剧疆鍚敤銆?wifi,startsmart(type, callback) 鍙傛暟 -type銆備唬琛‥SP.TOUCH,鎴?1浠h〃AIR_KISS銆?鈥?callback function(ssidpassword) end 閰嶇疆鍚庤皟鐢ㄧ殑琛ㄥ崟鐨勫洖璋冨嚱鏁般€?杩斿洖 nil 渚?wifi 銉?setmode(wifi鈥TATION) wifi鈥tartsmart(0j function(ssidj password) print(string.format(鈥淪uccess. SSID:%s ; PASSWORD:%s鈥橽 ssidj password)) end ) 涔熷彲浠ョ湅鐪?wifi.stopsmart() wifi.stopsmart () 鍋滄鏅鸿兘閰嶇疆杩囩▼銆?鍙ユ硶 wifi.stopsmart() 鍙傛暟 娌℃湁 杩斿洖 nil 涔熷彲浠ョ湅鐪?wifi.startsmart() wifi.suspend () 鎸傝捣Wifi浠ュ噺灏戠數娴佹秷鑰椼€?銆傛敞鎰?Wifi鎸傝捣寮傛鍙戠敓锛岃繖钁涘懗鐪嬫寕璧疯姹傚彧鏈変换澶勭悊鍣ㄦ棾鎻戝埗鏉冭繑鍥炵粰 SDK (MySuspendFunction ()瀹屾垚鍚?鎵嶄細琚鐞嗐€傛寕璧峰洖璋冧篃鏄紓姝ユ墽琛岀殑锛屽彧鏈夊湪 wifi鎴愬姛闊冲仠鍚庢墠鑳芥墽琛屻€?鍙ユ硶 wifi.suspend((duration[suspend_cb, resume_cb, preserve_mode]}) 鍙傛暟 銉籨uration鎸傝捣鎸佺画鏃堕棿(浠ュ井绉?|JS)涓哄崟浣?銆傚鏋溿€傛寚瀹氫簡鏆傚仠鎸佺画鏃堕棿锛屾殏鍋?灏嗘槸涓嶇‘瀹氱殑(鑼冨洿锛氥€傛垨50000-268435454|js (0锛?4锛?28.000454)) -suspend_cb鍦╓iFi鏆傚仠鏃舵墽琛屽洖鍙€?鍙€夌殑) -resume_cb褰揥iFi浠庢殏鍋滅姸鎬佸敜閱掓椂鎵ц鍥炲彨銆?鍙€夌殑) 銉?preserve_mode 閫氳繃鑺傜偣浼戠湢鏉ヤ繚鎸佸綋鍓嶇殑WiFi妯″紡銆?鍙€夛紝榛樿锛歵rue) 銉诲鏋滀负true,鍒欏湪NodeMCU鎭㈠鏃讹紝Station鍜孲tationAP妯″紡灏嗚嚜鍔ㄩ噸鏂拌繛鎺ュ埌鍏堝墠閰嶇疆 鐨勬帴鍏ョ偣銆?-濡傛灉涓篺alse,鍒欎涪寮僕iFi妯″紡骞剁寮€NodeMCU wifi.NULL_MODE銆俉iFi妯″紡灏嗗湪閲嶅惎鏃?鎭㈠鍒板師濮嬫ā寮忋€?杩斿洖 銉籹uspend_state濡傛灉娌℃湁鎻愪緵鍙傛暟锛屽垯杩斿洖褰撳墠鐨刉iFi鎸傝捣鐘舵€?鈥㈢姸鎬侊細 -0 WiFi鏄竻閱掔殑銆?-1 WiFi鎸傝捣姝e湪绛夊緟銆?绛夊緟绌洪棽浠诲姟) -2 WiFi鏆傚仠銆?渚?鈥揼et current wifi suspension state print (wifi .suspend銆? 鈥揝uspend MiFi for 10 seconds with suspend/resume caLLbacks cfg={} cfg.duration=1010001000 cfg.resume_cb=function() print(鈥淲iFi resume鈥? end cfg.suspend_cb=function() print(鈥淲iFi suspended鈥? end wifi 銉?suspend(cfg) 鈥揝uspend MiFi for 10 seconds with suspend/resume caLLbacks and discard WiFi modi cfg={} cfg.duration=1010001000 cfg.resume_cb=function() print(鈥淲iFi resume鈥? end cfg.suspend_cb=function() print(鈥淲iFfi suspended鈥? end cfg.preserve_mode=false wifi.suspend(cfg) 涔熷彲浠ョ湅鐪?鈥?wifi.resume() 鈥ode.sleep() 鈥ode.dsleep() wifi.sta 妯″潡 wifi.sta.autoconnect () 鑷姩浠ョ珯妯″紡杩炴帴鍒癆P銆?鍙ユ硶 wifi . sta.autoconnect(auto) 鍙傛暟 auto銆傜鐢ㄨ嚜鍔ㄨ繛鎺ワ紝1浣胯兘鑷姩杩炴帴 杩斿洖 nil 渚?wifi 銉?sta.autoconnect(l) 涔熷彲浠ョ湅鐪?wifi.sta.config() wifi.sta.connect() 鈥ifi.sta. disconnect() wifi.sta.changeap () 浠庤繑鍥炵殑鍒楄〃涓€夋嫨鎺ュ叆鐐箇ifi.sta.getapinfo() 鍙ユ硶 wifi 銉?sta.changeap(ap_index) 鍙傛暟 ap_index璁块棶鐐圭殑绱㈠紩锛屼綘鎯虫敼鍙樸€?鑼冨洿锛?-5)-瀵瑰簲浜巜ifi. sta.getapinfo()鍜屾墍 浣跨敤鐨勭储寮?wifi. sta.getapindex() 杩斿洖 銉籺rue鎴愬姛 銉籪alse澶辫触 wifi 銉?sta.changeap(4) 涔熷彲浠ョ湅鐪?鈥ifi.sta.getapinfo() 鈥ifi.sta.getapindex() wifi.sta.clearconfig () 娓呴櫎褰撳墠淇濆瓨鐨刉iFi绔欑偣閰嶇疆锛屼粠闂瓨涓竻闄ゃ€傚綋node.restore()涓嶉渶瑕佹弧杞芥椂鍙兘瀵规煇 浜涘嚭鍘傞噸缃満鏅湁鐢紝鎴栬€呬负浣跨敤鏈€缁堢敤鎴疯缃仛鍑嗗锛屼互渚縎oftAP鑳藉閿佸畾鍒板崟涓‖浠舵棤 绾跨數淇¢亾涓娿€?鍙ユ硶 wifi.sta.clearconfig() 鍙傛暟 娌℃湁 杩斿洖 鈥rue 鎴愬姛 鈥alse澶辫触 涔熷彲浠ョ湅鐪?鈥ifi.sta 銉?config() 鈥ode.restore() wifi.sta.config () 璁剧疆WiFi绔欑偣閰嶇疆銆?銆傛敞鎰?涓嶅缓璁湪鍒濆鍖栧惎鍔ㄦ湡闂撮殢鏃惰繛鎺iFi銆俉iFi杩炴帴鐘舵€佸簲閫氳繃浣跨敤WiFi浜嬩欢鍥炶皟鎴栭€氳繃杞?璇㈠畾鏃跺櫒涓婄殑鐘舵€佹潵楠岃瘉銆?鍙ユ硶 wifi.sta.config(station_config) 鍙傛暟 鈥tation_config鍖呭惈鍙扮珯閰嶇疆鏁版嵁鐨勮〃鏍?銆俿sid灏忎簬32瀛楄妭鐨勫瓧绗︿覆銆?掳 pwd瀛楃涓叉槸0-64o绌哄瓧绗︿覆琛ㄧず涓€涓紑鏀剧殑WiFi鎺ュ叆鐐广€傛敞鎰忥細WPA鑷冲皯闇€瑕?涓?瀛楃锛屼絾ESP8266涔熷彲浠ヨ繛鎺ュ埌WEP鎺ュ叆鐐?鍙互鎻愪緵40浣峎EP瀵嗛挜浣滀负鍏跺搴旂殑5 涓瓧绗︾殑ASCII瀛楃涓?銆?o auto 榛樿涓簍rue 鈻爐rue鍚敤鑷姩杩炴帴骞惰繛鎺ュ埌鎺ュ叆鐐癸紝鍥犳auto=true鏃犻渶閫?璇?wifi.sta.connect锛堬級 -false绂佺敤鑷姩杩炴帴骞朵繚鎸佷笌鎺ュ叆鐐规柇寮€杩炴帴 0 bssid鍖呭惈鎺ュ叆鐐筂AC鍦板潃鐨勫瓧绗︿覆锛堝彲閫夛級 -濡傛灉鎮ㄦ湁澶氫釜鍏锋湁鐩稿悓SSID鐨勬帴鍏ョ偣锛屽垯鍙互璁剧疆BSSIDo -濡傛灉鎮ㄤ负鐗瑰畾鐨凷SID璁剧疆浜咮SSID,骞朵笖鎯宠灏嗙珯鐐归厤缃负浠呭湪娌℃湁BSSID瑕佹眰鐨?鎯呭喌涓嬭繛鎺ュ埌鐩稿悓鐨凷SID,鍒欏繀椤婚鍏堥厤缃负鍏堢珯鍒颁笉鍚岀殑SSID,鐒跺悗杩炴帴鍒版墍闇€ 鐨?SSID -浠ヤ笅鏍煎紡鏄湁鏁堢殑锛?-鈥淒E锛?Cl锛?A5锛?51锛?Fl锛?ED鈥?-鈥淎C-1D-1C-B1-0B-22鈥?-鈥淒EADBEEF7AC0鈥?0 save灏嗙數鍙伴厤缃繚瀛樺埌闂瓨銆?-true閰嶇疆灏嗛€氳繃鐢垫簮寰幆淇濈暀銆傦紙榛樿锛夈€?-false鐢垫簮鍛ㄦ湡涓嶄細淇濈暀閰嶇疆銆?0浜嬩欢鍥炶皟鍙湁鍦╓IFI_SDK_EVENT_MONITOR_ENABLE鏈敞閲婄殑鎯呭喌涓嬫墠鍙?鐢?user_config.h -璇锋敞钖戯細涓轰簡淇濊瘉鎵€鏈夌珯鐨勬椿鍔ㄥ湪鍚姩鏃惰繘琛屽鐞嗭紝鎵€鏈夌浉鍏崇殑鍥炶皟蹇呴』灏芥棭鍦ㄦ敞 鍐?init.lua 浣跨敤涓ょ wifi. sta.config锛堬級 鎴?wifi.eventmon. register锛堬級銆?鈻燾onnected_cb :鐢靛彴杩炴帴鍒版帴鍏ョ偣鏃舵墽琛屽洖鍙€傦紙鍙€夌殑锛?-琛ㄤ腑杩旈潰鐨勯」鐩細 -ssid :鎺ュ叆鐐圭殑SSIDo 锛堟牸寮忥細瀛楃涓诧級 -bssid :鎺ュ叆鐐圭殑BSSIDo 锛堟牸寮忥細瀛楃涓诧級 鈻燾hannel :鎺ュ叆鐐规墍鍦ㄧ殑棰戦亾銆傦紙鏍煎紡锛氭暟瀛楋級 鈻燿isconnected_cb :褰撶珯鐐逛笌鎺ュ叆鐐规柇寮€杩炴帴鏃舵墽琛屽洖鍙€傦紙鍙€夌殑锛?-琛ㄤ腑杩斿洖鐨勮皶鐩細 -ssid :鎺ュ叆鐐圭殑SSIDo 锛堟牸寮忥細瀛楃涓诧級 -bssid :鎺ュ叆鐐圭殑BSSIDo 锛堟牸寮忥細瀛楃涓诧級 鈻爎eason :璇峰弬闃呬笅闈㈢殑wifi.eventmon.reason銆傦紙鏍煎紡锛氭暟瀛楋級 鈻燼uthmode_change_cb :褰撴帴鍏ョ偣鏇存敼鎺堟潈妯″紡鏃舵墽琛屽洖鍙€傦紙鍙€夌殑锛?:鏃х殑WiFi鎺堟潈妯″紡銆傦紙鏍煎紡锛氭暟瀛楋級 :鏂扮殑wifi鎺堟潈妯″紡銆傦紙鏍煎紡锛氭暟瀛楋級 -got_ip_cb :褰撶數鍙颁粠鎺ュ叆鐐规敹鍒癐P鍦板潃鏃舵墽琛屽洖鍙€傦紙鍙€夌殑锛?-琛ㄤ腑褰屽洖鐨勯」鐩細 -ip :鍒嗛厤缁欒鐢靛彴鐨処P鍦板潃銆傦紙鏍煎紡锛氬瓧绗︿覆锛?鈻爊etmask :瀛愮綉鎺╃爜銆傦紙鏍煎紡锛氬瓧绗︿覆锛?-gateway :鐢靛彴杩炴帴鐨勬帴鍏ョ偣鐨処P鍦板潃銆傦紙鏍煎紡锛氬瓧绗︿覆锛?鈻燿hcp_timeout_cb :绔欑偣DHCP璇锋眰宸辫秴鏃躲€傦紙鍙€夌殑锛?-绌虹櫧琛ㄨ杩斿洖銆?杩斿洖 鈥?true鎴愬姛 銉籪alse澶辫触 鈥揷onnect to Access Point (DO NOT save config to fLash) station_cfg=(} station_cfg.ssid=HNODE-AABBCCn station_cfg.pwd=鈥減assword鈥?wifi 銉?sta.config(station_cfg) 鈥揷onnect to Access Point (DO save config to fLash) station_cfg=() station_cfg.ssid=鈥淣ODE-AABBCC鈥?station_cfg.pwd=鈥減assword鈥?station_cfg.save=true wifi.sta.config(station_cfg) 鈥揷onnect to Access Point with specific MAC address station_cfg=(} station_cfg.ssid=鈥淣ODE-AABBCCn station_cfg.pwd=鈥減assword鈥?Station_cfg.bssid=鈥淎A锛欱B:CC:DD:EE:FF鈥?wifi 銉?sta.config(station_cfg) 鈥揷onfigure station but donft connect to Access point station_cfg=() station_cfg.ssid=鈥淣ODE-AABBCC鈥?station_cfg.pwd=鈥減assword鈥?station_cfg.auto=false wifi.sta.config(station_cfg) 涔熷彲浠ョ湅鐪?wifi.sta.clearconfig() wifi.sta. connect() wifi.sta 銉?disconnect() wifi.sta.apinfo() wifi.sta.connect () 杩炴帴鍒扮珯妯″紡涓嬮厤缃殑AP銆傚鏋滆嚜鍔ㄨ繛鎺ヨ绂佺敤锛屼綘鍙渶瑕佽皟鐢ㄥ畠wifi.sta.config锛堬級銆?鍙ユ硶 wifi.sta鈥onnect([connected_cb]) 鍙傛暟 鈥?connected_cb :鐢靛彴杩炴帴鍒版帴鍏ョ偣鏃舵墽琛屽洖鍙€傦紙鍙€夌殑锛?O琛ㄤ腑杩旂櫨鐨勯」鐩細 -SSID :鎺ュ叆鐐圭殑SSIDo 锛堟牸寮忥細瀛楃涓诧級 -BSSID :鎺ュ叆鐐圭殑BSSIDo 锛堟牸寮忥細瀛楃涓诧級 鈻?channel :鎺ュ叆鐐规墍鍦ㄧ殑棰戦亾銆傦紙鏍煎紡锛氭暟瀛楋級 杩斿洖 nil 涔熷彲浠ョ湅鐪?鈥ifi.sta.disconnect() 鈥ifi.sta 銉?config() wifi.sta.disconnect () 鍦ㄥ伐浣滅珯妯″紡涓嬩笌AP鏂紑杩炴帴銆?銆傛敞鎰?璇锋敞鎰忥紝浠庢帴鍏ョ偣鏂紑涓嶄細闄嶄綆鍔熻€椼€傚鏋滆妭鐢垫槸鎮ㄧ殑鐩爣锛岃鍙傞槄Wifi.NULLMODE鍔?鑳借鏄庝互Pwifi.setmode() |浜嗚В鏇村璇︽儏銆?鍙ユ硶 wifi 銉?sta.disconnect([disconnected_cb]) 鍙傛暟 -disconnected_cb :褰撶珯鐐逛笌鎺ュ叆鐐规柇寮€杩炴帴鏃舵墽琛屽洖鍙€?鍙€夌殑) 鈻¤〃涓繑鍥炵殑璋曠洰锛?-SSID :鎺ュ叆鐐圭殑SSIDo (鏍煎紡锛氬瓧绗︿覆) -BSSID :鎺ュ叆鐐圭殑BSSIDo (鏍煎紡锛氬瓧绗︿覆) 鈻?reason :璇峰弬闃呬笅闈㈢殑wifi.eventmon.reason鈻?鏍煎紡锛氭暟瀛? 杩斿洖 nil 涔熷彲浠ョ湅鐪?鈥ifi.sta 銉?config() 鈥ifi.sta 銉?connect() wifi.sta.getap () 灏咥P鍒楄〃浣滀负Lua琛ㄦ壂鎻忓洖璋冨嚱鏁般€?鍙ユ硶 wifi.sta.getap([[cfg], formatj] callback(table)) 鍙傛暟 鈥fg鍖呭惈鎵弿閰嶇疆鐨勮〃 銆俿sid SSID 闆讹紝涓嶈杩囨护SSID O bssid BSSID 闆讹紝涓嶈杩囨护BSSID O channel閫氶亾0,鎵弿鎵€鏈夐€氶亾锛屽惁鍒欐壂鎻忚缃€氶亾(榛樿涓?) 銆俿how_hidden show_hidden == 1,鑾峰彇鍏锋湁闅愯棌SSID鐨勮矾鐢卞櫒鐨勪俊鎭?榛樿涓?) 鈥ormat閫夋嫨杈撳嚭琛ㄦ牸寮忥紝榛樿涓? O 0锛氭棫鏍煎紡(SSID锛?Authmode, RSSL BSSID, Channel),浠讳綍閲嶅鐨凷SID灏嗚涓㈠純 o 1锛氭柊鏍煎紡(BSSID锛?SSID, RSSI,鎺堟潈妯″紡锛岄閬? -callback(table)鎵弿鍏冩垚鏃舵帴鍙嶢P琛ㄦ棾鍥炶皟鍑芥暟銆傝繖涓嚱鏁版帴鍙庝竴涓〃锛屽か閿槸 BSSID,鍊兼槸鍏朵粬鏍煎紡鐨勪俊鎭細SSID, RSSID, auth妯″紡锛岄€氶亾銆?杩斿洖 nil 鈥損rint AP List in old format (format not defined) function listap(t) for k,v in pairs(t) do print(k.: .v) end end wifi 銉?sta.getap(listap) 鈥揚rint AP List that is easier to read function listap(t) 鈥?(SSID : Authmodej RSSI, BSSID^ ChanneL) print(鈥淺n鈥濃€tring.format(鈥?32s,/,SSID鈥?鈥?鈥淺tBSSID\t\t\t\t RSSI\t\tAUTHMODE ssid,v in pairs(t) do local authmodej pssi, bssid, channel = string.match(v, 鈥?[Aj]+)j([A^]+), print(string.format(鈥?32s鈥?ssid)鈥︹€淺t鈥濃€ssid鈥︹€淺t n鈥ssi鈥utl end end wifi.sta.getap(listap) 鈥損rint AP List in new format function listap(t) for k,v in pairs(t) do print(k.: .v) end end wifi銉籹ta.getap(lj listap) 鈥揚rint AP List that is easier to read function listap(t) 鈥?(SSID : Authmodej RSSI, BSSID, ChanneL) print(鈥漒n\t\t\tSSID\t\t\t\t\tBSSID\t\t\t RSSI\t\tAUTHMODE\t\tCHANNEL") for bssidv in pairs(t) do local ssidj rssi, authmode, channel = string.match(v, 鈥?[A4]+)j([Aj]+)j( print(string.format(,%32s,ssid). .鈥淴t鈥? .bssid. .H\t H鈥?rssi鈥?鈥?autl end end wifi.sta.getap(lj listap) 鈥揷heck for specific AP function listap(t) print(鈥漒n\t\t\tSSID\t\t\t\t\tBSSID\t\t\t RSSI\t\tAUTHMODE\t\tCHANNEL") for bssidv in pairs(t) do local ssidj rssi, authmode, channel = string.match(Vj "([A4]+)j([Aj]+)j( print(string.format(,%32s,鈥?ssid)鈥?鈥淺t鈥濃€ssid鈥?"\t "鈥?rssi鈥?.autl end end scan_cfg = {} scan_cfg.ssid = 鈥渕yssid鈥?scan_cfg.bssid = 鈥淎A:AA:AA:AA:AA:AA鈥?scan_cfg.channel = 0 scan_cfg.show_hidden = 1 wifi銉籹ta.getap(scan_cfgj 1, listap) 鈥揼et RSSI for currentLy configured AP function listap(t) for bssidv in pairs(t) do local ssidj rssi, authmode, channel = string.match(v, "([鈥橾 + ),([']+)禄( print("CURRENT RSSI IS: .rssi) end end ssid, tmp, bssid_setj bssid=wifi.sta.getconfig() scan_cfg = (} scan_cfg.ssid = ssid if bssid_set == 1 then scan_cfg.bssid = bssid else scan_cfg.bssid = nil end scan_c+g.channel = witi.getcnanneio scan_cfg.show_hidden = 0 ssid, tmp, bssid_setj bssid=nilj nil, nil, nil wifi.sta.getap(scan_cfgJ 1, listap) 涔熷彲浠ョ湅鐪?wifi.sta.getip() wifi.sta.getapindex () 鑾峰彇瀛樺偍鍦ˋP缂撳瓨涓殑褰撳墠鎺ュ叆鐐圭殑绱㈠紩銆?鍙ユ硶 wifi 銉?sta.getapindex() 鍙傛暟 娌℃湁 杩斿洖 current_index褰撳墠閫夊畾鐨勬帴鍏ョ偣鐨勭储寮曘€?鑼冨洿锛?-5) 渚?print("the index of the currently selected AP is: "鈥ifi.sta.getapindex()) 涔熷彲浠ョ湅鐪?鈥ifi.sta.getapindex() 鈥ifi.sta.apinfo() 鈥ifi.sta 銉?apchange() wifi.sta.getapinfo () 鑾峰彇ESP8266绔欑偣缂撳瓨鐨凙P淇℃伅銆?銆傛敞鎰?閰嶇疆绂佺敤淇濆瓨鐨勪换浣曟帴鍏ョ偣灏唚ifi. sta. config({save=false})濉厖姝ゅ垪琛?浼间箮瑕嗙洊 瀛樺偍鍦ㄩ棯瀛樹腑鐨凙P)鐩村埌閲嶆柊鍚姩銆?鍙ユ硶 wifi.sta.getapinfo() nil 杩斿洖 鈥?ap_info 銆俼ty杩斿洖鐨凙P鏁伴噺 銆?-5 AP鐨勬寚鏁般€?璇ョ储寮曞搴斾簬wifi.sta.changeap()鍜屾墍浣跨敤鐨勭储 寮揑 wifi.sta.getapindex()) 銆俿sid璁块棶鐐圭殑ssid o pwd nil濡傛灉娌℃湁閰嶇疆瀵嗙爜锛孉ccess Point鐨勫瘑鐮?o bssid鎺ュ叆鐐圭殑MAC鍦板潃 銆俷il濡傛灉鍦ㄧ珯閰嶇疆鏈熼棿娌℃湁閰嶇疆MAC鍦板潃锛屽垯浼氳繑鍥炪€?鈥損rint stored access point info do for kjv in pairs(wifi.sta.getapinfo()) do if (type(v)鈥渢ableH) then print(n :.type(v)) for k,v in pairs(v) do print: L.v) end else printC, :鈥濃€) end end end 鈥損rint stored access point info(formatted) do local x=wifi.sta.getapinfo() local y=wifi.sta.getapindex() print(鈥漒n Number of APs stored in flash:鈥渏 x.qty) ppint(stping銉籪opmat(鈥?%-6s %-32s %-64s 鈥渋ndex:鈥? 鈥漇SID:鈥濓紝 鈥淧assword: for i=l, (x.qty), 1 do ppintjtping.fopmat(鈥?锛卻%-6d %-32s %-64s %-18s鈥滐紝(i==y and ,>,f or H 鈥?锛宨, x[ end end 涔熷彲浠ョ湅鐪?wifi.sta.getapindex() wifi.sta.setaplimit() wifi.sta.changeap() wifi.sta.config() wifi.sta.getbroadcast () 鑾峰彇绔欐ā寮忎笅鐨勫箍鎾湴鍧€銆?wifi.sta.getbroadcast() 鍙傛暟 nil 杩斿洖 骞挎挱鍦板潃浣滀负瀛楃涓诧紝渚嬪鈥?92.168.0.255鈥? nil濡傛灉IP鍦板潃=鈥?.0.0.0鈥濆垯杩斿洖銆?涔熷彲浠ョ湅鐪?wifi.sta.getip() wifi.sta.getconfig () 鑾峰彇WiFi绔欑偣閰嶇疆銆?鍙ユ硶 wifi.sta.getconfig() 鍙傛暟 鈥eturn_table 銆倀rue杩斿洖琛ㄤ腑鐨勬暟鎹?O false浠ユ棫鏍煎紡杩斿洖鏁版嵁(榛樿) 杩斿洖 濡傛灉 return_table 鏄?true : 鈥onfig_table 銆俿sid璁块棶鐐圭殑ssido 銆俻wd瀵嗙爜鍒癆ccess Point, nil濡傛灉娌℃湁閰嶇疆瀵嗙爜 掳 bssid_set true濡傛灉绔欑偣琚厤缃负涓撻棬杩炴帴鍒板叿鏈夊尮閰嶇殑AP,灏嗚繑鍥瀊ssid銆?O bssid濡傛灉宸茶繛鎺ュ埌宸查厤缃殑AP,鍒欐瀛楁灏嗗寘鍚獳P鐨凪AC鍦板潃銆傚惁鍒欏皢杩斿洖鈥滀粈锛?ff锛?ff锛?ff锛?ff锛?ffMo 濡傛灉 return_table 鏄?false : 鈥sid,瀵嗙爜锛宐ssid_set, bssid,濡傛灉 bssid_set 绛変簬 0 鍒?bssid 鏃犲叧绱ц 渚?鈥揋et current Station configuration (NEW FORMAT) do local sta_config=wifi.sta.getconfig(true) print(string.formatC鈥橷tCurrent station config\n\tssid:鈥?s鈥漒tpassword:鈥?s鈥漒n- end 鈥揋et current Station configuration (OLD FORMAT) ssidj passwordj bssid_set, bssid=wifi.sta.getconfig() print(鈥淺nCurrent Station configuration:\nSSID : 鈥溾€sid 鈥︹€漒nPassword : 鈥溾€assword 鈥︹€漒nBSSID_set : 鈥溾€ssid_set 鈥︹€淴nBSSID? 鈥溾€ssid鈥︹€淴n鈥? ssid, passwordbssid_setj bssid=nil, nil, nil, nil 涔熷彲浠ョ湅鐪?鈥ifi.sta.getdefaultconfig() 鈥ifi.sta 銉?connect() 鈥ifi.sta.disconnect() wifi.sta.getdefaultconfig () 鑾峰彇瀛樺偍鍦ㄩ棯瀛樹腑鐨勯粯璁iFi绔欑偣閰嶇疆銆?鍙ユ硶 wifi.sta.getdefauItconfig(return_table) 鍙傛暟 鈥eturn_table 銆倀rue杩斿洖琛ㄤ腑鐨勬暟鎹?O false浠ユ棫鏍煎紡杩斿洖鏁版嵁(榛樿) 杩斿洖 濡傛灉 return_table 鏄?true : 鈥onfig_table 銆俿sid璁块棶鐐圭殑SSido 銆俻wd瀵嗙爜鍒癆ccess Point, nil濡傛灉娌℃湁閰嶇疆瀵嗙爜 掳 bssid_set true濡傛灉绔欑偣琚厤缃负涓撻棬杩炴帴鍒板叿鏈夊尮閰嶇殑AP,灏嗚繑鍥瀊ssid銆?o bssid濡傛灉宸茶繛鎺ュ埌宸遍厤缃殑AP,鍒欐瀛楁灏嗗寘鍚獳P鐨凪AC鍦板潃銆傚惁鍒欏皢杩斿洖鈥滀粈锛?ff锛?ff锛?ff锛?ff锛?ffUo 濡傛灉 return_table 鏄?false : 鈥sid,瀵嗙爜锛宐ssid_set, bssid,濡傛灉 bssid_set 绛変簬 0 鍒?bssid 鏃犲叧绱ц 鈥揋et default Station configuration (NEW FORMAT) do local def_sta_config=wifi.sta.getdefaultconfig(true) print(string.format(鈥漒tDefault station config\n\tssid:鈥?s鈥漒tpassword:鈥?s"\n鈥?end 鈥揋et default Station configuration (OLD FORMAT) ssidj passwordj bssid_set, bssid=wifi.sta.getdefaultconfig() print("\nCurrent Station configuration:\nSSID : 鈥溾€sid 鈥︹€漒nPassword : 鈥溾€assword 鈥︹€漒nBSSID_set : 鈥溾€ssid_set 鈥︹€淴nBSSID? 鈥溾€ssid鈥︹€淴n鈥? ssid, passwordbssid_setj bssid=nil, nil, nil, nil 涔熷彲浠ョ湅鐪?wifi.sta.getconfig() wifi.sta . connect() wifi.sta.disconnect() wifi.sta.gethostname () 鑾峰彇褰撳墠鐨勭珯鐐逛富鏈哄悕銆?鍙ユ硶 wifi.sta.gethostname() 鍙傛暟 娌℃湁 杩斿洖 褰撳墠閰嶇疆鐨勪富鏈哄悕 渚?print(鈥淐urrent hostname is: 鈥ifi.sta.gethostname銆?wifi.sta.getip () 鑾峰彇绔欐ā寮忎笅鐨刬p鍦板潃锛岀綉缁滄帺鐮佸拰缃戝叧鍦板潃銆?鍙ユ硶 wifi.sta.getip() 鍙傛暟 娌℃湁 杩斿洖 IP鍦板潃锛岀綉缁滄帺鐮侊紝缃戝ぉ鍦板潃浣滀负瀛愮鍗橈紝渚嬪"192.168.0.111鈥濄€俷il濡傛灉IP =,0.0.0.0,锛滃垯杩?鍥炪€?渚?鈥損rint current IP address, netmaskj gateway print(wifi.sta.getip()) 鈥?92.168.0.111 255.255.255.0 192.168.0.1 ip = wifi.sta.getip() print(ip) 鈥?92.168.0.111 ipj nm = wifi.sta.getip() print(nm) 鈥?55.255.255.0 涔熷彲浠ョ湅鐪?wifi.sta.getmac() wifi.sta.getmac () 鑾峰彇绔欐ā寮忎笅鐨凪AC鍦板潃銆?鍙ユ硶 wifi.sta.getmac() 鍙傛暟 娌℃湁 杩斿洖 浣滀负瀛楃涓茬殑MAC鍦板潃渚嬪鈥?8锛?fe锛?34锛?a2锛?d7锛?34鈥?涔熷彲浠ョ湅鐪?wifi.sta.getip() wifi.sta.getrssi () 鑾峰彇ESP8266鎵€杩炴帴鐨勬帴鍏ョ偣鐨凴SSI (鎺ユ敹淇″彿寮哄害鎸囩ず绗?銆?鍙ユ硶 wifi.sta.getrssi() 鍙傛暟 娌℃湁 杩斿洖 -濡傛灉鐢靛彴杩炴帴鍒版帴鍏ョ偣锛宺ssi鍒欒繑鍥炪€?-濡傛灉鐢靛彴绂捐繛鎺ュ埌鎺ヤ汉鐐癸紝nil鍒欒繑鍥炪€?RSSI=wifi.sta.getrssi() print(鈥淩SSI is鈥? RSSI) wifi.sta.setaplimit () 璁剧疆瀛樺偍鍦ㄩ棯瀛樹腑鐨勬渶澶ф帴鍏ョ偣鏁伴噺銆?姝ゅ€煎啓鍏ラ棯瀛?鉂舵敞鎰?閲嶆柊鍚姩鍚庢柊璁剧疆鎵嶄細鐢熸晥銆?銆傛敞鎰?濡傛灉瀛樺偍5涓帴鍏ョ偣骞朵笖AP闄愬埗璁剧疆涓?,鍒欑储寮?澶勭殑AP灏嗕繚鎸佸埌node.restore()琚彨 鎴朅P闄愬埗琚缃负5骞朵笖AP琚鐩栥€?鍙ユ硶 wifi.sta.setaplimit(qty) 鍙傛暟 qty瀛樺偍鍦ㄩ棯瀛樹腑鐨勬帴鍏ョ偣鏁伴噺銆傝寖鍥达細1-5 (榛樿锛?) 杩斿洖 鈥rue 鎴愬姛 鈥alse澶辫触 渚?wifi.sta.setaplimit(5) 涔熷彲浠ョ湅鐪?鈥ifi.sta.getapinfo() wifi.sta.sethostname () 璁剧疆绔欑偣涓绘満鍚嶃€?鍙ユ硶 wifi.sta.sethostname(hostname) hostname鍙兘鍖呭惈瀛楁瘝锛屾暟瀛楀拰杩炲瓧绗?寮€涓斿皬寰楄秴杩?2涓瓙绗︼紝鐧惧瓧姣嶅拰鏈瓙绗?鏄瓧姣嶆暟瀛?杩斿洖 nil 渚?if (wifi.sta.sethostname(鈥淣odeMCU鈥? == true) then print(鈥渉ostname was successfully changed鈥? else print(鈥渉ostname was not changed鈥? end wifi.sta.setip () 鍦ㄥ伐浣滅珯妯″紡涓嬭缃甶p鍦板潃锛岀綉缁滄帺鐮侊紝缃戝叧鍦板潃銆?鍙ユ硶 wifi.sta.setip(cfg) 鍙傛暟 cfg琛ㄥ寘鍚獻P鍦板潃锛岀綉缁滄帺鐮佸拰缃戝叧 { ip = 鈥?92.168.0.111鈥? netmask = 鈥?55.255.255.0鈥? gateway = 鈥?92.168.0.1鈥?} 杩斿洖 濡傛灉鎴愬姛鍒欎负鐪燂紝鍚﹀垯涓哄亣 涔熷彲浠ョ湅鐪?wifi.sta.setmac() wifi.sta.setmac () 鍦ㄥ伐浣滅珯妯″紡涓嬭缃甅AC鍦板潃銆?鍙ユ硶 wifi.sta.setmac(mac) 瀛楃涓蹭腑鐨凪AC鍦板潃锛屼緥濡傗€淒E锛?AD锛?BE锛?EF锛?7A锛?C0u 娲惧洖 濡傛灉鎴愬姛鍒欎负鍏凤紝鑸庡垯涓哄亣 ppint(wifi.sta銉籹etmac(鈥滵E:AD:BE:EF:7A:C0鈥?) 涔熷彲浠ョ湅鐪?wifi.sta.setip() wifi.sta.sleeptype () 鍦ㄨ繛鎺ュ埌鎺ュ叆鐐规椂閰嶇疆瑕佷娇鐢ㄧ殑WiFi璋冨埗瑙h皟鍣ㄧ殑鐫$湢绫诲瀷銆?銆傛敞鎰?涓嶉€傜敤浜?wifi.SOFTAP , wifi.STATIONAP 鎴?wifi . NULLMODE 鍙ユ硶 wifi.sta.sleeptype(type_wanted) 鍙傛暟 type_wanted 浠ヤ笅涔嬩竴锛?銉粀ifi.NONE_SLEEP濮嬬粓淇濇寔璋冨埗瑙h皟鍣?銉粀ifi.LIGHT_SLEEP鍦ㄦ煇浜涙儏鍐典笅鍏佽CPU鏂數 銉粀ifi.MODEM_SLEEP灏藉彲鑳藉湴鍏抽棴璋冨埗瑙h皟鍣?杩斿洖 瀹為檯鐨勭潯鐪犳ā寮忚瀹氾紝涓轰竴浣?wifi.NONE_SLEEP , wif i . LIGHT_SLEEP 鎴?wifi.MODEM_SLEEP 銆?wifi.sta.status () 鑾峰彇宸ヤ綔绔欐ā寮忎笅鐨勫綋鍓嶇姸鎬併€?鍙ユ硶 wifi.sta.status() 鍙傛暟 nil 杩斿洖 褰撳墠鐘舵€佸彲浠ユ槸涓嬪垪涔嬩竴: wifi.STA IDLE 鈥ifi.STA_CONNECTING 鈥ifi.STA_WRONGPWD 鈥ifi.STA_APNOTFOUND 鈥ifi.STA_FAIL 鈥ifi.STA_GOTIP wifi.ap 妯″潡 wifi.ap.config 锛堬級 鍦ˋP妯″紡涓嬭缃甋SID鍜屽瘑鐮併€傝鍔″繀鑷冲皯杈撳叆8涓瓧绗︾殑瀵嗙爜锛佸鏋滀綘涓嶈繖鏍峰仛锛屽畠灏嗛粯璁?涓烘病鏈夊瘑鐮侊紝涓嶈缃甋SID!瀹冧粛灏嗕綔涓烘帴鍏ョ偣宸ヤ綔锛屼絾浣跨敤榛樿鐨凷SID,濡?NODE_9997C3o 鍙ユ硶 wifi.ap.config锛坈fg锛?鍙傛暟 , cfg琛ㄤ繚瀛橀厤缃?0 ssid SSID瀛楃 1-32 銆俻wd瀵嗙爜瀛楃8-64 銆俛uth璁よ瘉鏂规硶鐨勪竴涓獁ifi.OPEN 锛堥粯璁わ級锛?, wifi.WPA_PSK wifi.WPA2_PSK wifi.WPA_WPA2_PSK 銆俢hannel棰戦亾鍙风爜1-14榛樿=6 0 hidden false =涓嶉殣钘忥紝true=闅愯棌锛宒efauIt = false 銆俶ax鏈€澶ц繛鎺ユ暟1-4榛樿=4 0 beacon淇℃爣闂撮殧鏃堕棿鑼冨洿鍦?00-60000,榛樿鍊?100 o save淇濆瓨閰嶇疆鍒伴棯瀛樸€?-true閰嶇疆灏嗛€氳繃鐢垫簮寰幆淇濈暀銆傦紙榛樿锛?-false鐢垫簮鍛ㄦ湡涓嶄細淇濈暀閰嶇疆銆?O浜嬩欢鍥炶皟鍙湁鍦╓IFI_SDK_EVENT_MONITOR_ENABLE鏈敞閲婄殑鎯呭喌涓嬫墠鍙?鐢?user_config.h -璇锋敞鐩栵細涓轰簡纭繚鎵€鏈塖oftAP浜嬩欢鍦ㄥ惎鍔ㄦ椂澶勭悊锛屾墍鏈夌浉鍏崇殑鍥炶皟閮藉繀椤诲敖鏃╂敞 鍐?init.lua 鑷?J wifi.ap.config锛堬級 鎴栬€?wifi.eventmon.register锛堬級銆?鈻爏taconnected_cb :鏂板鎴风杩炴帴鍒版帴鍏ョ偣鏃舵墽琛岀殑鍥炴嫧銆傦紙鍙€夌殑锛?-琛ㄤ腑杩斿洖鐨勮皶鐩細 -MAC :杩炴帴鐨勫鎴风鐨凪AC鍦板潃銆?-AID : SDK娌℃湁鎻愪緵鏈夊叧姝よ繑鍥炲€肩殑璇︾粏淇℃伅銆?鈻爏tadisconnected_cb :褰撳鎴风浠庢帴鍏ョ偣鏂紑杩炴帴鏃舵墽琛屽洖璋冦€傦紙鍙€夌殑锛?-琛ㄤ腑杩斿洖鐨勯」鐡?-mac :鏂紑杩炴帴鐨勫鎴风鐨凪AC鍦板潃銆?-aid : SDK娌℃湁鎻愪緵鏈夊叧姝よ繑鍥炲€肩殑璇︾粏淇℃伅銆?-probereq_cb :鏀跺埌鎺㈡祴璇锋眰鏃舵墽琛屽洖璋冦€傦紙鍙€夌殑锛?-琛ㄤ腑杩斿洖鐨勯」鐩細 -MAC :鎺㈡祴鎺ュ叆鐐圭殑瀹㈡埛绔殑MAC鍦板潃銆?-RSSI :鎺ユ敹鍒板鎴风鐨勪俊鍙峰己搴︽寚鏍囥€?杩斿洖 鈥rue 鎴愬姛 鈥alse澶辫触 渚嬶細 cfg={} cfg. ssid = nmyssid, cfg.pwd=鈥渕ypassword鈥?wifi,ap.config(cfg) wifi.ap.deauth () 閫氳繃鍙戦€佷竴涓浉搴旂殑IEEE802.ll绠$悊鏁版嵁鍖?绗竴涓?骞朵粠瀹㈡埛绔殑鏁版嵁缁撴瀯(涔嬪悗)涓垹 闄ゅ鎴风锛屼粠ESP鎺ュ叆鐐逛腑鍒犻櫎(寮哄埗鍒犻櫎)涓€涓鎴风銆?鎵€浣跨敤鐨処EEE802.il鍘熷洜鐮佷负鈥滃厛鍓嶉獙璇佷笉鍐嶆湁鏁堚€?AUTH_EXPIRE)涓?銆?鍙ユ硶 wifi.ap.deauth([MAC]) 鍙傛暟 -MAC瑕佽鎺掗櫎鐨勭珯鐨勫湴鍧€銆?銆傛敞鎰忥細濡傛灉姝ゅ瓧娈电暀绌猴紝鎵€鏈夊綋鍓嶈繛鎺ョ殑鐢靛彴灏嗚娓呴櫎銆?杩斿洖 闄ら潪ESP鍦⊿TATION opmode涓皟鐢紝鍚﹀垯杩斿洖true 渚?allowed_mac_list={鈥?8:fe:34:00:00:00鈥? 鈥?8:fe:34:00:00:01鈥潁 wifi.eventmon.register(wifi.eventmon.AP_STACONNECTEDj function(T) print(n\n\tAP - STATION CONNECTED鈥濃€\n\tMAC: H鈥.MAC鈥\n\tAID: H鈥.AID) if(allowed_mac_list^=nil) then for v in pairs(allowed_mac_list) do if(v == T.MAC) then return end end end wifi.ap.deauth(T.MAC) print(鈥漒tStation DeAuthed!鈥? end) 涔熷彲浠ョ湅鐪?wifi 銉?eventmon.register() wifi 銉?eventmon , reason() wifi.ap.getbroadcast () 鑾峰彇AP妯″紡鍗滄棾鍘傛挱鍦板潃銆?鍙ユ硶 wifi.ap.getbroadcast() 鍙傛暟 娌℃湁 杩斿洖 瀛楃涓蹭腑鐨勫箍鎾湴鍧€锛屼緥濡傗€?92.168.0.255鈥? nil濡傛灉IP鍦板潃=鈥?.0.0.0"鍒欒繑鍥炪€?渚?be = wifi.ap.getbroadcast() print(be) 鈥?92.168.0.255 涔熷彲浠ョ湅鐪?wifi.ap.getip() wifi.ap.getclient () 鑾峰彇浠P妯″紡杩炴帴鍒拌澶囩殑瀹㈡埛绔〃銆?鍙ユ硶 wifi.ap.getclient() 鍙傛暟 娌℃湁 杩斿洖 杩炴帴鐨勫鎴风琛?渚?table=() table=wifi,ap.getclient() for mac,ip in pairs(table) do print(mac^ ip) end 鈥搊r shorter for mac,ip in pairs(wifi.ap.getclient()) do print(macip) end

鑾峰彇褰撳墠鏃砈oftAP閰嶇洿銆?鍙ユ硶 wifi.ap.getconfig(return_table) 鍙傛暟 鈥?return_table 掳 true杩斿洖琛ㄤ腑鐨勬暟鎹?o false浠ユ棫鏍煎紡杩斿洖鏁版嵁(榛樿) 杩斿洖 濡傛灉return_table鏄繖鏍? 鈥?config_table 銆俿sid缃戠粶鍚嶅瓧 銆俻wd瀵嗙爜,nil濡傛灉娌℃湁閰嶇疆娌℃湁瀵嗙爜-auth楠岃瘉鏂规硶 (wifi.OPEN , wifi.WPA_PSK , wifi.WPA2_PSK 鎴?wifi.WPA, o channel棰戦亾鍙风爜 銆俬idden false =涓嶉殣钘忥紝true =闅愯棌 銆俶ax瀹㈡埛绔繛鎺ョ殑鏈€澶ф暟鐩?銆俠eacon淇℃爣闂撮殧 濡傛灉return_table鏄亣鐨? 鈥?ssid,瀵嗙爜锛屽鏋渂ssid_set绛変簬銆傚垯bssid鏃犲叧绱ц configuration table (NEW FORMAT) print(鈥淺n Current SoftAP configuration:鈥? for k,v in pairs(wifi.ap.getconfig(true)) do print(" .k.:\v) end end 鈥揋et current SoftAP configuration (OLD FORMAT) do local ssid, password=wifi銉籥p.getconfig() print(鈥淺n Current SoftAP configuration:銆?锛?SSID : 鈥? .ssid. 鈥淺n Password :鈥渏 password) ssid, password=nilj nil end wifi.ap.getdefaultconfig () 鑾峰彇瀛樺偍鍦ㄩ棯瀛樹腑鐨勯粯璁oftAP閰嶇疆銆?鈥?return_table 掳 true杩斿洖琛ㄤ腑鐨勬暟鎹?0 false浠ユ棫鏍煎紡杩斿洖鏁版嵁(榛樿) 杩斿洖 濡傛灉return_table鏄繖鏍凤細 鈥?config_table 銆俿sid缃戠粶鍚嶅瓧 銆俻wd瀵嗙爜,nil濡傛灉娌℃湁閰嶇疆娌℃湁瀵嗙爜-auth楠岃瘉鏂规硶 (wifi.OPEN , wifi.WPA_PSK , wifi.WPA2_PSK 鎴?wifi銉籛PA_WPA2_PSK ) o channel棰戦亾鍙风爜 銆俬idden false =涓嶉殣钘忥紝true =闅愯棌 銆俶ax瀹㈡埛绔繛鎺ョ殑鏈€澶ф暟鐩?銆俠eacon淇℃爣闂撮殧 濡傛灉return_table鏄亣鐨勶細 鈥?ssid,瀵嗙爜锛屽鏋渂ssid_set绛変簬0鍒檅ssid鏃犲叧绱ц 鈥揋et default SoftAP configuration tabLe (NEW FORMAT) do print(鈥漒n Default SoftAP configuration:鈥? for k,v in pairs(wifi.ap.getdefaultconfig(true)) do print(鈥?.k.:\v) end end 鈥揋et defauLt SoftAP configuration (OLD FORMAT) do local ssid, password=wifi銉籥p.getdefaultconfig() print(鈥漒n Default SoftAP configuration:\n SSID : ". .ssid鈥?"\n Password :鈥渏 password) ssid, password=nilJ nil end wifi.ap.getip () 鍦ˋP妯″紡涓嬭幏鍙朓P鍦板潃锛岀綉缁滄帺鐮佸拰缃戝叧銆?鍙ユ硶 wifi.ap.getip() 鍙傛暟 娌℃湁 IP鍦板潃锛岀綉缁滄帺鍋斤紝缃戝か鍦板潃浣滀负瀛楃鐢筹紝渚嬪鈥?92168.0.111鈥? nil濡傛灉IP鍦板潃 =鈥?.0.0.0鈥濆垯杩斿洖銆?鈥損rint current ip, netmaskj gateway print(wifi.ap.getip()) 鈥?92.168.4.1 255.255.255.0 192.168.4.1 ip = wifi.ap.getip() print(ip) 鈥?92.168.4.1 ipj nm = wifi.ap.getip() print(nm) 鈥?55.255.255.0 ipj nm, gw = wifi.ap.getip() print(gw) 鈥?92.168.4.1 涔熷彲浠ョ湅鐪?鈥?wifi.ap.getmac() wifi.ap.getmac () 鍦ˋP妯″紡涓嬭幏鍙朚AC鍦板潃銆?鍙ユ硶 wifi.ap.getmac() 鍙傛暟 娌℃湁 杩斿洖 MAC鍦板潃浣滀负瀛楃涓诧紝渚嬪鈥?A-33-44-FE-55-BB鈥?涔熷彲浠ョ湅鐪?wifi.ap.getip() wifi.ap.setip () 鍦ˋP妯″紡涓嬭缃甀P鍦板潃锛岀綉缁滄帺鐮佸拰缃戝叧鍦板潃銆?鍙ユ硶 wifi.ap.setip(cfg) cfg琛ㄥ寘鍚獻P鍦板潃锛岀綉缁滄帺鐮佸拰缃戝叧 杩斿洖 濡傛灉鎴愬姛鍒欎负true,鍚﹀垯涓篺alse 渚?cfg = { ip=鈥?92.168.1.1"J netmask=鈥?55.255.255.0鈥? gateway=,192.168.1.1鈥?} wifi.ap.setip(cfg) 涔熷彲浠ョ湅鐪?wifi.ap.setmac() wifi.ap.setmac () 鍦ˋP妯″紡涓嬭缃甅AC鍦板潃銆?鍙ユ硶 wifi.ap.setmac(mac) 鍙傛暟 瀛楄妭涓蹭腑鐨凪AC鍦板潃锛屼緥濡傗€淎C- ID- 1C-B1-0B-22鈥?杩斿洖 濡傛灉鎴愬姛鍒欎负鐪燂紝鍚﹀垯涓哄亣 渚?print(wifi.ap.setmac(鈥淎C-lD-lC-Bl-0B-22鈥?) 涔熷彲浠ョ湅鐪?wifi.ap.setip() wifi.ap.dhcp妯″潡 wifi.ap.dhcp.config () 閰嶇疆DHCP鏈嶅姟銆傜洰鍓嶅彧鏀寔璁剧疆dhcp鍦板潃姹犵殑璧峰鍦板潃銆?dhcp_config鍖呭惈DHCP鍦板潃姹犵殑璧峰IP鐨勮〃锛屼緥濡俆92.168.1.100鈥?/p>

dhcp_config ={} dhcp_config.start = H192.168.1.100" wifi 銉?ap.dhcp.config(dhcp_config) wifi.ap.dhcp.start () 鍚姩DHCP鏈嶅姟銆?鍙ユ硶 wifi.ap.dhcp.start() 鍙傛暟 娌℃湁 杩斿洖 甯冨皵鍊艰〃绀烘垚鍔?wifi.ap.dhcp.stop () 鍋滄DHCP鏈嶅姟銆?鍙ユ硶 wifi.ap.dhcp.stop() 鍙傛暟 娌℃湁 杩斿洖 甯冨皵鍊艰〃绀烘垚鍔?wifte ventmon 妯?鍧?wifi.eventmon.register () 娉ㄥ唽/鍙栨秷娉ㄥ唽WiFi浜嬩欢鐩戣鍣ㄧ殑鍥炶皟銆?娉ㄥ唽鍥炶皟鍚庯紝鍙兘浼氶殢鏃惰皟鐢ㄦ鍑芥暟鏉ユ洿鏂板洖璋冨嚱 銆傛敞鎰?涓轰簡纭繚鎵€鏈塛iFi浜嬩欢閮借鎹曡幏锛學ifi浜嬩欢鐩戣鍣ㄥ洖璋冨簲璇ュ敖鍙兘鏃╁湴娉ㄥ唽init.lua銆?鍥炶皟涔嬪墠鍙戠敓鐨勪换浣曚簨浠堕兘灏嗚涓㈠純锛?鍙ユ硶 wifi.eventmon.register (Event[, function (T)]) 鍙傛暟 浜嬩欢锛氫綘鎯宠缃洖鎷ㄧ殑WiFi浜嬩欢銆?-鏈夋晥鐨刉iFi娲诲姩锛?0 wifi.eventmon.SlA_CONNECTED 銆倃ifi.eventmon.SlA_DISCONNECTED 0 wifi.eventmon.SlA_AUTHMODE_CHANGE o wifi.eventmon.SlA_GOT_l P o wifi.eventmon.SlA_DHCP_TIMEOUT o wifi.eventmon.AP_STACONNECTED o wifi.eventmon.AP_SlADISCONNECTED o wifi.eventmon.AP_PROBEREQRECVED 杩斿洖 鍔熻兘锛?nil 鍥炶皟锛?T锛氱敱浜嬩欢杩斿洖鐨勮〃銆?銉粀ifi. eventmon. STA_CONNECTED 绔欒繛鎺ュ埌鎺ュ叆鐐广€?o SSID :鎺ュ叆鐐瑰崡SSID銆?銆俠ssid :鎺ュ叆鐐圭殑BSSIDo 掳 channel :鎺ュ叆鐐规墍鍦ㄧ殑棰戦亾銆?鈥ifi. eventmon. STA_DISCONNECTED :绔欑偣涓庢帴鍏ョ偣鏂紑杩炴帴銆?銆俿sid :鎺ュ叆鐐筗SSIDo 銆俠ssid :鎺ュ叆鐐圭殑BSSIDo O reason :璇峰弬闃呬笅闈㈢殑wifi.eventmon.reason銆?銉粀ifi. eventmon. STA_AUTHMODE_CHANGE :鎺ュ叆鐐瑰凡鏇存敼鎺堟潈妯″紡銆?O old_auth_mode :鏃х殑WiFi鎺堟潈妯″紡銆?O new_auth_mode :鏂扮殑wifi鎺堟潈妯″紡銆?鈥ifi.eventmon.STA_GOT_IP :鐢靛彴鏈変竴涓狪P鍦板潃銆?銆侷P :鍒嗛厤缁欒鐢靛彴鐨処P鍦板潃銆?0 netmask :瀛愮綉鎺╃爜銆?掳 gateway :鐢靛彴杩炴帴鐨勬帴鍏ョ偣鐨処P鍦板潃銆?銉粀ifi.eventmon.STA_DHCP_TIMEOUT :绔欑偣DHCP璇锋眰宸茶秴鏃躲€?O绌虹櫧琛ㄨ杩斿洖銆?鈥ifi.eventmon.AP_STACONNECTED :鏂扮殑瀹㈡埛绔繛鎺ュ埌鎺ュ叆鐐广€?O MAC :杩炴帴鐨勫鎴风鐨凪AC鍦板潃銆?O AID : SDK娌℃湁鎻愪緵鏈夊叧姝よ繑鍥炲€肩殑璇︾粏淇℃伅銆?銉粀ifi.eventmon.AP STADISCONNECTED :瀹㈡埛绔凡缁忎笌鎺ュ叆鐐规柇寮€杩炴帴銆?O MAC :鏂崌杩炴帴鏃冲灏哥鏃矼AC鍦板潃銆?0 AID : SDK娌℃湁鎻愪緵鏈夊叧姝よ繑鍥炲€肩殑璇︾粏淇℃伅銆?銉粀ifi.eventmon.AP_PROBEREQRECVED :鏀跺埌浜嗕竴涓帰娴嬭姹傘€?銆侻AC :鎺㈡祴鎺ュ叆鐐圭殑瀹㈡埛绔殑MAC鍦板潃銆?銆俁SSI :鎺ユ敹鍒板鎴风鐨勪俊鍙峰己搴︽寚鏍囥€?鈥ifi.eventmon.WIFI_MODE_CHANGE : WiFi妯″紡宸茬粡鏀瑰彉銆?0 old_auth_mode :鏃iFi妯″紡銆?0 new_auth_mode :鏂扮殑WiFi妯″紡銆?渚?wifi.eventmon.register(wifi,eventmon.STA_CONNECTEDj function(T) print(鈥淺n\tSTA - CONNECTED鈥濃€︹€淺n\tSSID: 鈥溾€.SSID鈥︹€漒n\tBSSID:鈥濃€?T.BSSID鈥︹€淺n\tChannel: 鈥溾€.channel) end) wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED> function(T) print(鈥漒n\tSTA - DISCONNECTED鈥濃€︹€淺n\tSSID: .T.SSID鈥︹€漒n\tBSSID:鈥溾€?T.BSSID鈥︹€漒n\treason: 鈥溾€.reason) end) wifi.eventmon.register(wifi.eventmon.STA_AUTHMODE_CHANGEj function(T) print(鈥漒n\tSTA - AUTHMODE CHANGE" 鈥?,\n\told_auth_mode:. T.old_auth_mode鈥︹€淺n\tnew_auth_mode: 鈥溾€.new_auth_mode) end) wifi.eventmon.register(wifi,eventmon.STA_GOT_IPj function(T) print(鈥漒n\tSTA - GOT IP鈥濃€︹€淺n\tStation IP: 鈥溾€.IP鈥︹€漒n\tSubnet mask: T.netmask鈥︹€漒n\tGateway IP: 鈥溾€.gateway) end) wifi銉籩ventmon . register(wifi.eventmon.STA_DHCP_TIMEOUT, function() print(鈥漒n\tSTA - DHCP TIMEOUT") end) wifi.eventmon.register(wifi.eventmon.AP_STACONNECTEDj function(T) print(鈥淺n\tAP - STATION CONNECTED鈥濃€︹€淺n\tMAC锛?鈥溾€.MAC鈥︹€漒n\tAID: 鈥溾€.AID) end) wifi.eventmon.register(wifi.eventmon.AP_STADISCONNECTEDJ function(T) print(鈥漒n\tAP - STATION DISCONNECTED鈥濃€︹€淺n\tMAC: 鈥溾€.MAC鈥︹€漒n\tAID: 鈥溾€.AID) end) wifi.eventmon , register(wifi.eventmon.AP_PROBEREQRECVEDj function(T) print(n\n\tAP - PROBE REQUEST RECEIVED鈥濃€︹€漒n\tMAC锛?T.MAC鈥︹€淺n\tRSSI锛?鈥濃€銉籖锛?end) wifi.eventmon , register(wifi.eventmon.WIFI_MODE_CHANGEDj function(T) print(n\n\tSTA - WIFI MODE CHANGED鈥濃€\n\told_mode: T.old_mode鈥?\n\tnew_mode: "鈥.new_mode) end) 涔熷彲浠ョ湅鐪?銉?wifi.eventmon.unregister() wifi.eventmon.unreaister () 鍙栨磶娉ㄥ唽WiFi浜嬩欢鐩戣鍣ㄦ棾鍥炶皟銆?鍙ユ硶 wifi.eventmon.unregister (浜嬩欢) 鍙傛暟 浜嬩欢锛氫綘鎯宠缃洖鎷ㄧ殑WiFi浜嬩欢銆?-鏈夋晥鐨刉iFi娲诲姩锛?銆倃ifi.eventmon.SlA_CONNECTED 銆倃ifi.eventmon.STA_DISCONNECTED 0 wifi.eventmon.SlA_AUTHMODE_CHANGE o wifi.eventmon.SlA_GOT_l P o wifi.eventmon.SlA_DHCP_TIMEOUT o wifi.eventmon.AP_STACONNECTED o wifi.eventmon.AP_STADISCONNECTED o wifi.eventmon.AP_PROBEREQRECVED o wifi.eventmon.WIFI_MODE_CHANGED 杩斿洖 nil wifi.eventmon , unregister(wifi.eventmon.STA_CONNECTED) 涔熷彲浠ョ湅鐪?銉?wifi.eventmon.register() wifi.eventmon.reason 鍖呭惈鏂紑鍘熷洜鐨勮〃銆?鏂紑鍘熷洜 鍊?wifi, eventmon. reason. UNSPECIFIED 1 wifi.eventmon.reason.AUTH_EXP IRE 2 wifi.eventmon.reason.AUTH_LEAVE 3 wifi.eventmon.reason.ASSOC_EXP IRE 4 wifi.eventmon.reason.ASSOC_TOOMANY 浜?wifi.eventmon.reason.NOT_AUTHED 6 wifi.eventmon. reason. NOT_ASSOCED 7 wifi.eventmon.reason.ASSOC_NOT_AUTHED 9 wifi.eventmon.reason.DISASSOC_PWRCAP_BAD 10 wifi.eventmon.reason.DISASSOC_SUPCHAN_BAD 11 wifi.eventmon.reason.lE_INVALID 13 wifi.eventmon.reason.MIC_FAILURE 14 wifi.eventmon.reason.4VW\Y_HANDSHAKE-TIMEOUT 15 wifi.eventmon.reason.GROUP_KEY_UPDATE_TIMEOUT 16 wifi.eventmon.reason.lE_IN_4VWKY_DIFFERS 17 wifi.eventmon.reason.GROUP_CIPHER_INVALID 18 wifi.eventmon.reason.PAIRWISE_CIPHER_INVALID 19 wifi.eventmon.reason.AKMP_INVALID 20 wifi.eventmon.reason.UNSUPP_RSN_IE_VERSION 21 wifi.eventmon.reason.lNVALID_RSN_IE_CAP 22 wifi.eventmon.reason.802_lX_AUTH_FAILED 23 wifi.eventmon.reason.CIPHER_SUITE_REJECTED 24 wifi.eventmon.reason.BEACON_TIMEOUT 200 wifi.eventmon.reason.NO_AP_FOUND 201 wifi.eventmon.reason.AUTH_FAIL 202 wifi.eventmon. reason. ASSOC_ FAIL 203 wifi.eventmon.reason.HANDSHAKE TIMEOUT 204 WPS妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2017骞?鏈?鏃?寮楀叞鍏婨xoo 寮楀叞鍏婨xoo wps.c WPS鍏佽灏嗚澶囨坊鍔犲埌鐜版湁缃戠粶锛岃€屾棤闇€杈撳叆缃戠粶鍑瘉銆?/p>

銆傚嵄闄?璇疯皑鎱庝娇鐢ㄣ€備娇鐢╓PS瀛樺湪涓ラ噸鐨勫畨鍏ㄩ棶棰樸€?鍚敤WPS鍔熻兘鐨刉PA/WPA2缃戠粶闈炲父瀹规槗鐮磋В銆備竴鏃PS寮曡剼琚洍锛岃矾鐢卞櫒鍗充娇鏇存敼瀵?鐮佷篃浼氬彂鍑哄瘑鐮併€?鎮ㄥ簲璇ヤ娇鐢ㄧ鐢ㄤ簡 WPS鍔熻兘鐨刉PA/WPA2o wps.disable () 绂佺敤WiFi WPS鍔熻兘銆?wps.enable () 鍚敤WiFi WPS鍔熻兘銆?wps.start () 鍚姩WiFi WPS鍔熻兘銆?/p>

wps.disable () 绂佺敤WiFi WPS鍔熻兘銆?鍙傛暟 娌℃湁 杩斿洖 nil wps.enable () 鍚敤WiFi WPS鍔熻兘銆?鍙傛暟 娌℃湁 nil wps.start () 鍚姩WiFiWPS鍔熻兘銆傚湪璋冪敤姝ゅ嚱鏁颁箣鍓嶏紝蹇呴』鍚敤WPS銆?鉂舵敞鎰?姝ゅ姛鑳戒粎閰嶇疆AP鐨勪俊鎭紝涓嶈嚜鍔ㄨ繛鎺P銆?鍙ユ硶 wps 銉?start([function(status)]) 鍙傛暟 鈥?function(status)褰揥PS鍔熻兘缁撴潫鏃剁殑鍥炶皟鍑芥暟銆?杩斿洖 nil 鈥揃asic exampLe wifi.setmode(wifi.STATION) wps.enable() wps.start(function(status) if status == wps.SUCCESS then wps.disable() print(鈥淲PS: Success, connecting to AP鈥?wifi 銉?sta 銉?connect() return elseif status print(鈥淲PS: elseif status print(nWPS: elseif status print(鈥淲PS: elseif status print(HWPS: else print(status) end wps.disable() end) 鈥揊uLL exampLe do 鈥揜egister wifi wifi.eventmon.register(wifi.eventmon.STA_CONNECTEDj function(T) print(n\n\tSTA - CONNECTED鈥濃€\n\tSSID: H鈥.SSID鈥\n\tBSSID: T.BSSID鈥︹€漒n\tChannel: 鈥溾€.channel) end) wifi.eventmon鈥egister(wifi.eventmon.STA_GOT_IPj function(T) print(鈥漒n\tSTA - GOT IP鈥濃€︹€淺n\tStation IP: 鈥?,T.IP鈥︹€漒n\tSubnet mask:鈥?T.netmask鈥︹€淺n\tGateway IP: 鈥溾€.gateway) end) wifi.setmode(wifi.STATION) wps_retry_func = function() if wps_retry_count == nil then wps_retry_count = 0 end if wps_retry_count < 3 then wps.disable() wps.enable() wps_retry_count = wps_retry_count + 1 wps_retry_timer = tmr.create() wps_retry_timer:alarm(3000, tmr.ALARM_SINGLE3 function() wps.start(wps_cl print(鈥渞etry #鈥濃€ps_retry_count) else wps_retry_count = nil wps_retry_timer = nil wps_retry_func = nil wps_cb = nil end end wps_cb = function(status) if status == wps.SUCCESS then wps.disable() printC鈥橶PS: success, connecting to AP鈥︹€? wifi銉?sta 銉?connect() wps_retry_count = nil wps_retry_timer = nil wps_retry_func = nil wps_cb = nil return elseif status == wps.FAILED then print(HWPS: Failed鈥? wps_retry_func() return elseif status == wps.TIMEOUT then print(鈥淲PS: Timeout鈥? wps_retry_func() return elseif status == wps.WEP then print(鈥淲PS: WEP not supported鈥? elseif status == wps.SCAN_ERR then print(HWPS: AP not found") wps_retry_func() return else print(status) end wps.disable() wps_retry_count = nil wps_retry_timer = nil wps_retry_func = nil wps_cb = nil end wps.enable() wps , start(wps_cb) end WS2801妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2015 骞?鏈?12 H Espressif 鐨勪緥瀛愶紝Konrad Beckmann 搴锋媺寰疯礉鍏嬫浖 ws2801.c

ws2801.init () 鍒濆鍖栨ā鍧楀苟璁剧疆寮曡剼閰嶇疆銆?ws2801.write () 灏哶涓?4浣峈GB鏁版嵁鍙戦€佸埌WS280L

ws2801.init () 鍒濆鍖栨ā鍧楀苟璁剧疆寮曡剼閰嶇疆銆?鍙ユ硶 ws2801.init(pin_clk, pin_data) 鍙傛暟 -pin_clk 閽堜负鏃堕挓銆傛敮鎸丟PIO0,2,4,50 -pin_data 寮曡剼鐨勬暟鎹€傛敮鎸丟PIO0,2,4,5銆?杩斿洖 nil ws2801.write () 灏嗕竴涓?4浣峈GB鏁版嵁鍙戦€佸埌WS2801o涓嶈蹇樿ws280i.init()涔嬪墠鎵撶數璇濄€?鍙ユ硶 ws2801.write(string) 鍙傛暟 -string鏈夋晥杞借嵎琚彂閫佸埌涓€涓垨澶氫釜WS280L瀹冨簲璇ョ敱姣忎釜鍏冪礌鐨凴GB涓夊厓缁勬瀯鎴愩€?O R1绗竴涓儚绱犵殑绾㈣壊閫氶亾鍊?0-255) O GI绗竴涓儚绱犵殑缁胯壊閫氶亾鍊?0-255) o B1绗竴涓儚绱犵殑钃濊壊閫氶亾鍊?0-255) 鈥︿綘鍙互杩炴帴寰堝WS2801鈥?O R2 , G2 , B2鏄笅WS2801鐨勭孩鑹诧紝缁胯壊鍜岃摑鑹查€氶亾鍊?杩斿洖 nil ws2801.write(string.char(255,0,0, 0,255,0, 0,0,255)) WS2812妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2015骞?鏈?鏃?鐩村埌Klocke, ThomasSoete 鐩村埌鍏嬫礇鍏?ws2812.c

ws2812鏄竴涓浘涔﹂澶勭悊绫讳技ws2812鐨刲ed鐏甫銆傚畠鑷冲皯鍦╓S2812, WS2812b, APA104, SK6812 锛圧GB鎴朢GBW锛変笂宸ヤ綔銆?璇ュ簱浣跨敤璺敱鍦℅PIO2涓婄殑UART1 锛圢odeMCUDEVKIT涓婄殑寮曡剼D4锛夋潵鐢熸垚姣旂壒娴併€傚畠鍙?浠ヤ娇鐢ㄨ矾鐢卞埌TXDO鐨刄ARTO鏉ュ悓鏃跺鐞嗕袱涓狶ED鐏潯銆?璀﹀憡锛氬湪鍙岄噸妯″紡涓嬶紝鎮ㄥ皢鏃犳硶閫氳繃涓插彛璁块棶Lua鐨勬帶鍒跺彴锛堝畠灏嗚閲嶆柊閰嶇疆涓烘敮鎸乄S2812- like鍗忚锛夈€傚鏋滀綘鎯充繚鎸佽闂甃ua鐨勬帶鍒跺彴锛屼綘灏嗕笉寰椾笉浣跨敤鍏朵粬杈撳叆閫氶亾锛屽TCP鏈嶅姟鍣?锛堣鍙傞槄绀轰緥锛?ws2812.init () 鍒濆鍖朥ART1鍜孏PIO2,搴旇鍦╳rite 锛堬級涔嬪墠璋冪敤涓€娆°€?ws2812.write () 鍙戦€佹暟鎹埌涓€涓垨涓や釜led鐏甫浣跨敤鍏跺師鐢熸牸寮忥紝閫氬父鏄豢鑹诧紝绾㈣壊锛岃摑 鑹茬殑RGB鏉″拰缁胯壊锛岀孩鑹诧紝钃濊壊锛岀櫧鑹茬殑RGBW鏉°€?ws2812.newBuffer () 鍒嗛厤涓€涓柊鐨勫唴瀛樼紦鍐插尯鏉ュ瓨鍌ㄤ富鍊笺€?ws2812.buffer锛氬緱鍒?() ws2812.buffer锛?) 璁剧疆 ws2812.buffer锛氬昂瀵?() ws2812.buffer锛氬~鍐?() 鐢ㄧ粰瀹氱殑棰滆壊濉厖缂撳啿鍖恒€?ws2812.buffer锛氳浆鍌?() 浠ュ瓧绗︿覆褰㈠紡杩斿洖缂撳啿鍖虹殑鍐呭锛堝儚绱犲€硷級銆?ws2812.buffer锛氭浛鎹?() 灏嗗瓧绗︿覆锛堟垨缂撳啿鍖猴級鎻掑叆鍙︿竴涓叿鏈夊亸绉婚噺鐨勭紦鍐插尯涓€?ws2812.buffer锛氭贩鍚?() 杩欐槸灏嗘暟鎹姞杞藉埌缂撳啿鍖虹殑涓€鑸柟娉曪紝璇ョ紦鍐插尯鏄潵鑷叾浠栫紦鍐插尯鐨勬暟 鎹殑绾挎€х粍鍚堛€?ws2812.buffer锛氬姛鐜?() 璁$畻缂撳啿鍖虹殑鎬昏兘閲忛渶姹傘€?ws2812.buffer锛氳お鑹?() 娣″叆鎴栨贰鍑恒€?/p>

灏嗭紙涓€鍧楋級缂撳啿鍖虹殑鍐呭鍚戞鎴栬礋鏂瑰悜绉诲姩銆?杩欏疄鐜颁簡鍍忓瓧绗︿覆涓€鏍风殑鎻愬彇鍔熻兘銆?杩欏疄鐜颁簡銆?ws2812.init 锛堬級 鍒濆鍖朥ART1鍜孏PI02,搴旇鍦╳rite 锛堬級涔嬪墠璋冪敤涓€娆°€傚垵濮嬪寲UARTO 锛圱XDO锛夊 鏋?ws2812.M0DE_DUAL 琚缃€?鍙ユ硶 ws2812.init锛堬蓟mode锛斤級 鍙傛暟 鈥?mode 锛堝彲閫夛級瑕佷箞 ws2812.MODE_SINGLE 锛堥粯璁わ紝濡傛灉鐪佺暐锛夋垨 ws2812.MODE_DUAL 鍦╓S2812.MODE_DUAL妯″紡涓嬶紝鎮ㄥ皢鑳藉骞惰澶勭悊涓や釜鏉″甫锛屼絾灏嗗け鍘诲Lua涓茶鎺у埗鍙扮殑璁?闂潈闄愶紝鍥犱负瀹冨崠浜浉鍚岀殑UART鍜孭IN銆?杩斿洖 nil ws2812.write 锛堬級 鍙戦€佹暟鎹埌涓€涓垨涓や釜led鐏甫浣跨敤鍏跺師鐢熸牸寮忥紝閫氬父鏄豢鑹诧紝绾㈣壊锛岃摑鑹茬殑RGB鏉″拰缁胯壊, 绾㈣壊锛岃摑鑹诧紝鐧借壊鐨凴GBW鏉°€?鍙ユ硶 ws2812.write(datal, [data2]) 鍙傛暟 -datal鏈夋晥杞借嵎閫氳繃GPIO2鍙戦€佸埌涓€涓垨澶氫釜WS2812 锛堝LED锛?-data2 锛堝彲閫夛級鏈夋晥璐熻浇閫氳繃TXDO鍙戦€佸埌涓€涓垨澶氫釜WS2812 锛堝ws2812.M0DE_DUAL 闇€瑕佺殑妯″紡锛?鏈夋晥杞借嵎绫诲瀷鍙互鏄細-nil娌℃湁瀹屾垚-string琛ㄧず瑕佸彂閫佺殑瀛楄妭-ws2812.buffer璇峰弬 闃呯紦鍐插尯妯″潡 杩斿洖 nil ws2812.init() ws2812.write(string.char(2550, 0, 255, 0, 0)) 鈥?turn the two first RGB Leds ws2812.init() ws2812.write(string.char(00, 0, 255, 0,0, 0, 255)) 鈥?turn the two first RGBW ws2812.init(ws2812.M0DE_DUAL) ws2812.write(string.char(255, 0, 0, 255> Q, 0), string.char(0, 255, 0, 0, 255, 0 ws2812.init(ws2812.M0DE_DUAL) ws2812.write(nil, string.char(0, 255, 255, 0)) 鈻? turn the two first RGB Li 缂撳啿妯″潡 瀵逛簬鏇撮珮绾х殑鍔ㄧ敾锛屼繚鎸佹潯鐨勨€滃抚缂撳啿鍖?锛屼笌鍏朵氦浜掑苟灏嗗叾鍐插埛鍒版潯涓婃槸鏈夌敤鐨勩€?涓烘锛學S2812搴撴彁渚涗簡涓€涓/鍐欑紦鍐插尯銆傝繖涓紦鍐插尯鏈変竴涓猒tostring鏂规硶鍙互鎵撳嵃銆傝繖 瀵硅皟璇曞緢鏈夌敤銆?渚?甯GBW甯︾殑杩借釜鍣?ws2812.init() local ij buffer = 0, ws2812.newBuffer(300, 4); buffer0, 0, 0); tmr.crea- i = i + 1 buffer:fade(2) buffer:set(i % buffer:size() + 1, 0, 0> 0, 255) ws2812.write(buffer) end) ws2812.newBuffer () 鍒嗛厤涓€涓柊鐨勫唴瀛樼紦鍐插尯鏉ュ瓨鍌ㄤ富鍊笺€?鍙ユ硶 ws2812.newBuffer(numberOfLeds, bytesPerLed) 鍙傛暟 鈥?numberOfLeds led鐏甫鐨勯暱搴?銉籦ytesPerLed RGB鏉$汗涓?, RGBW鏉$汗涓? ws2812.buffer锛氬緱鍒?) 杩斿洖缁欏畾浣嶇疆鐨勫€?鍙ユ硶 buffer:get(index) 鍙傛暟 -index鍦ㄧ紦鍐插尯涓殑浣嶇疆(绗竴涓狶ED涓?) 杩斿洖 (color) 渚?buffer = ws2812.newBuffer(32j 4) print(buffer:get(1)) 0 0 0 0 ws2812.buffer锛?)璁剧疆 鍦ㄧ粰瀹氱殑浣嶇疆璁剧疆鍊?鍙ユ硶 buffer:set(index, color) 鍙傛暟 -index鍦ㄧ紦鍐插尯涓殑浣嶇疆(1涓虹涓€涓狶ED) 鈥?color棰滆壊鐨勬湁鏁堣浇鑽?鏈夋晥杞借嵎鍙互鏄細-number, numberj 鈥︿綘搴旇浼犻€掑敖鍙兘澶氱殑鍙傛暟bytesPerLed - table 搴旇鍖呭惈bytesPerLed 鏁板瓧-string 搴旇鍖呭惈bytesPerLed 瀛楄妭 杩斿洖 nil 渚?buffer = ws2812.newBuffer(32J 3) buffer:set(1, 255, 0) 鈥?set the first Led green for a RGB strip buffer = ws2812.newBuffer(32J 4) buffer:set(1, (0, 0, 0, 255}) 鈥?set the first Led white for a RGBW strip buffer = ws2812.newBuffer(32J 3) buffer:set(1, string.char(255, 0, 0)) 鈥?set the first Led green for a RGB strip ws2812.buffer锛氬昂瀵革紙锛?浠ユ暟閲忕殑LED杩斿洖缂撳啿鍖虹殑澶у皬 鍙ユ硶 buffer:size() 鍙傛暟 娌℃湁 杩斿洖 int ws2812.buffer锛氬~鍐欙紙锛?鐢ㄧ粰瀹氱殑棰滆壊濉厖缂撳啿鍖恒€傜粰瀹氬瓧鑺傜殑鏁伴噺蹇呴』涓庣紦鍐插尯鐨勫瓧鑺傛暟鐩浉鍖归厤 鍙ユ硶 buffer:fill(color) 鍙傛暟 鈥?color棰滆壊鐨勫瓧鑺傦紝浣犲簲璇ヤ紶閫掕澶氬弬鏁癰ytesPerLed 杩斿洖 nil buffer111(0 0) 鈥?fill the buffer with btack for a RGB strip ws2812.buffer锛氳浆鍌紙锛?浠ュ瓧绗︿覆褰㈠紡杩斿洖缂撳啿鍖虹殑鍐呭锛堝儚绱犲€硷級銆傝繖鍙互淇濆瓨鍒版枃浠舵垨閫氳繃缃戠粶鍙戦€併€?鍙ユ硶 buffer:dump() 杩斿洖 鍖呭惈鍍忕礌鍊肩殑瀛楃涓层€?ws2812.buffer锛氭浛鎹紙锛?灏嗗瓧绗︿覆锛堟垨缂撳啿鍖猴級鎻掑叆鍙︿竴涓叿鏈夊亸绉婚噺鐨勭紦鍐插尯涓€傛瘡涓狶ED鐨勭紦鍐插尯蹇呴』鍏锋湁鐩稿悓鏁?閲忕殑棰滆壊锛屽惁鍒欎細寮曞彂閿欒銆?鍙ユ硶 buffer:replace(source[, offset]) 鍙傛暟 銉籹ource鍍忕礌鍊煎皢琚缃埌缂撳啿鍣ㄤ腑銆傝繖鏄竴涓瓧绗︿覆鎴栦竴涓紦鍐插尯銆?銉籵ffset婧愭斁缃湪缂撳啿鍖轰腑鐨勫亸绉婚噺銆傞粯璁ゅ€兼槸1.鍙互浣跨敤璐熷€笺€?杩斿洖 nil buffer:replace(anotherbuffer:dump()) 鈥?copy one buffer into another via a strini buffer:replace(anotherbuffer) 鈥?copy one buffer into another newbuffer = buffer.sub(l) 鈥?make a copy of a buffer into a new buffer ws2812.buffer锛氭贩鍚堬紙锛?杩欐槸灏嗘暟鎹姞杞藉埌缂撳啿鍖虹殑涓€鑸柟娉曪紝璇ョ紦鍐插尯鏄潵鑷叾浠栫紦鍐插尯鐨勬暟鎹殑绾挎€х粍鍚堛€傚畠鍙?浠ョ敤鏉ュ鍒朵竴涓紦鍐插尯锛屾垨鑰呮洿鏈夌敤鐨勫仛涓€涓氦鍙夋贰鍏ユ贰鍑恒€傚儚绱犲€兼寜鏁存暟璁$畻锛岀劧鍚庤寖鍥?闄愬埗涓篬0,255]0杩欐剰鍛崇潃璐熼潰鍥犵礌濡傞鏈熺殑閭f牱宸ヤ綔锛屽苟涓旂紦鍐茬粍鍚堢殑椤哄簭骞朵笉閲嶈銆?鍙ユ硶 buffer:mix(factorbufferlj 銉?銉? 鍙傛暟 鈥?factorl杩欐槸鍐呭bufferl琚箻浠ョ殑鍥犵礌銆傝繖涓洜瀛愯缂╂斁浜?56鍊嶃€傚洜姝actorl , 256鐨勫€兼槸1.0鐨勪竴涓洜瀛愩€?-bufferl杩欐槸婧愮紦鍐插尯銆傚畠蹇呴』涓庣洰鏍囩紦鍐插尯鍏锋湁鐩稿悓鐨勫舰鐘躲€?鍙互鏈変换浣曟暟閲忕殑鍥犲瓙/缂撳啿娑插銆?杩斿洖 nil 鈥揕oads buffer with a crossfade between bufferl and buffer2 buffer:mix(256 - crossmix, bufferl, crossmiXj buffer2) 鈥搈uLtipLies all voLues in buffer by 0.75 鈥?This can be used in pLace of buffer:fade buffer:mix(192_, buffer) ws2812.buffer锛氬姛鐜?) 璁$畻缂撳啿鍖虹殑鎬昏兘閲忛渶姹傘€傝繖鍙槸鎵€鏈夊儚绱犲€肩殑鎬诲拰(鍋囧畾姣忎釜鍍忕礌涓殑姣忕棰滆壊娑堣€楃浉鍚?鐨勫姛鐜囬噺)銆備竴涓湡姝g殑WS2812 (鎴朩S2811)鏈変笁涓?0mA鐨勬亽娴侀┍鍔ㄥ櫒-R, G鍜孊鍚勪竴 涓€傝剦鍐插搴﹁皟鍒跺皢浣垮钩鍧囩數娴佷笌鍍忕礌鍊兼垚绾挎€ф瘮渚嬪叧绯汇€?鍙ユ硶 buffer:power() 杩斿洖 涓€涓暣鏁帮紝瀹冩槸鎵€鏈夊儚绱犲€肩殑鎬诲拰銆?渚?鈥揇im the buffer to no more than the PSU can provide local psu_current_ma = 1000 local led_current_ma = 20 local led_sum = psu_current_ma * 255 / led_current_ma local p = buffer:power() if p > led_sum then buffer:mix(256 * led_sum / p> buffer) 鈥?power is now Limited end ws2812.buffer锛氳お鑹?) 娣″叆鎴栨贰鍑恒€傞粯璁ゆ槸out銆傚皢姣忎釜LED鐨勬瘡涓瓧鑺備箻浠ユ垨闄や互缁欏畾鍊笺€傜敤浜庢贰鍖栨晥鏋溿€?鍙ユ硶 buffer:fade(value direction]) 鍙傛暟 鈥?value鐢ㄦ潵鍒嗗壊鎴栦箻浠ユ瘡涓瓧鑺傜殑鍊?-direction ws2812.FADE_IN鎴杦s2812.FADE_OUT銆傞粯璁や负ws2812.FADE_OUT buffer:fade(2) buffercfade^, ws2812. FADE_IN) ws2812.buffer锛氱Щ浣?) 灏?涓€鍧?缂撳啿鍖虹殑鍐呭鍚戞鎴栬礋鏂瑰悜绉诲姩銆傝繖鍏佽绠€鍗曠殑鍔ㄧ敾鏁堟灉銆傚彲浠ヤ娇鐢ㄦ爣鍑嗙殑璧峰 鍜岀粨鏉熷亸绉婚噺Lua琛ㄧず娉曟潵鎸囧畾缂撳啿鍖虹殑涓€閮ㄥ垎銆傝礋鍊间粠缂撳啿鍖虹殑鏈鍚戝悗璁℃暟銆?鍙ユ硶 buffer:shift(value [, mode], j]]]) 鍙傛暟 鈥?value鏃嬭浆缂撳啿鍖虹殑鍍忕礌鏁伴噺銆傛鍊煎悜鍓嶆棆杞紝璐熷€煎悜鍚庢棆杞€?銉籱ode鏄娇鐢ㄧ殑鎹㈡尅妯″紡銆傚彲浠ユ槸涓€涓獁s2812.SHIFT_LOGICAL 鎴杦s2812.SHIFT_CIRCULAR銆傚湪SHIFT涓凮GICAL鐨勬儏鍐典笅锛岄噴鏀剧殑鍍忕礌琚缃负0 (鍏?闂?銆傚湪SHIFT.CIRCULAR鐨勬儏鍐典笅锛屽雹鍐插尯琚涓轰竴涓幆褰㈢紦鍐插尯锛屽湪鍙︿竴绔啀娆℃彃鍏?涓€涓儚绱犮€傞粯璁や负SHIFT_LOGICAL銆?-i鏄彈褰卞搷缂撳啿鍖轰腑鐨勭涓€涓亸绉婚噺銆傝礋鍊兼槸鍏佽鐨勶紝浠庢渶鍚庡€掓暟銆傜己鐪佸€兼槸1銆?-j鏄彈褰卞搷缂撳啿鍖轰腑鐨勬渶鍚庝竴涓亸绉婚噺銆傝礋鍊兼槸鍏佽鐨勶紝浠庢渶鍚庡€掓暟銆傜己鐪佸€兼槸-1銆?杩斿洖 nil 渚?buffer:shift(3) ws2812.buffer锛氬瓙() 杩欏疄鐜颁簡鎻愬彇鍔熻兘string.sub o杩欎簺绱㈠紩鏄湪LED鍜屾墍鏈夌浉鍚岀殑瑙勫垯閫傜敤銆?鍙ユ硶 bufferl:sub(i[, j]) 鍙傛暟 -i杩欐槸鎻愬彇鏁版嵁鐨勫紑濮嬨€傚彲浠ヤ娇鐢ㄨ礋鍊笺€?-j杩欐槸鎻愬彇鏁版嵁鐨勭粨灏俱€傚彲浠ヤ娇鐢ㄨ礋鍊笺€傞粯璁ゅ€兼槸-1銆?杩斿洖 鍖呭惈鎻愬彇鐨勭墖娈电殑缂撳啿鍖恒€?渚?鏂囨。銆嬭嫳璇€濇ā鍧椔籜PT2046 XPT2046妯″潡 浠ユ潵 璧锋簮/璐$尞鑰?缁存姢鑰?璧勬簮 2017骞?鏈?鏃?Starofall / Frank Exoo 寮楀叞鍏婨xoo xpt2046.c

XPT2046鏄竴绉嶅粔浠锋樉绀哄櫒浣跨敤鐨勮Е鎽告帶鍒跺櫒锛岄€氬父涓嶪LI9341鏄剧ず鎺у埗鍣ㄧ粨鍚堜娇鐢ㄣ€傝妯″潡 鍩轰簬 spapadim 鍜?PaulStoffregen 鐨勫簱寤虹珛銆?xpt2046.init () 鍚姩XPT2046妯″潡锛屼粠鏄剧ず灞忎笂璇诲彇瑙︽懜鍊笺€?xpt2046.setCa 1 ibration () 璁剧疆鏄剧ず鍣ㄧ殑鏍″噯銆?xpt2046.is7buched () 妫€鏌ヨЕ鎽搁潰鏉挎槸鍚﹁瑙︽懜銆?xpt2046.getPosition () 浣跨敤鏍″噯鍊煎拰缁欏畾鐨勫搴﹀拰楂樺害杩斿洖鏄剧ず瑙︽懜鐨勪綅缃€?xpt2046.getPositionAvg () 涓轰簡鍒涘缓鏇村ソ鐨勬祴閲忥紝杩欎釜鍑芥暟璇诲彇涓夋浣嶇疆锛屽苟浠ユ渶灏忚窛绂诲钩鍧?涓や釜浣嶇疆銆?xpt2046.getRaw () 浠庢樉绀哄櫒璇诲彇鍘熷鍊笺€?/p>

xpt2046.init () 鍚姩XPT2046妯″潡锛屼粠鏄剧ず灞忎笂璇诲彇瑙︽懜鍊笺€傝皟鐢╯pi.setup銆傚墠闇€瑕佽皟 鐢▁pt2046.init (鍙傝绀轰緥)銆傜敱浜巙cg搴撲篃闇€瑕乻pi.setup()琚皟鐢紝鍥犳鍙渶璋冪敤涓€ 娆″苟婵€娲诲嵆鍙痵pi.FULLDUPLEX銆傚湪clock_div鎵€鐢╯pi.setup()搴斾负16鎴栨洿楂橈紝濡傝緝浣?鐨勫€煎彲鑳戒骇鐢熶笉鍑嗙‘鐨勭粨鏋溿€?鍙ユ硶 xpt2046.init(cs_pin, irq_pinheight, width) 鍙傛暟 銉籧s_pin CS鐨凣PI銆傚紩鑴?鈥?irq_pin GPI銆傚紩鑴氱敤浜?irq -height浠ュ儚绱犳樉绀洪珮搴?-width浠ュ儚绱犱负鍗曚綅鏄剧ず瀹藉害 杩斿洖 nil 鈥揝etup spi with 鈥榗Lock_div鈥?of 16 and spi. FULLDUPLEX spi.setup(l, spi.MASTER, spi.CPOL_LOW, spi銉籆PHA_LOW, 8, 16,spi.FULLDUPLEX) --SETTING UP DISPLAY (using ucg moduLe) local disp = ucg.ili9341_18x240x320_hw_spi(8j 4, 0) disp:begin(0) 鈥揝ETTING UP TOUCH xpt2046.init(2J1,320,240) xpt2046.setcalibration(198, 1776, 1762, 273) xpt2046.setCalibration () 璁剧疆鏄剧ず鍣ㄧ殑鏍″噯銆傛牎鍑嗗€煎彲浠ラ€氳繃浣跨敤xpt2046.getRaW()鍜岃鍙栬竟缂樹腑鐨勫€兼潵鍔犱互鑰?铏戙€?鍙ユ硶 xpt2046.setCalibration(xlj yl, x2, y2) 鍙傛暟 -Xl鍘熷X鍊煎湪宸︿笂瑙?-yl鍘熷鐨剏鍊煎湪宸︿笂瑙?-x2鍘熷X鍊煎湪鍙充笅瑙?-y2鍘熷鐨剏鍊煎湪鍙充笅瑙?杩斿洖 nil xpt2046.isTouched () 妫€鏌ヨЕ鎽搁潰鏉挎槸鍚﹁瑙︽懜銆?鍙ユ硶 xpt2046.isTouched() 杩斿洖 true濡傛灉鏄剧ず琚Е鎽革紝鍚﹀垯false 渚?if(xpt2046.isTouched()) then local x, y = xpt2046.getPosition() print(x 銉?,-H 銉汇兓 y) end xpt2046.getPosition () 浣跨敤鏍″噯鍊煎拰缁欏畾鐨勫搴﹀拰楂樺害杩斿洖鏄剧ず瑙︽懜鐨勪綅缃€傚彲浠ュ湪涓柇寮曡剼鍥炶皟涓娇鐢紝浠ュ湪瑙?鎽歌Е鎽稿睆鏃惰繑鍥炲潗鏍囥€?鍙ユ硶 xpt2046 銉?getPosition() 杩斿洖 杩斿洖x鍜寉鐨勪綅缃€?渚?鈥揝etup spi with 鈥榗Lock_div鈥?of 16 and spi. FULLDUPLEX spi.setup(l, spi.MASTER, spi.CPOL_LOW, spi.CPHA_L0W3 8, 16,Spi.FULLDUPLEX) --SETTING UP TOUCH cs_pin = 2 鈥?GPI04 irq_pin = 3 鈥?GPIO0 height = 240 width = 320 xpt2046.init(cs_pinj irq_pinwidth, height) xpt2046.setcalibration(198, 1776, 1762, 273) gpio.mode(irq_pinjgpio.INT,gpio, PULLUP) gpio.trig(irq_pinj 鈥渄own鈥? function() print(xpt2046.getPosition()) end) xpt2046.getPositionAvg () 涓轰簡鍒涘缓鏇村ソ鐨勬祴閲忥紝杩欎釜鍑芥暟璇诲彇涓夋浣嶇疆锛屽苟浠ユ渶灏忚窛绂诲钩鍧囦袱涓綅缃€?鍙ユ硶 xpt2046 銉籫etPositionAvg() 杩斿洖 杩斿洖x鍜寉鐨勪綅缃€?渚?local Xj y = xpt2046.getPositionAvg() print(x鈥) xpt2046.getRaw () 浠庢樉绀哄櫒璇诲彇鍘熷鍊笺€傜敤浜庤皟璇曞拰鑷畾涔夎浆鎹€?鍙ユ硶 xpt2046.getRaw() 杩斿洖 杩斿洖x鍜寉鐨勪綅缃綔涓哄師濮嬪€笺€?local rawX, rawY = xpt2046.getRaw() print(rawX 鈥︹€?鈥濃€awY)

杞嚜锛歨ttp://blog.csdn.net/Hackbuteer1/rss/list

[鍘焆涔濆害浜掑姩绀惧尯IT鍚嶄紒鎷涜仒涓婃満鑰冭瘯鐑韩璧?http://ac.jobdu.com/problem.php?id=1326聽聽聽聽聽Waiting in Line 聽 //绠€鍗曟ā鎷熼

#include

#include

using namespace std;

#include

int pt[1001],leave[1001],start[21];

int n,m,k,q;

inline bool scan_d(int &num) // 杩欎釜灏辨槸 鍔犻€熺殑 鍏抽敭浜?

{

char in;bool IsN=false;

in=getchar();

if(in==EOF)

return false;

while(in!='-'&&(in<'0'||in>'9')) in=getchar();

if(in=='-') { IsN=true;num=0;}

else num=in-'0';

while(in=getchar(),in>='0'&&in<='9')

{

num*=10,num+=in-'0';

}

if(IsN)

num=-num;

return true;

}

void solve()

{

int i,j,index,t,p,count=k;

int num[21],window[21][13];

memset(start,0,sizeof(start));

memset(num,0,sizeof(num));

j = index = 1;

for(i = 1 ; i <= n*m && i <= k ; ++i) //鍒氬紑濮嬫椂锛宯涓獥鍙i兘鏄┖鐨勶紝瀹㈡埛渚濇閫夋嫨闃熶紞鏈€鐭殑绐楀彛

{

window[j][index] = i;

num[j]++;

j++;

if(j>n)

{

j = 1;

++index;

}

}

j = i; //鍒氬紑濮嬬殑n涓獥鍙e凡缁忛兘鎺掓弧浜嗗鎴?/p>

t = 0;

while(t <= 540)

{

++t;

for(i = 1 ; i <= n ; ++i)

{

if(num[i] > 0 && pt[ window[i][1] ] == t - start[i])

{

leave[ window[i][1] ] = t;

start[i] = t;

--count; //涓€涓敤鎴风寮€

for(p = 2 ; p <= num[i] ; ++p)

window[i][p-1] = window[i][p]; //姣忎釜绐楀彛鐨勭涓€涓敤鎴风寮€鍚庯紝鍚庨潰鐨勫鎴蜂緷娆″線鍓嶇Щ鍔?/p>

--num[i];

if(j <= k) //杩樻湁绛夊緟鐨勫鎴风殑鏃跺€欙紝寰€绐楀彛涓啀澧炲姞涓€涓?/p>

{

window[i][p-1] = j;

++num[i];

++j;

}

}//if

}//for

if(!count) //鎵€鏈夊鎴烽兘澶勭悊瀹岀殑鏃跺€欙紝鐩存帴閫€鍑?/p>

break;

}

}

int main(void)

{

int i,j;

while(scanf("%d %d %d %d",&n,&m,&k,&q)!=EOF)

{

memset(leave,1,sizeof(leave));

for(i = 1 ; i <= k ; ++i)

scan_d(pt[i]);

solve();

for(i = 0 ; i < q ; ++i)

{

scan_d(j);

if(leave[j] > 540)

puts("Sorry");

else

printf("%02d:%02d\n",leave[j]/60+8,leave[j]%60);

}

}

return 0;

} 聽

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-2 15:10:11聽

鍘熸枃閾炬帴

闃呰锛?27 璇勮锛?聽

鏌ョ湅璇勮

聽[鍘焆鍗曡皟闃熷垪 涓€銆?浠€涔堟槸鍗曡皟锛堝弻绔級闃熷垪 鍗曡皟闃熷垪锛岄【鍚嶆€濅箟锛屽氨鏄竴涓厓绱犲崟璋冪殑闃熷垪锛岄偅涔堝氨鑳戒繚璇侀槦棣栫殑鍏冪礌鏄渶灏忥紙鏈€澶э級鐨勶紝浠庤€屾弧瓒冲姩鎬佽鍒掔殑鏈€浼樻€ч棶棰樼殑闇€姹傘€?鍗曡皟闃熷垪锛屽張鍚嶅弻绔槦鍒椼€傚弻绔槦鍒楋紝灏辨槸璇村畠涓嶅悓浜庝竴鑸殑闃熷垪鍙兘鍦ㄩ槦棣栧垹闄ゃ€侀槦灏炬彃鍏ワ紝瀹冭兘澶熷湪闃熼銆侀槦灏惧悓鏃惰繘琛屽垹闄ゃ€?銆愬崟璋冮槦鍒楃殑鎬ц川銆?涓€鑸紝鍦ㄥ姩鎬佽鍒掔殑杩囩▼涓紝鍗曡皟闃熷垪涓瘡涓厓绱犱竴鑸瓨鍌ㄧ殑鏄袱涓€硷細 1銆佸湪鍘熸暟鍒椾腑鐨勪綅缃紙涓嬫爣锛?2銆?浠栧湪鍔ㄦ€佽鍒掍腑鐨勭姸鎬佸€?鑰屽崟璋冮槦鍒楀垯淇濊瘉杩欎袱涓€煎悓鏃跺崟璋冦€?浠庝互涓婄湅锛屽崟璋冮槦鍒楃殑鍏冪礌鏈€濂界敤涓€涓被鏉ユ斁锛屼笉杩欐牱鐨勮瘽锛屽氨瑕佸紑涓や釜鏁扮粍銆傘€傘€?鍗曡皟闃熷垪锛氬崟璋冮槦鍒?鍗充繚鎸侀槦鍒椾腑鐨勫厓绱犲崟璋冮€掑锛堟垨閫掑噺锛夌殑杩欐牱涓€涓槦鍒楋紝鍙互浠庝袱澶村垹闄わ紝鍙兘浠庨槦灏炬彃鍏ャ€傚崟璋冮槦鍒楃殑鍏蜂綋浣滅敤鍦ㄤ簬锛岀敱浜庝繚鎸侀槦鍒椾腑鐨勫厓绱犳弧瓒冲崟璋冩€э紝瀵规墜鍏冪礌渚挎槸鏋佸皬鍊硷紙鏋佸ぇ鍊硷級浜嗐€?http://poj.org/problem?id=2823 聽 //poj-2823--鍗曡皟闃熷垪

#include

#include

using namespace std;

const int MAX = 1000001;

//涓や釜鍗曡皟闃熷垪

int dq1[MAX]; //涓€涓瓨鍗曡皟閫掑

int dq2[MAX]; //涓€涓瓨鍗曡皟閫掑噺

int a[MAX];

inline bool scan_d(int &num) // 杩欎釜灏辨槸 鍔犻€熺殑 鍏抽敭浜?

{

char in;bool IsN=false;

in=getchar();

if(in==EOF)

return false;

while(in!='-'&&(in<'0'||in>'9')) in=getchar();

if(in=='-') { IsN=true;num=0;}

else num=in-'0';

while(in=getchar(),in>='0'&&in<='9')

{

num*=10,num+=in-'0';

}

if(IsN)

num=-num;

return true;

}

int main(void)

{

int i,n,k,front1,front2,tail1,tail2,start,ans;

while(scanf("%d %d",&n,&k)!=EOF)

{

for(i = 0 ; i < n ; ++i)

scan_d(a[i]);

front1 = 0, tail1 = -1;

front2 = 0, tail2 = -1;

ans = start = 0;

for(i = 0 ; i < k ; ++i)

{

while(front1 <= tail1 && a[ dq1[tail1] ] <= a[i]) //褰撳墠鍏冪礌澶т簬鍗曡皟閫掑闃熷垪鐨勯槦灏惧厓绱犵殑鏃跺€欙紝闃熷熬鐨勫厓绱犱緷娆″脊鍑洪槦鍒楋紝鐩村埌闃熷熬鍏冪礌澶т簬褰撳墠褰撳墠鍏冪礌鐨勬椂鍊欙紝灏嗗綋鍓嶅厓绱犳彃鍏ラ槦灏?/p>

--tail1;

dq1[ ++tail1 ] = i; //鍙渶瑕佽褰曚笅鏍囧嵆鍙?/p>

while(front2 <= tail2 && a[ dq2[tail2] ] >= a[i]) //褰撳墠鍏冪礌灏忎簬鍗曡皟閫掑噺闃熷垪鐨勯槦灏惧厓绱犵殑鏃跺€欙紝闃熷熬鐨勫厓绱犱緷娆″脊鍑洪槦鍒楋紝鐩村埌闃熷熬鍏冪礌灏忎簬褰撳墠褰撳墠鍏冪礌鐨勬椂鍊欙紝灏嗗綋鍓嶅厓绱犳彃鍏ラ槦灏?/p>

--tail2;

dq2[ ++tail2 ] = i; //鍙渶瑕佽褰曚笅鏍囧嵆鍙?/p>

}

printf("%d ",a[ dq2[ front2 ] ]);

for( ; i < n ; ++i)

{

while(front2 <= tail2 && a[ dq2[tail2] ] >= a[i])

--tail2;

dq2[ ++tail2 ] = i;

while(dq2[ front2 ] <= i - k)

++front2;

if(i != n-1)

printf("%d ",a[ dq2[ front2 ] ]);

}

printf("%d\n",a[ dq2[ front2 ] ]);

//杈撳嚭鏈€澶у€?/p>

printf("%d ",a[ dq1[ front1 ] ]);

for(i=k ; i < n ; ++i)

{

while(front1 <= tail1 && a[ dq1[tail1] ] <= a[i])

--tail1;

dq1[ ++tail1 ] = i;

while(dq1[ front1 ] <= i - k)

++front1;

if(i != n-1)

printf("%d ",a[ dq1[ front1 ] ]);

}

printf("%d\n",a[ dq1[ front1 ] ]);

}

return 0;

} http://acm.hdu.edu.cn/showproblem.php?pid=3530聽聽Subsequence 聽 聽 /*

棰樻剰锛氱粰鍑轰竴涓簭鍒楋紝姹傛渶闀跨殑杩炵画瀛愬簭鍒楋紝浣垮緱 M<=Max-Min<=K

n <= 10^5

渚濇鏋氫妇鍓╀笅鐨凬-1涓厓绱狅紝骞朵笖灏嗗綋鍓嶆湭鍏ラ槦鐨勭涓€涓厓绱犲拰闃熷熬鍏冪礌姣旇緝锛屽綋涓斾粎褰撻槦鍒椾负闈炵┖骞朵笖闃熷熬鍏冪礌鐨勫€煎皬浜庡綋鍓嶆湭鍏ラ槦鐨勫厓绱犳椂锛?/p>

灏嗛槦灏惧厓绱犲垹闄?涔熷氨鏄槦灏炬寚閽?1锛夛紝鍥犱负褰撳墠鐨勫厓绱犳瘮闃熷熬鍏冪礌澶э紝鎵€浠ュ湪鍖洪棿鍐呴槦灏惧厓绱犱笉浼氭槸鏈€澶у€间簡銆?/p>

閲嶅杩欎釜杩囩▼鐩村埌闃熷垪绌烘垨鑰呴槦灏惧厓绱犳瘮褰撳墠鍏冪礌澶э紝

*/

#include

#include

using namespace std;

const int MAX = 100001;

//涓や釜鍗曡皟闃熷垪

int dq1[MAX]; //涓€涓瓨鍗曡皟閫掑

int dq2[MAX]; //涓€涓瓨鍗曡皟閫掑噺

int a[MAX];

inline bool scan_d(int &num) // 杩欎釜灏辨槸 鍔犻€熺殑 鍏抽敭浜?

{

char in;bool IsN=false;

in=getchar();

if(in==EOF)

return false;

while(in!='-'&&(in<'0'||in>'9')) in=getchar();

if(in=='-') { IsN=true;num=0;}

else num=in-'0';

while(in=getchar(),in>='0'&&in<='9')

{

num*=10,num+=in-'0';

}

if(IsN)

num=-num;

return true;

}

int main(void)

{

int i,n,m,k,front1,front2,tail1,tail2,start,ans;

while(scanf("%d %d %d",&n,&m,&k) != EOF)

{

for(i = 0 ; i < n ; ++i)

scan_d(a[i]);

front1 = 0, tail1 = -1;

front2 = 0, tail2 = -1;

ans = start = 0;

for(i = 0 ; i < n ; ++i)

{

while(front1 <= tail1 && a[ dq1[tail1] ] <= a[i]) //褰撳墠鍏冪礌澶т簬鍗曡皟閫掑闃熷垪鐨勯槦灏惧厓绱犵殑鏃跺€欙紝闃熷熬鐨勫厓绱犱緷娆″脊鍑洪槦鍒楋紝鐩村埌闃熷熬鍏冪礌澶т簬褰撳墠褰撳墠鍏冪礌鐨勬椂鍊欙紝灏嗗綋鍓嶅厓绱犳彃鍏ラ槦灏?/p>

--tail1;

dq1[ ++tail1 ] = i; //鍙渶瑕佽褰曚笅鏍囧嵆鍙?/p>

while(front2 <= tail2 && a[ dq2[tail2] ] >= a[i]) //褰撳墠鍏冪礌灏忎簬鍗曡皟閫掑噺闃熷垪鐨勯槦灏惧厓绱犵殑鏃跺€欙紝闃熷熬鐨勫厓绱犱緷娆″脊鍑洪槦鍒楋紝鐩村埌闃熷熬鍏冪礌灏忎簬褰撳墠褰撳墠鍏冪礌鐨勬椂鍊欙紝灏嗗綋鍓嶅厓绱犳彃鍏ラ槦灏?/p>

--tail2;

dq2[ ++tail2 ] = i; //鍙渶瑕佽褰曚笅鏍囧嵆鍙?/p>

/*

Max - Min 涓轰袱涓槦鍒楃殑闃熼涔嬪樊

while(Max-Min>K) 鐪嬪摢涓殑闃熼鍏冪礌姣旇緝闈犲墠锛屽氨鎶婅皝寰€鍚庣Щ鍔?/p>

*/

while(a[ dq1[front1] ] - a[ dq2[front2] ] > k)

{

if(dq1[front1] < dq2[front2] )

{

start = dq1[front1] + 1;

++front1;

}

else

{

start = dq2[front2] + 1;

++front2;

}

}

if(a[ dq1[front1] ] - a[ dq2[front2] ] >= m)

{

if(i - start +1 > ans)

ans = i - start + 1;

}

}

printf("%d\n",ans);

}

return 0;

} 聽

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-3 21:54:38聽

鍘熸枃閾炬帴

闃呰锛?23 璇勮锛?聽

鏌ョ湅璇勮

聽[鍘焆瀹炰範鐢熸嫑鑱樼瑪璇?聽 1銆佽绠楄〃杈惧紡x6+4x4+2x3+x+1鏈€灏戦渶瑕佸仛锛堬級娆′箻娉?A銆?聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽B銆?聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 C銆?聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 D銆? 绗竴娆′箻娉曪細x^2锛岀浜屾涔樻硶锛歺^4=x^2 * x^2锛岀涓夋涔樻硶锛氬師寮?x^2 * (x^4+4x^2+2x)+x+1锛屾瘡涓€椤圭殑绯绘暟鍙互浣跨敤鍔犳硶鏉ュ疄鐜般€傘€?2銆佺粰瀹?涓猧nt绫诲瀷鐨勬鏁存暟x锛寉锛寊锛屽濡備笅4缁勮〃杈惧紡鍒ゆ柇姝g‘鐨勯€夐」锛堬級 Int a1=x+y-z; int b1=x*y/z; Int a2=x-z+y; int b2=x/z*y; Int c1=x<>z; int d1=x&y|z; Int c2=x>>z<

{

if(m == 0)

return n + 1;

else if(n == 0)

return ack(m-1,1);

else

return ack(m - 1 , ack(m , n-1));

} 杩欎釜棰樼洰鍙互鎵捐寰嬬殑銆傘€?聽 18銆佸涓婼QL璇彞鏄渶瑕佸垪鍑轰竴涓鍧涚増闈㈢涓€椤碉紙姣忛〉鏄剧ず20涓級鐨勫笘瀛愶紙post锛夋爣棰橈紙title锛夛紝骞舵寜鐓у彂甯冿紙create_time锛夐檷搴忔帓鍒楋細 SELECT title FROM post( )create_time DESC( )0,20聽聽聽聽order by聽 limit 聽 19銆佷负浜嗘煇椤圭洰闇€瑕侊紝鎴戜滑鍑嗗鏋勯€犱簡涓€绉嶉潰鍚戝璞$殑鑴氭湰璇█锛屼緥濡傦紝瀵规墍鏈夌殑鏁存暟锛屾垜浠兘閫氳繃Integer绫诲瀷鐨勫璞℃潵鎻忚堪銆傚湪璁$畻鈥?+2鈥濇椂锛岃繖閲岀殑鈥?鈥濓紝鈥?鈥濆拰缁撴灉鈥?鈥濆垎鍒负涓€涓狪nteger瀵硅薄銆備负浜嗛檷浣庤璁″鏉傚害锛屾垜浠喅瀹氳Integer瀵硅薄閮芥槸鍙瀵硅薄锛屼篃鍗冲湪璁$畻a=a+b鍚庯紝瀵硅薄a寮曠敤鐨勬槸涓€涓柊鐨勫璞★紝鑰岄潪鏀筧鎵€鎸囧璞$殑鍊笺€傝€冭檻鍒版€ц兘闂锛屾垜浠張寮曞叆涓ょ浼樺寲鏂规锛氾紙1锛夊浜庢暟鍊肩浉绛夌殑Integer瀵硅薄锛屾垜浠笉浼氶噸澶嶅垱寤恒€備緥濡傦紝璁$畻鈥?+1鈥濓紝杩欓噷涓や釜鈥?鈥濈殑寮曠敤鐨勬槸鍚屼竴涓璞♀€斺€旇繖绉嶈璁℃ā寮忓彨鍋氾紙锛夛紱锛?锛夎剼鏈瑷€瑙f瀽鍣ㄥ惎鍔ㄦ椂锛岄粯璁ゅ垱寤烘暟鍊艰寖鍥碵1,32]鐨?2涓狪nteger瀵硅薄銆傜幇鍦紝鍋囪鎴戜滑瑕佽绠楄〃杈惧紡鈥?+2+3+鈥?40鈥濓紝鍦ㄨ绠楄繃绋嬮渶瑕佸垱寤虹殑Integer瀵硅薄涓暟鏄紙锛夈€?浜厓妯″紡20銆佺敳銆佷箼涓や釜浜哄湪鐜╃寽鏁板瓧娓告垙锛岀敳闅忔満鍐欎簡涓€涓暟瀛楋紝鍦╗1锛?00]鍖洪棿涔嬪唴锛屽皢杩欎釜鏁板瓧鍐欏湪浜嗕竴寮犵焊涓婏紝鐒跺悗涔欐潵鐚溿€?濡傛灉涔欑寽鐨勬暟瀛楀亸灏忕殑璇濓紝鐢蹭細鎻愮ず锛氣€滄暟瀛楀亸灏忊€?涓€鏃︿箼鐚滅殑鏁板瓧鍋忓ぇ鐨勮瘽锛岀敳浠ュ悗灏卞啀涔熶笉浼氭彁绀轰簡锛屽彧浼氬洖绛斺€滅寽瀵?鎴?鐚滈敊鈥?闂細 涔欒嚦灏戠寽聽聽聽 澶氬皯娆÷?鐚滃彲浠ュ噯纭寽鍑鸿繖涓暟瀛楋紝鍦ㄨ繖绉嶇瓥鐣ヤ笅锛屄?涔欑寽鐨勭涓€涓暟瀛楁槸澶氬皯锛燂紵锛?绛旀锛氱寽娴嬪簭鍒楁槸14,銆?7銆?9銆?0銆?0銆?9銆?7銆?4銆?0銆?5銆?9 鍥犱负鏃犺绗嚑娆$寽澶т簡锛屾渶缁堢殑鎬绘鏁版€绘槸14銆偮犅犅犅?杩欎釜棰樼洰绫讳技浜庝竴閬揋oogle闈㈣瘯棰樎狅細聽聽鎵旂幓鐠冪悆姹傛渶楂樻ゼ灞傘€傘€?涓€閬撳叧浜庡姩鎬佽鍒掔殑闈㈣瘯棰樷€斺€擥oogle闈㈣瘯棰橈細鎵旂幓鐠冪彔鏌愬耿澶фゼ鏈?00灞傘€備綘鎵嬮噷鏈変袱棰椾竴妯′竴鏍风殑鐜荤拑鐝犮€傚綋浣犳嬁鐫€鐜荤拑鐝犲湪鏌愪竴灞傚線涓嬫墧鐨勬椂鍊欙紝涓€瀹氫細鏈変袱涓粨鏋滐紝鐜荤拑鐝犵浜嗘垨鑰呮病纰庛€傝繖骞㈠ぇ妤兼湁涓复鐣屾ゼ灞傘€備綆浜庡畠鐨勬ゼ灞傦紝寰€涓嬫墧鐜荤拑鐝狅紝鐜荤拑鐝犱笉浼氱锛岀瓑浜庢垨楂樹簬瀹冪殑妤煎眰锛屾墧涓嬬幓鐠冪彔锛岀幓鐠冪彔涓€瀹氫細纰庛€傜幓鐠冪彔纰庝簡灏变笉鑳藉啀鎵斻€傜幇鍦ㄨ浣犺璁′竴绉嶆柟寮忥紝浣垮緱鍦ㄨ鏂瑰紡涓嬶紝鏈€鍧忕殑鎯呭喌鎵旂殑娆℃暟姣斿叾浠栦换浣曟柟寮忔渶鍧忕殑娆℃暟閮藉皯銆備篃灏辨槸璁捐涓€绉嶆渶鏈夋晥鐨勬柟寮忋€傞鍏堬紝涓轰簡淇濆瓨涓嬩竴棰楃幓鐠冪彔鑷繁鐜╋紝灏遍噰鐢ㄦ渶绗ㄧ殑鍔炴硶鍚э細浠庣涓€灞傚紑濮嬭瘯锛屾瘡娆″鍔犱竴灞傦紝褰撳摢涓€灞傛墧涓嬬幓鐠冪彔鍚庣鎺変簡锛屼篃灏辩煡閬撲簡銆備笉杩囨渶鍧忕殑鎯呭喌鎵旂殑娆℃暟鍙兘涓?00銆傚綋鐒讹紝涓轰簡杩欎竴棰楃幓鐠冪彔浠d环涔熼珮浜嗙偣锛岃繕鏄噰鍙栧彟澶栦竴绉嶅姙娉曞惂銆傞殢渚挎寫涓€灞傦紝鍋囧涓篘灞傦紝鎵斾笅鍘诲悗锛屽鏋滅浜嗭紝閭e氨鍙兘浠庣涓€灞傚紑濮嬭瘯浜嗭紝鏈€鍧忕殑鎯呭喌鍙兘涓篘銆傚亣濡傛病纰庯紝灏变竴娆″鍔犱竴灞傜户缁墧鍚э紝杩欐椂鏈€鍧忕殑鎯呭喌涓?00-N銆備篃灏辨槸璇达紝閲囩敤杩欑鍔炴硶锛屾渶鍧忕殑鎯呭喌涓簃ax{N, 100-N+1}銆備箣鎵€浠ヨ鍔犱竴锛屾槸鍥犱负绗竴娆℃槸浠庣N灞傚紑濮嬫墧銆備笉杩囪繕鏄寰椾笉澶熷ソ锛岃繍姘斿ソ鐨勮瘽锛屾寫鍒扮殑N鍙兘鍒氬ソ鏄复鐣屾ゼ灞傦紝杩愭皵涓嶅ソ鐨勮瘽锛岃鎵旂殑娆℃暟杩樻槸寰堝銆備笉杩囧洖杩囧ご鐪嬬湅绗簩绉嶆柟寮忥紝鏈夋病鏈変粈涔堝彂鐜般€傚亣濡傛病鎽旂殑璇濓紝涓嶅涓嶈涓€娆″鍔犱竴灞傜户缁墧鍚э紝鑰屾槸閲囧彇鍙﹀涓€绉嶆柟寮忥細鎶婇棶棰樿浆鎹负100-N锛屽湪杩欓噷闈㈡壘涓寸晫妤煎眰锛岃繖鏍蜂笉灏辨妸闂杞崲鎴愮敤閫掑綊鐨勬柟寮忔潵瑙e喅鍚楋紵鐪嬩笅闈細鍋囧缁撴灉閮戒繚瀛樺湪F[101]杩欎釜鏁扮粍閲岄潰锛岄偅涔堬細F[N]=100-N锛孎[100]=min锛坢ax锛?锛?+F[N-1]锛夛紝max锛?锛?+F[N-2]锛夛紝鈥︹€︼紝max锛圢-1锛?+F[1]锛夛級;鐪嬪嚭鏉ヤ簡娌℃湁锛屽叾瀹炴渶缁堝氨鏄埄鐢ㄥ姩鎬佽鍒掓潵瑙e喅杩欎釜闂銆備笅闈㈡槸鑷繁闅忎究鍐欑殑C++浠g爜锛?聽 #include

using namespace std;

int dp[101] = { 0 };

void solve()

{

int i , j , k;

for(i = 2 ; i < 101 ; ++i)

{

dp[i] = i;

for(j = 1 ; j < i ; ++j)

{

k = (j>=(1 + dp[i-j])) ? j : (1 + dp[i-j]);

if(dp[i] > k)

dp[i] = k;

}

}

}

int main(void)

{

dp[0] = 0 , dp[1] = 1;

solve();

printf("%d\n",dp[100]);

return 0;

}杈撳嚭缁撴灉涓?4銆備篃灏辨槸璇达紝鏈€濂界殑鏂瑰紡鍙璇?4娆″氨鑳藉寰楀嚭缁撴灉浜嗐€?绛旀鏄厛浠?4妤煎紑濮嬫姏绗竴娆★紱濡傛灉娌$锛屽啀浠?7妤兼姏绗簩娆★紱濡傛灉杩樻病纰庯紝鍐嶄粠39妤兼姏绗笁娆★紱濡傛灉杩樻病纰庯紝鍐嶄粠50妤兼姏绗洓娆★紱濡傛锛屾瘡娆¢棿闅旂殑妤煎眰灏戜竴灞傘€傝繖鏍凤紝浠讳綍涓€娆℃姏妫嬪瓙纰庢椂锛岄兘鑳界‘淇濇渶澶氭姏14娆″彲浠ユ壘鍑轰复鐣屾ゼ灞傘€?璇佹槑濡備笅锛?1銆佺涓€娆℃姏妫嬪瓙鐨勬ゼ灞傦細鏈€浼樼殑閫夋嫨蹇呯劧鏄棿闅旀渶澶х殑妤煎眰銆傛瘮濡傦紝绗竴娆″鏋滃湪m灞傛姏涓嬫瀛愶紝浠ュ悗鍐嶆姏妫嬪瓙鏃朵袱娆℃ゼ灞傜殑闂撮殧蹇呯劧涓嶅ぇ浜巑灞傦紙澶у鍙互鑷繁鐢ㄥ弽璇佹硶绠€鍗曡瘉鏄庯級 2銆佷粠绗簩娆℃姏妫嬪瓙鐨勯棿闅旀ゼ灞傛渶浼樼殑閫夋嫨蹇呯劧姣旂涓€娆¢棿闅斿皯涓€灞傦紝绗笁娆$殑妤煎眰闂撮殧姣旂浜屾闂撮殧灏戜竴灞傦紝濡傛锛屼互鍚庢瘡娆℃姏妫嬪瓙妤煎眰闂撮殧姣斾笂涓€娆¢棿闅斿皯涓€灞傘€傦紙澶у涓嶅Θ鑷繁璇佹槑涓€涓嬶級 3銆佹墍浠ワ紝璁緉鏄涓€娆℃姏妫嬪瓙鐨勬渶浣虫ゼ灞傦紝鍒檔鍗充负婊¤冻涓嬪垪涓嶇瓑寮忕殑鏈€灏忚嚜鐒舵暟锛?聽 涓嶇瓑寮忓涓嬶細聽 1+2+3+...+(n-1)+n聽 >=聽聽 100 鐢变笂寮忓彲寰楀嚭n=14 鍗虫渶浼樼殑绛栫暐鏄厛浠庣14灞傛姏涓嬶紝鏈€澶氭姏14娆¤偗瀹氳兘鎵惧嚭涓寸晫妤煎眰銆?聽 聽 聽 聽 21銆佺粰瀹氫竴涓暟缁刟[N],鎴戜滑甯屾湜鏋勯€犳暟缁刡[N]锛屽叾涓璪[i]=a[0]*a[1]*...*a[N-1]/a[i]銆傚湪鏋勯€犺繃绋嬶細 涓嶅厑璁镐娇鐢ㄩ櫎娉曪紱 瑕佹眰O(1)绌洪棿澶嶆潅搴﹀拰O(n)鏃堕棿澶嶆潅搴︼紱 闄ら亶鍘嗚鏁板櫒涓巃[N] b[N]澶栵紝涓嶅彲浣跨敤鏂扮殑鍙橀噺(鍖呮嫭鏍堜复鏃跺彉閲忋€佸绌洪棿鍜屽叏灞€闈欐€佸彉閲忕瓑)锛?璇风敤绋嬪簭瀹炵幇骞剁畝鍗曟弿杩般€?聽 /*

鎬濊矾锛氳繘琛?瓒熸壂鎻?/p>

绗竴瓒熶粠宸﹀埌鍙冲A杩涜绱箻锛岀粨鏋滀繚瀛樺湪B鏁扮粍涓紝b[i] = b[i-1]*a[i-1]锛?/p>

绗簩瓒熶粠鍙冲埌宸﹀A杩涜绱箻锛岀粨鏋滃啓鍏涓?a[i]=a[i+1]*a[i]锛?/p>

绗笁瓒熶粠宸﹀埌鍙?鐒跺悗B鏁扮粍瀵瑰簲浣嶇疆鐨勫厓绱犵瓑浜庡叾鍓嶄竴涓綅缃殑鍏冪礌涓嶢涓叾鍚庝竴涓綅缃殑鍏冪礌鐨勪箻绉€俠[i] = a[i+1] * b[i-1]

*/

void makeArray(int a[],int b[],int len)

{

int i;

b[0] = 1;

for(i = 1 ; i < len ; ++i)

b[i] = b[i-1] * a[i-1]; // b[0] = 1 , b[i] = a[0]*a[1]*...*a[i-1]

a[len - 1] = a[len - 1]^a[len - 2]; //涓嶄娇鐢ㄤ腑闂村彉閲忥紝閫氳繃浣嶈繍绠楁潵浜ゆ崲涓や釜鍙橀噺

a[len - 2] = a[len - 1]^a[len - 2];

a[len - 1] = a[len - 1]^a[len - 2];

for(i = len - 3 ; i >= 0 ; --i)

{

a[len - 1] = a[i + 1] * a[len - 1];

a[i] = a[i]^a[len - 1]; //浜ゆ崲涓や釜鍙橀噺

a[len - 1] = a[i]^a[len - 1];

a[i] = a[i]^a[len - 1];

}

a[len - 1 ] = 1; //a[len - 1 ] = 1 , a[i] = a[i+1]*a[i+2]*...*a[len-1]

for(i = 0 ; i < len ; ++i)

b[i] = a[i] * b[i];

} 鏂规硶浜岋細 聽 //鏂规硶浜岋紝淇濇寔a鏁扮粍涓嶅彉

void makeArray(int a[],int b[],int len)

{

int i;

b[0] = 1;

for(i = 1 ; i < len ; ++i)

{

b[0] *= a[i-1];

b[i] = b[0]; // b[i] = a[0]*a[1]*...*a[i-1]

}

b[0] = 1;

for(i = len - 2 ; i > 0 ; --i)

{

b[0] *= a[i+1]; // b[0] = a[i+1]*a[i+2]...*a[len-1]

b[i] *= b[0]; // b[i] = a[0]*a[1]*...*a[i-1]*a[i+1]*...*a[len-1]

}

b[0] *= a[1];

} 鏂规硶涓夛細 聽 void makeArray(int a[],int b[],int len)

{

int i;

b[0] = 1;

for(i = 1 ; i < len ; ++i)

{

b[i] = b[i-1] * a[i-1]; // b[i] = a[0]*a[1]*...*a[i-1]

}

b[0] = a[len - 1];

for(i = len - 2 ; i > 0 ; --i)

{

b[i] *= b[0]; // b[i] = a[0]*a[1]*...*a[i-1]*a[i+1]*...*a[len-1]

b[0] *= a[i]; // b[0] = a[i+1]*a[i+2]...*a[len-1]

}

}22銆?0涓栫邯60骞翠唬锛岀編鍥藉績鐞嗗瀹剁背灏旀牸鍏板璁捐浜嗕竴涓繛閿佷俊浠跺疄楠屻€傜背灏旀牸鍏板鎶婁俊闅忓嵆鍙戦€佺粰浣忓湪缇庡浗鍚勫煄甯傜殑涓€閮ㄥ垎灞呮皯锛屼俊涓啓鏈変竴涓尝澹】鑲$エ缁忕邯浜虹殑鍚嶅瓧锛屽苟瑕佹眰姣忓悕鏀朵俊浜烘妸杩欏皝淇″瘎缁欒嚜宸辫涓烘槸姣旇緝鎺ヨ繎杩欏悕鑲$エ缁忕邯浜虹殑鏈嬪弸銆傝繖浣嶆湅鍙嬫敹鍒颁俊鍚庡啀鎶婁俊瀵勭粰浠栬涓烘洿鎺ヨ繎杩欏悕鑲$エ缁忕邯浜虹殑鏈嬪弸銆傛渶缁堬紝澶ч儴鍒嗕俊浠堕兘瀵勫埌浜嗚繖鍚嶈偂绁ㄧ粡绾汉鎵嬩腑锛屾瘡灏佷俊骞冲潎缁忓彈6.2璇嶅埌杈俱€備簬鏄紝绫冲皵鏍煎叞濮嗘彁鍑哄叚搴﹀垎鍓茬悊璁猴紝璁や负涓栫晫涓婁换鎰忎袱涓汉涔嬮棿寤虹珛鑱旂郴鏈€澶氬彧闇€瑕?涓汉銆?鍋囪QQ鍙峰ぇ姒傛湁10浜夸釜娉ㄥ唽鐢ㄦ埛锛屽瓨鍌ㄥ湪涓€鍗冨彴鏈哄櫒涓婄殑鍏崇郴鏁版嵁搴撲腑锛屾瘡鍙版満鍣ㄥ瓨鍌ㄤ竴鐧句竾涓敤鎴峰強鍏剁殑濂藉弸淇℃伅锛屽亣璁剧敤鎴风殑骞冲潎濂藉弸涓暟澶х害涓?5浜哄乏鍙炽€?绗竴闂細璇蜂綘璁捐涓€涓柟妗堬紝灏藉彲鑳藉揩鐨勮绠楀瓨鍌ㄤ换鎰忎袱涓猀Q鍙蜂箣闂存槸鍚﹀叚搴︼紙濂藉弸鏄?搴︼級鍙揪锛屽苟寰楀嚭杩欎袱浣嶇敤鎴峰叚搴﹀彲杈剧殑璇濓紝鏈€鐭槸鍑犲害鍙揪銆?绗簩闂細鎴戜滑甯屾湜寰楀埌骞冲潎姣忎釜鐢ㄦ埛鐨刵搴﹀ソ鍙嬩釜鏁帮紝浠ュ鍔犲鐢ㄦ埛鏇村鐨勪簡瑙o紝鐜板湪濡傛灉姣忓彴鏈哄櫒涓€绉掗挓鍙互杩斿洖涓€鍗冩潯鏌ヨ缁撴灉锛岄偅涔堝湪10澶╃殑鏃堕棿鍐咃紝鍒╃敤缁欏嚭鐨勭‖浠舵潯浠讹紝鍙互缁熻鍑虹敤鎴风殑鏈€澶氬嚑搴﹀ソ鍙嬩釜鏁帮紵濡傛灉甯屾湜寰楀埌鏇撮珮鐨勫钩鍧噉搴﹀ソ鍙嬩釜鏁帮紝鍙互鎬庢牱鏀硅繘鏂规锛?23銆佹椤靛紡铏氭嫙瀛樺偍绠$悊鏂规鐨勭壒鐐广€?绛旓細绌洪棿娴垂灏忋€佸瓨鍌ㄥ叡浜鏄撱€佸瓨鍌ㄤ繚鎶ゅ鏄撱€佽兘鍔ㄦ€佽繛鎺ャ€?聽聽聽聽聽聽 娈甸〉寮忕鐞嗘槸娈靛紡绠$悊鍜岄〉寮忕鐞嗙粨鍚堣€屾垚锛屽吋鏈夋寮忓拰椤靛紡绠$悊鐨勪紭鐐癸紝姣忎竴娈靛垎鎴愯嫢骞查〉锛屽啀鎸夐〉寮忕鐞嗭紝椤甸棿涓嶈姹傝繛缁?鑳藉姩鎬佽繛鎺?;鐢ㄥ垎娈垫柟娉曞垎閰嶇鐞嗕綔涓氾紝鐢ㄥ垎椤垫柟娉曞垎閰嶇鐞嗗唴瀛?绌洪棿娴垂灏?銆?聽聽聽聽聽聽 娈甸〉寮忕鐞嗛噰鐢ㄤ簩缁村湴鍧€绌洪棿锛屽娈靛彿(S)銆侀〉鍙?P)鍜岄〉鍐呭崟鍏冨彿(D);绯荤粺寤轰袱寮犺〃鏍兼瘡涓€浣滀笟涓€寮犳琛紝姣忎竴娈靛缓绔嬩竴寮犻〉琛紝娈佃〃鎸囧嚭璇ユ鐨勯〉琛ㄥ湪鍐呭瓨涓殑浣嶇疆;鍦板潃鍙樻崲鏈烘瀯绫讳技椤靛紡鏈哄埗锛屽彧鏄墠闈㈠鍔犱竴椤规鍙枫€傛墍浠ュ瓨鍌ㄥ叡浜鏄撱€佸瓨鍌ㄤ繚鎶ゅ鏄撱€?/p>

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-8 22:35:48聽

鍘熸枃閾炬帴

闃呰锛?674 璇勮锛?1聽

鏌ョ湅璇勮

聽[鍘焆2011Google鏍″洯鎷涜仒绗旇瘯棰?1銆佸凡鐭ヤ袱涓暟瀛椾负1~30涔嬮棿鐨勬暟瀛楋紝鐢茬煡閬撲袱鏁颁箣鍜岋紝涔欑煡閬撲袱鏁颁箣绉紝鐢查棶涔欙細鈥滀綘鐭ラ亾鏄摢涓や釜鏁板悧锛熲€濅箼璇达細鈥滀笉鐭ラ亾鈥濄€備箼闂敳锛氣€滀綘鐭ラ亾鏄摢涓や釜鏁板悧锛熲€濈敳璇达細鈥滀篃涓嶇煡閬撯€濄€備簬鏄紝涔欒锛氣€滈偅鎴戠煡閬撲簡鈥濓紝闅忓悗鐢蹭篃璇达細鈥滈偅鎴戜篃鐭ラ亾浜嗏€濓紝杩欎袱涓暟鏄粈涔堬紵 绛旓細1鍜? 鎴栬€?鍜? 2銆佷竴涓幆褰㈠叕璺紝涓婇潰鏈夛籍涓珯鐐癸紝A1, ..., AN锛屽叾涓瑼i鍜孉i+1涔嬮棿鐨勮窛绂讳负Di,AN鍜孉1涔嬮棿鐨勮窛绂讳负D0銆?楂樻晥鐨勬眰绗琲鍜岀j涓珯鐐逛箣闂寸殑璺濈锛岀┖闂村鏉傚害涓嶈秴杩嘜(N) 瀹冪粰鍑轰簡閮ㄥ垎浠g爜濡備笅锛?#define N 25 double D[N]聽 .... void Preprocess() { 聽聽聽聽 //Write your code1; } double Distance(int i, int j) { 聽聽聽聽聽 //Write your code2; } 聽 const int N = 10;

int D[N];

int A1toX[N];

void Preprocess()

{

srand(time(0));

for (int i = 0; i < N; ++i)

{

D[i] = (rand()/(RAND_MAX+1.0)) * N;

}

A1toX[1] = D[1]; //from A1 to A2

for (int i = 2; i < N; ++i)

{

A1toX[i] = A1toX[i-1] + D[i]; //distance from A1 to each point

}

A1toX[0] = A1toX[N-1] + D[0]; // total length

}

int distance(int i, int j)

{

int di = (i == 0) ? 0 : A1toX[i-1];

int dj = (j ==0) ? 0 : A1toX[j-1];

int dist = abs(di - dj);

return dist > A1toX[0]/2 ? A1toX[0] - dist : dist;

}

int main(void)

{

Preprocess();

for (int i = 0; i

{

cout<

}

cout<

for (int i = 1; i <= N; ++i)

{

cout<<"distance from A1 to A"<

}

return 0;

} 3銆?涓€涓瓧绗︿覆锛屽帇缂╁叾涓殑杩炵画绌烘牸涓?涓悗锛屽鍏朵腑鐨勬瘡涓瓧涓查€嗗簭鎵撳嵃鍑烘潵銆傛瘮濡?abc聽聽 efg聽 hij"鎵撳嵃涓?cba gfe jih"銆?聽 #include

#include

#include

#include

using namespace std;

string reverse(string str)

{

stack stk;

int len = str.length();

string ret = "";

for (int p = 0, q = 0;p < len;)

{

if (str[p] == ' ')

{

ret.append(1,' ');

for (q = p; q < len && str[q] == ' '; q++)

{}

p = q;

}

else

{

for (q = p; q < len && str[q] != ' '; q++)

{

stk.push(str[q]);

}

while(!stk.empty())

{

ret.append(1,stk.top());

stk.pop();

}

p = q;

}

}

return ret;

}

int main(void)

{

string s = "abc def ghi";

cout<

return 0;

} 4銆佸皢涓€涓緝澶х殑閽憋紝涓嶈秴杩?000000(10^6)鐨勪汉姘戝竵锛屽厬鎹㈡垚鏁伴噺涓嶉檺鐨?00銆?0銆?0銆?銆?銆?鐨勭粍鍚堬紝璇烽棶鍏辨湁澶氬皯绉嶇粍鍚堝憿锛燂紙瀹屽叏鑳屽寘锛夛紙鍏跺畠閫夋嫨棰樿€冪殑鏄湁鍏筹細鎿嶄綔绯荤粺銆佹爲銆佹鐜囬銆佹渶澶х敓鎴愭爲鏈夊叧鐨勯锛屽彟澶栧惉鑰佹ⅵ璇达紝璋锋瓕涓嶇粰浜洪湼绗旂殑鏈轰細銆傦級銆偮?聽

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-9 21:21:26聽

鍘熸枃閾炬帴

闃呰锛?15 璇勮锛?聽

鏌ョ湅璇勮

聽[鍘焆寰蒋2012鏆戞湡瀹炰範鐢熸牎鍥嫑鑱樼瑪璇曢1銆丼uppose that a selection sort of 80 items has completed 32 iterations of the main loop. How many items are now guaranteed to be in their final spot (never to be moved again)? A銆?6聽聽聽 B銆?1聽聽聽C銆?2聽聽聽聽 D銆?9聽聽 E銆?0 2銆乄hich synchronization mechanism(s) is/are used to avoid race conditions among processes/threads in operating system?A銆丮utex聽聽聽聽 B銆丮ailbox聽聽聽聽 C銆丼emaphore聽聽聽聽聽 D銆丩ocal procedure call 3銆乀here is a sequence of n numbers 1,2,3,...,n and a stack which can keep m numbers at most. Push the n numbers into the stack following the sequence and pop out randomly . Suppose n is 2 and m is 3,the output sequence may be 1,2 or 2,1,so we get 2 different sequences . Suppose n is 7,and m is 5,please choose the output sequence of the stack.A銆?,2,3,4,5,6,7B銆?,6,5,4,3,2,1C銆?,6,4,3,7,2,1D銆?,7,6,5,4,3,2 E銆?,2,1,7,5,6,4 4銆乄hich is the result of binary number 01011001 after multiplying by 0111001 and adding 1101110?A銆?001010000111111 B銆?101011101110011C銆?011010000110101 杞寲涓?0杩涘埗鎿嶄綔浠ュ悗锛屽啀杞寲涓轰簩杩涘埗灏卞彲浠ヤ簡銆?5銆乄hat is output if you compile and execute the following c code? 聽 void main()

{

int i = 11;

int const *p = &i;

p++;

printf("%d",*p);

}A銆?1 B銆?2C銆丟arbage value D銆丆ompile error E銆丯one of above6銆乄hich of following C++ code is correct ?聽聽C A銆?int f()

{

int *a = new int(3);

return *a;

}B銆乮nt *f()

{

int a[3] = {1,2,3};

return a;

}C銆乿ector f()

{

vector v(3);

return v;

}D銆乿oid f(int *ret)

{

int a[3] = {1,2,3};

ret = a;

return ;

} E銆丯one of above 7銆丟iven that the 180-degree rotated image of a 5-digit number is another 5-digit number and the difference between the numbers is 78633, what is the original 5-digit number锛?A銆?0918聽聽 B銆?1086聽聽聽 C銆?8609聽聽聽聽D銆?0968聽聽聽 E銆?6901 8銆乄hich of the following statements are trueA銆乄e can create a binary tree from given inorder and preorder traversal sequences. B銆乄e can create a binary tree from given preorder and postorder traversal sequences.C銆丗or an almost sorted array,Insertion sort can be more effective than Quciksort. D銆丼uppose T(n) is the runtime of resolving a problem with n elements, T(n)=O(1) if n=1; T(n)=2*T(n/2)+O(n) if n>1; so T(n) is O(nlgn) E銆丯one of above 9銆乄hich of the following statements are true? A銆両nsertion sort and bubble sort are not efficient for large data sets.B銆丵ucik sort makes O(n^2) comparisons in the worst case. C銆乀here is an array :7,6,5,4,3,2,1. If using selection sort (ascending),the number of swap operations is 6D銆丠eap sort uses two heap operations:insertion and root deletion 锛堟彃鍏ャ€佸爢璋冩暣锛?E銆丯one of above 10銆丄ssume both x and y are integers,which one of the followings returns the minimum of the two integers?A銆亂^((x^y) & -(xy鐨勬椂鍊欙紝-锛坸

{

public:

____ int a;

____ int b;

public:

Test::Test(int _a , int _b) : a( _a )

{

b = _b;

}

};

int Test::b;

int main(void)

{

Test t1(0 , 0) , t2(1 , 1);

t1.b = 10;

t2.b = 20;

printf("%u %u %u %u",t1.a , t1.b , t2.a , t2.b);

return 0;

} Running result : 0聽聽 20聽聽 1聽聽 20 聽 A銆乻tatic/const B銆乧onst/static C銆?-/static D銆乧onststatic/static E銆丯one of above 13銆丄 3-order B-tree has 2047 key words,what is the maximum height of the tree? A銆?1聽聽聽聽 B銆?2聽聽聽聽 C銆?3聽聽聽 D銆?4 14銆両n C++,which of the following keyword(s锛塩an be used on both a variable and a function?A銆乻tatic聽聽 B銆乿irtual聽聽聽C銆乪xtern聽聽聽 D銆乮nline聽聽聽E銆乧onst 15銆乄hat is the result of the following program?char *f(char *str , char ch)

{

char *it1 = str;

char *it2 = str;

while(*it2 != '\0')

{

while(*it2 == ch)

{

it2++;

}

*it1++ = *it2++;

}

return str;

}

int main(void)

{

char *a = new char[10];

strcpy(a , "abcdcccd");

cout<

return 0;

}A銆乤bdcccd B銆乤bdd C銆乤bccD銆乤bddcccd E銆丄ccess violation16銆丆onsider the following definition of a recursive function,power,that will perform exponentiation. 聽 int power(int b , int e)

{

if(e == 0)

return 1;

if(e % 2 == 0)

return power(b*b , e/2);

else

return b * power(b*b , e/2);

}Asymptotically锛堟笎杩涘湴锛?in terms of the exponent e,the number of calls to power that occur as a result of the call power(b,e) isA銆乴ogarithmic B銆乴inear C銆乹uadratic D銆乪xponential 17銆丄ssume a full deck of cards has 52 cards,2 blacks suits (spade and club) and 2 red suits(diamond and heart). If you are given a full deck,and a half deck(with 1 red suit and 1 black suit),what is the possibility for each one getting 2 red cards if taking 2 cards? A銆?/2聽聽聽聽聽 1/2 B銆?5/102聽 12/50 C銆?0/51聽聽 24/25 D銆?5/51聽聽 12/25 E銆?5/51聽聽聽 1/2 18銆乀here is a stack and a sequence of n numbers(i.e. 1,2,3,...,n), Push the n numbers into the stack following the sequence and pop out randomly . How many different sequences of the n numbers we may get? Suppose n is 2 , the output sequence may 1,2 or 2,1, so wo get 2 different sequences . A銆丆_2n^nB銆丆_2n^n - C_2n^(n+1) C銆?(2n)!)/(n+1)n!n! D銆乶! E銆丯one of above 19銆丩ongest Increasing Subsequence(LIS) means a sequence containing some elements in another sequence by the same order, and the values of elements keeps increasing. For example, LIS of {2,1,4,2,3,7,4,6} is {1,2,3,4,6}, and its LIS length is 5. Considering an array with N elements , what is the lowest time and space complexity to get the length of LIS锛?A銆乀ime : N^2 , Space : N^2 B銆乀ime : N^2 , Space : NC銆乀ime : NlogN , Space : N D銆乀ime : N , Space : N E銆乀ime : N , Space : C20銆乄hat is the output of the following piece of C++ code 锛?聽 #include

using namespace std;

struct Item

{

char c;

Item *next;

};

Item *Routine1(Item *x)

{

Item *prev = NULL,

*curr = x;

while(curr)

{

Item *next = curr->next;

curr->next = prev;

prev = curr;

curr = next;

}

return prev;

}

void Routine2(Item *x)

{

Item *curr = x;

while(curr)

{

cout<c<<" ";

curr = curr->next;

}

}

int main(void)

{

Item *x,

d = {'d' , NULL},

c = {'c' , &d},

b = {'b' , &c},

a = {'a' , &b};

x = Routine1( &a );

Routine2( x );

return 0;

} 聽 A銆?c b a d B銆?b a d c聽 C銆?d b c a聽 D銆?a b c dE銆?d c b a聽

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-9 22:20:22聽

鍘熸枃閾炬帴

闃呰锛?095 璇勮锛?3聽

鏌ョ湅璇勮

聽[鍘焆Catalan鏁扳€斺€斿崱鐗瑰叞鏁癈atalan鏁扳€斺€斿崱鐗瑰叞鏁奥?浠婂ぉ闃块噷娣樺疂绗旇瘯涓鍒颁袱閬撶粍鍚堟暟瀛﹂锛屾劅瑙夐潪甯镐翰鍒囷紝浣嗘槸绗旇瘯涓け韪帹瀵间笉鍑烘潵 鍚庢潵鏌ヤ簡涓嬶紝鍘熸潵鏄疌atalan鏁般€傛偛鍓у晩锛岀幇鍦ㄦ暣鐞嗕竴涓?涓€銆丆atalan鏁扮殑瀹氫箟浠(1)=1锛孋atalan鏁版弧瓒抽€掑綊寮忥細h(n) = h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1)锛宯>=2璇ラ€掓帹鍏崇郴鐨勮В涓猴細h(n) = C(2n-2,n-1)/n锛宯=1,2,3,...锛堝叾涓瑿(2n-2,n-1)琛ㄧず2n-2涓腑鍙杗-1涓殑缁勫悎鏁帮級 闂鎻忚堪: 12涓珮鐭笉鍚岀殑浜猴紝鎺掓垚涓ゆ帓锛屾瘡鎺掑繀椤绘槸浠庣煯鍒伴珮鎺掑垪锛岃€屼笖绗簩鎺掓瘮瀵瑰簲鐨勭涓€鎺掔殑浜洪珮锛岄棶鎺掑垪鏂瑰紡鏈夊灏戠锛?杩欎釜绗旇瘯棰橈紝寰圷D锛屽洜涓烘妸鏌愪釜閫掓帹鍏崇郴闅愯棌寰楀緢娣便€?闂鍒嗘瀽: 鎴戜滑鍏堟妸杩?2涓汉浠庝綆鍒伴珮鎺掑垪,鐒跺悗,閫夋嫨6涓汉鎺掑湪绗竴鎺?閭d箞鍓╀笅鐨?涓偗瀹氭槸鍦ㄧ浜屾帓. 鐢?琛ㄧず瀵瑰簲鐨勪汉鍦ㄧ涓€鎺?鐢?琛ㄧず瀵瑰簲鐨勪汉鍦ㄧ浜屾帓,閭d箞鍚湁6涓?,6涓?鐨勫簭鍒?灏卞搴斾竴绉嶆柟妗? 姣斿000000111111灏卞搴旂潃 绗竴鎺掞細0 1 2 3 4 5 绗簩鎺掞細6 7 8 9 10 11 010101010101灏卞搴旂潃 绗竴鎺掞細0 2 4 6 8 10 绗簩鎺掞細1 3 5 7 9 11 闂杞崲涓猴紝杩欐牱鐨勬弧瓒虫潯浠剁殑01搴忓垪鏈夊灏戜釜銆?瑙傚療1鐨勫嚭鐜帮紝鎴戜滑鑰冭檻杩欎竴涓嚭鐜拌兘涓嶈兘鏀惧湪绗簩鎺掞紝鏄剧劧锛屽湪杩欎釜1涔嬪墠鍑虹幇鐨勯偅浜?,1瀵瑰簲鐨勪汉 瑕佷箞鏄湪杩欎釜1宸﹁竟锛岃涔堟槸鍦ㄨ繖涓?鍓嶉潰銆傝€岃偗瀹氳鏈変竴涓?鐨勶紝鍦ㄨ繖涓?鍓嶉潰锛岀粺璁″湪杩欎釜1涔嬪墠鐨?鍜?鐨勪釜鏁般€?涔熷氨鏄姹傦紝0鐨勪釜鏁板ぇ浜?鐨勪釜鏁般€?OK锛岄棶棰樺凡缁忚В鍐炽€?濡傛灉鎶?鐪嬫垚鍏ユ爤鎿嶄綔锛?鐪嬫垚鍑烘爤鎿嶄綔锛屽氨鏄缁欏畾6涓厓绱狅紝鍚堟硶鐨勫叆鏍堝嚭鏍堝簭鍒楁湁澶氬皯涓€?杩欏氨鏄痗atalan鏁?杩欓噷鍙槸鐢ㄤ簬鏍堬紝绛変环鍦版弿杩拌繕鏈夛紝浜屽弶鏍戠殑鏋氫妇銆佸杈瑰舰鍒嗘垚涓夎褰㈢殑涓暟銆佸渾鎷姬鎻掑叆鍏紡涓殑鏂规硶鏁帮紝鍏堕€氶」鏄痗(2n, n)/(n+1). 鍦?<璁$畻鏈虹▼搴忚璁¤壓鏈?>,绗笁鐗?Donald E.Knuth钁?鑻忚繍闇栬瘧,绗竴鍗?508椤?缁欏嚭浜嗚瘉鏄? 闂澶ф剰鏄敤S琛ㄧず鍏ユ爤锛孹琛ㄧず鍑烘爤锛岄偅涔堝悎娉曠殑搴忓垪鏈夊灏戜釜(S鐨勪釜鏁颁负n) 鏄剧劧鏈塩(2n, n)涓惈S锛孹鍚刵涓殑搴忓垪锛屽墿涓嬬殑鏄绠椾笉鍏佽鐨勫簭鍒楁暟(瀹冨寘鍚纭釜鏁扮殑S鍜孹锛屼絾鏄繚鑳屽叾瀹冩潯浠?. 鍦ㄤ换浣曚笉鍏佽鐨勫簭鍒椾腑锛屽畾鍑轰娇寰梄鐨勪釜鏁拌秴杩嘢鐨勪釜鏁扮殑绗竴涓猉鐨勪綅缃€傜劧鍚庡湪瀵艰嚧骞跺寘鎷繖涓猉鐨勯儴鍒嗗簭鍒椾腑锛屼互S浠f浛鎵€鏈夌殑X骞朵互X浠h〃鎵€鏈夌殑S銆傜粨鏋滄槸涓€涓湁(n+1)涓猄鍜?n-1)涓猉鐨勫簭鍒椼€傚弽杩囨潵锛屽涓€鍨竴绉嶇被鍨嬬殑姣忎釜搴忓垪锛屾垜浠兘鑳介€嗚浆杩欎釜杩囩▼锛岃€屼笖鎵惧嚭瀵艰嚧瀹冪殑鍓嶄竴绉嶇被鍨嬬殑涓嶅厑璁稿簭鍒椼€備緥濡俋XSXSSSXXSSS蹇呯劧鏉ヨ嚜SSXSXXXXXSSS銆傝繖涓搴旇鏄庯紝涓嶅厑璁哥殑搴忓垪鐨勪釜鏁版槸c(2n, n-1)锛屽洜姝n = c(2n, n) - c(2n, n-1)銆傞獙璇侊細鍏朵腑F琛ㄧず鍓嶆帓锛孊琛ㄧず鍚庢帓锛屽湪鏋氫妇鍑哄墠鎺掔殑浜轰箣鍚庯紝瀵瑰簲鐨勫氨鏄悗鎺掔殑浜轰簡锛岀劧鍚庡啀楠岃瘉鏄笉鏄弧瓒冲悗闈㈢殑姣斿墠闈㈠搴旂殑浜洪珮鐨勮姹傘€?聽 #include

using namespace std;

int bit_cnt(int n)

{

int result = 0;

for (; n; n &= n-1, ++result);

return result;

}

int main(void)

{

int F[6], B[6];

int i,j,k,state,ok,ans = 0;

for (state = 0; state < (1 << 12); ++state)

{

if (bit_cnt(state) == 6)

{

i = j = 0;

for (int k = 0; k < 12; ++k)

{

if(state&(1<

F[i++] = k;

else

B[j++] = k;

}

ok = 1;

for (k = 0; k < 6; ++k)

{

if (B[k] < F[k])

{

ok = 0;

break;

}

}

ans += ok;

}

}

cout << ans << endl;

return 0;

} 缁撴灉锛?32 鑰宑(12, 6)/7 = 12*11*10*9*8*7/(7*6*5*4*3*2) = 132 娉ㄦ剰锛歝(2n, n)/(n+1) = c(2n, n) - c(2n, n-1) 浼拌鍑洪鐨勪汉涔熻杩?<璁$畻鏈虹▼搴忚壓鏈?>鍚с€?PS锛?鍙︿竴涓緢YD鐨勯棶棰? 鏈夌紪鍙蜂负1鍒皀(n鍙互寰堝ぇ锛屼笉濡ㄥ湪杩欓噷鍋囧畾鍙互杈惧埌10浜?鐨勮嫢骞蹭釜鏍煎瓙锛屼粠宸﹀埌鍙虫帓鍒椼€?鍦ㄦ煇浜涙牸瀛愪腑鏈変竴涓瀛愶紝涓嶅Θ璁剧xi鏍兼湁妫嬪瓙(1<=i<=k, 1<=k<=n) 姣忔涓€涓汉鍙互鎶婁竴涓瀛愬線宸︾Щ鑻ュ共姝ワ紝浣嗘槸涓嶈兘璺ㄨ秺鍏跺畠妫嬪瓙锛屼篃瑕佷繚璇佹瘡涓牸瀛愯嚦澶氬彧鏈変竴涓瀛愩€?涓や釜浜鸿疆娴佺Щ鍔紝绉诲姩涓嶄簡鐨勪负杈擄紝闂厛鎵嬫槸涓嶆槸鏈夊繀鑳滅瓥鐣ャ€?涓夈€丆atalan鏁扮殑鍏稿瀷搴旂敤锛?銆佹嫭鍙峰寲闂銆傜煩闃甸摼涔橈細 P=A1脳A2脳A3脳鈥︹€γ桝n锛屼緷鎹箻娉曠粨鍚堝緥锛屼笉鏀瑰彉鍏堕『搴忥紝鍙敤鎷彿琛ㄧず鎴愬鐨勪箻绉紝璇曢棶鏈夊嚑绉嶆嫭鍙峰寲鐨勬柟妗堬紵聽 聽聽聽聽涓€涓湁n涓猉鍜宯涓猋缁勬垚鐨勫瓧涓诧紝涓旀墍鏈夌殑閮ㄥ垎瀛椾覆鐨嗘弧瓒砐鐨勪釜鏁板ぇ浜庣瓑浜嶻鐨勪釜鏁般€備互涓嬩负闀垮害涓?鐨刣yck words: 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 XXXYYY聽聽聽聽 XYXXYY聽聽聽 XYXYXY聽聽聽 XXYYXY聽聽聽 XXYXYY 聽聽聽 灏嗕笂渚嬬殑X鎹㈡垚宸︽嫭鍙凤紝Y鎹㈡垚鍙虫嫭鍙凤紝Cn琛ㄧず鎵€鏈夊寘鍚玭缁勬嫭鍙风殑鍚堟硶杩愮畻寮忕殑涓暟锛?聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ((())) 聽 聽 ()(())聽聽聽聽聽 ()()() 聽 聽聽 (())()聽聽聽聽聽 (()()) 2銆佸皢澶氳竟琛屽垝鍒嗕负涓夎褰㈤棶棰樸€傚皢涓€涓嚫澶氳竟褰㈠尯鍩熷垎鎴愪笁瑙掑舰鍖哄煙(鍒掑垎绾夸笉浜ゅ弶)鐨勬柟娉曟暟?聽绫讳技锛氬湪鍦嗕笂閫夋嫨2n涓偣,灏嗚繖浜涚偣鎴愬杩炴帴璧锋潵浣垮緱鎵€寰楀埌鐨刵鏉$嚎娈典笉鐩镐氦鐨勬柟娉曟暟? 3銆佸嚭鏍堟搴忛棶棰樸€備竴涓爤(鏃犵┓澶?鐨勮繘鏍堝簭鍒椾负1銆?銆?銆?..銆乶锛屾湁澶氬皯涓笉鍚岀殑鍑烘爤搴忓垪? 绫讳技锛氭湁2n涓汉鎺掓垚涓€琛岃繘鍏ュ墽鍦恒€傚叆鍦鸿垂5鍏冦€傚叾涓彧鏈塶涓汉鏈変竴寮?鍏冮挒绁紝鍙﹀n浜哄彧鏈?0鍏冮挒绁紝鍓ч櫌鏃犲叾瀹冮挒绁紝闂湁澶氬皯涓柟娉曚娇寰楀彧瑕佹湁10鍏冪殑浜轰拱绁紝鍞エ澶勫氨鏈?鍏冪殑閽炵エ鎵鹃浂锛?灏嗘寔5鍏冭€呭埌杈捐浣滃皢5鍏冨叆鏍堬紝鎸?0鍏冭€呭埌杈捐浣滀娇鏍堜腑鏌?鍏冨嚭鏍?绫讳技锛氫竴浣嶅ぇ鍩庡競鐨勫緥甯堝湪浠栦綇鎵€浠ュ寳n涓鍖哄拰浠ヤ笢n涓鍖哄宸ヤ綔锛屾瘡澶╁ス璧?n涓鍖哄幓涓婄彮銆傚鏋滀粬浠庝笉绌胯秺锛堜絾鍙互纰板埌锛変粠瀹跺埌鍔炲叕瀹ょ殑瀵硅绾匡紝閭d箞鏈夊灏戞潯鍙兘鐨勯亾璺紵 鍒嗘瀽锛氬浜庢瘡涓€涓暟鏉ヨ锛屽繀椤昏繘鏍堜竴娆°€佸嚭鏍堜竴娆°€傛垜浠妸杩涙爤璁句负鐘舵€佲€?鈥欙紝鍑烘爤璁句负鐘舵€佲€?鈥欍€俷涓暟鐨勬墍鏈夌姸鎬佸搴攏涓?鍜宯涓?缁勬垚鐨?n浣嶄簩杩涘埗鏁般€傜敱浜庣瓑寰呭叆鏍堢殑鎿嶄綔鏁版寜鐓?鈥鐨勯『搴忔帓鍒椼€佸叆鏍堢殑鎿嶄綔鏁癰澶т簬绛変簬鍑烘爤鐨勬搷浣滄暟a(a鈮)锛屽洜姝よ緭鍑哄簭鍒楃殑鎬绘暟鐩?鐢卞乏鑰屽彸鎵弿鐢眓涓?鍜宯涓?缁勬垚鐨?n浣嶄簩杩涘埗鏁帮紝1鐨勭疮璁℃暟涓嶅皬浜?鐨勭疮璁℃暟鐨勬柟妗堢鏁般€?/p>

4銆佺粰椤惰妭鐐圭粍鎴愪簩鍙夋爲鐨勯棶棰樸€?

缁欏畾N涓妭鐐癸紝鑳芥瀯鎴愬灏戠褰㈢姸涓嶅悓鐨勪簩鍙夋爲锛?

(涓€瀹氭槸浜屽弶鏍戯紒鍏堝幓涓€涓偣浣滀负椤剁偣,鐒跺悗宸﹁竟渚濇鍙互鍙?鑷砃-1涓浉瀵瑰簲鐨?鍙宠竟鏄疦-1鍒?涓?涓や袱閰嶅鐩镐箻,灏辨槸h(0)*h(n-1)聽+聽h(2)*h(n-2)聽+ ...... +聽h(n-1)h(0)=h(n))聽聽 锛堣兘鏋勬垚h锛圢锛変釜锛?

聽聽聽聽聽聽 鍦?n浣嶄簩杩涘埗鏁颁腑濉叆n涓?鐨勬柟妗堟暟涓篶(2n,n)锛屼笉濉?鐨勫叾浣檔浣嶈嚜鍔ㄥ~0銆備粠涓噺鍘讳笉绗﹀悎瑕佹眰锛堢敱宸﹁€屽彸鎵弿锛?鐨勭疮璁℃暟澶т簬1鐨勭疮璁℃暟锛夌殑鏂规鏁板嵆涓烘墍姹傘€?聽聽聽聽聽聽 涓嶇鍚堣姹傜殑鏁扮殑鐗瑰緛鏄敱宸﹁€屽彸鎵弿鏃讹紝蹇呯劧鍦ㄦ煇涓€濂囨暟浣?m+1浣嶄笂棣栧厛鍑虹幇m+1涓?鐨勭疮璁℃暟鍜宮涓?鐨勭疮璁℃暟锛屾鍚庣殑2(n-m)-1浣嶄笂鏈塶-m涓?1鍜宯-m-1涓?銆傚鑻ユ妸鍚庨潰杩?(n-m)-1浣嶄笂鐨?鍜?浜掓崲锛屼娇涔嬫垚涓簄-m涓?鍜宯-m-1涓?锛岀粨鏋滃緱1涓敱n+1涓?鍜宯-1涓?缁勬垚鐨?n浣嶆暟锛屽嵆涓€涓笉鍚堣姹傜殑鏁板搴斾簬涓€涓敱n+1涓?鍜宯-1涓?缁勬垚鐨勬帓鍒椼€?聽聽聽聽聽聽 鍙嶈繃鏉ワ紝浠讳綍涓€涓敱n+1涓?鍜宯-1涓?缁勬垚鐨?n浣嶄簩杩涘埗鏁帮紝鐢变簬0鐨勪釜鏁板2涓紝2n涓哄伓鏁帮紝鏁呭繀鍦ㄦ煇涓€涓鏁颁綅涓婂嚭鐜?鐨勭疮璁℃暟瓒呰繃1鐨勭疮璁℃暟銆傚悓鏍峰湪鍚庨潰閮ㄥ垎0鍜?浜掓崲锛屼娇涔嬫垚涓虹敱n涓?鍜宯涓?缁勬垚鐨?n浣嶆暟锛屽嵆n+1涓?鍜宯-1涓?缁勬垚鐨?n浣嶆暟蹇呭搴斾竴涓笉绗﹀悎瑕佹眰鐨勬暟銆?鍥犺€屼笉鍚堣姹傜殑2n浣嶆暟涓巒锛?涓?锛宯锛?涓?缁勬垚鐨勬帓鍒椾竴涓€瀵瑰簲銆?鏄剧劧锛屼笉绗﹀悎瑕佹眰鐨勬柟妗堟暟涓篶(2n,n+1)銆傜敱姝ゅ緱鍑鸿緭鍑哄簭鍒楃殑鎬绘暟鐩?c(2n,n)-c(2n,n+1)=1/(n+1)*c(2n,n)銆?锛堣繖涓叕寮忕殑涓嬫爣鏄粠h(0)=1寮€濮嬬殑锛?/p>

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-11 16:40:40聽

鍘熸枃閾炬帴

闃呰锛?65 璇勮锛?聽

鏌ョ湅璇勮

聽[鍘焆杩呴浄2012鏍″洯鎷涜仒绗旇瘯棰?銆佸井鏈轰腑1K瀛楄妭琛ㄧず鐨勪簩杩涘埗浣嶆暟鏄紙锛?A銆?000聽聽聽聽 B銆?X1000聽聽 C銆?024聽聽聽聽 D銆?X1024 2銆佽C璇█涓紝涓€涓猧nt鍨嬫暟鎹湪鍐呭瓨涓崰2涓瓧鑺傦紝鍒檜nsigned int 鍨嬫暟鎹殑鍙栧€艰寖鍥翠负锛堬級 A銆?--- 255聽聽聽聽 B銆?--- 32767聽聽聽聽聽C銆?--- 65535聽聽聽聽 D銆?--- 2147483647 3銆佸湪C璇█涓紝瑕佹眰杩愮畻鏁板繀椤绘槸鏁村瀷鐨勮繍绠楃鏄紙锛?A銆?聽聽聽聽聽B銆?+聽聽聽聽 C銆亅=聽聽聽聽D銆?4銆佷笅闈㈢▼搴忔鐨勮繍琛岀粨鏋滄槸锛堬級 聽 char c[5] = {'a','b','\0','c','\0'};

printf("%s",c);A銆?a"b'聽聽聽聽聽B銆乤b聽聽聽 C銆乤b_c聽聽聽 D銆乤b_c_聽 锛堝叾涓璤琛ㄧず绌烘牸锛壜犅犅犅犅?聽聽 5銆佷笅鍒楀叧浜庢暟缁勭殑鍒濆鍖栨纭殑鏄紙锛?A銆?char str[2] = {"a","b"} B銆?char str[2][3] = {"a","b"} C銆?char str[2][3] = {{'a','b'},{'e','f'},{'g','h'}} D銆?char str[] = {"a","b"} 6銆佸垽鏂瓧绗︿覆a鍜宐鏄惁鐩哥瓑锛屽簲褰撲娇鐢紙锛?A銆乮f(a==b)聽聽聽聽 B銆乮f(a=b)聽聽聽 C銆乮f(strcpy(a,b))聽聽聽聽聽D銆乮f(strcmp(a,b)) 7銆佷竴鐩磇nta[3][4]锛涘垯涓嬪垪鑳借〃绀篴[1][2]鍏冪礌鍊肩殑鏄紙锛?A銆?(*(a+1)+2)聽聽聽 B銆?(a+1+2)聽聽聽 C銆?&a[0]+1)[2]聽聽聽 D銆?(a[0]+1) 8銆佽嫢甯屾湜褰揂鐨勫€间负濂囨暟鏃讹紝琛ㄨ揪寮忕殑鍊间负鐪燂紝A鐨勫€间负鍋舵暟鏃讹紝琛ㄨ揪寮忕殑鍊间负鍋囷紝鍒欎互涓嬩笉鑳芥弧瓒宠姹傜殑琛ㄨ揪寮忔槸锛堬級 A銆丄%2==1聽聽聽聽聽 B銆?锛圓%2==0锛壜犅燙銆?锛圓%2锛壜犅?D銆丄%2 9銆佷互涓嬪摢椤瑰彲浠ョ敤鏉ラ噴鏀?p = malloc() 鍒嗛厤鐨勫唴瀛橈紙锛?A銆乫ree(p)聽聽聽聽 B銆乨elete p聽聽聽 C銆乨elete []p聽聽聽聽聽 D銆乻izeof p 10銆佷笅鍒楁湁鍏抽潤鎬佹垚鍛樺嚱鏁扮殑鎻忚堪涓紝姝g‘鐨勬槸锛堬級 A銆侀潤鎬佹暟鎹垚鍛樺彲浠ュ啀绫讳綋鍐呭垵濮嬪寲 B銆侀潤鎬佹暟鎹垚鍛樹笉鍙互琚被瀵硅薄璋冪敤 C銆侀潤鎬佹暟鎹垚鍛樹笉鍙梡rivate鎺у埗绗︿綔鐢?D銆侀潤鎬佹暟鎹垚鍛樺彲浠ョ洿鎺ョ敤绫诲悕璋冪敤 11銆佹寜e1銆乪2銆乪3銆乪4鐨勬搴忚繘鏍堬紙涓棿鍙兘鏈夊嚭鏍堟搷浣滐紝渚嬪e1杩涙爤鍚庡嚭鏍堬紝e2鍐嶈繘鏍堬級锛屽垯鍙兘鐨勫嚭鏍堝簭鍒楁槸锛堬級A銆乪3銆乪1銆乪4銆乪2聽聽聽聽B銆乪2銆乪4銆乪3銆乪1聽聽聽 C銆乪3銆乪4銆乪1銆乪2聽聽 D銆佷换鎰忓簭鍒?12銆佹煇浜屽弶鏍戠粨鐐圭殑涓簭搴忓垪涓篈銆丅銆丆銆丏銆丒銆丗銆丟锛屽悗搴忓簭鍒椾负B銆丏銆丆銆丄銆丗銆丟銆丒锛岃浜屽弶鏍戝搴旂殑鏍戞灄鍖呮嫭澶氬皯妫垫爲锛堬級 A銆?聽聽聽聽B銆?聽聽聽 C銆?聽聽聽聽 D銆? 13銆佸崟閾捐〃鐨勬瘡涓粨鐐瑰寘鎷竴涓寚閽坙ink锛屽畠鎸囧悜璇ョ粨鐐圭殑鍚庣户缁撶偣锛岀幇瑕佸皢鎸囬拡q鎸囧悜鐨勬柊缁撶偣鎻掑叆鍒版寚閽坧鎸囧悜鐨勫崟閾捐〃缁撶偣涔嬪悗锛屼笅闈㈢殑鎿嶄綔搴忓垪涓摢涓€涓槸姝g‘鐨勶紵 A銆乹 = p->link; p->link = q->link聽 B銆乸->link = q->link; q = p->linkC銆乹->link = p->link; p->link = q D銆乸->link = q; q->link = p->link; 14銆佸嚱鏁板師鍨媣oid fun(int a,int b=5,char c='*')锛涗笅闈㈢殑璋冪敤涓笉鍚堟硶鐨勬槸锛堬級 A銆乫un(4,1)聽聽 B銆乫un(99)聽聽 C銆乫un(11,2,'a')聽聽聽D銆乫un(15,'*') 15銆佷互涓嬪彊杩颁腑涓嶆纭殑鏄紙锛?A銆佸湪涓嶅悓鐨勫嚱鏁颁腑鍙互浣跨敤鐩稿悓鍚嶅瓧鐨勫彉閲?B銆佸嚱鏁颁腑鐨勫舰寮忓弬鏁版槸灞€閮ㄥ彉閲?C銆佸湪涓€涓嚱鏁板唴瀹氫箟鐨勫彉閲忓彧鍦ㄦ湰鍑芥暟鑼冨洿鍐呮湁鏁圖銆佸湪涓€涓嚱鏁板唴鐨勫鍚堣鍙ヤ腑瀹氫箟鐨勫彉閲忓湪鏈嚱鏁拌寖鍥村唴鏈夋晥锛堝彧鍦ㄥ鍚堣鍙ヤ腑鏈夋晥锛?16銆佽鏈変竴涓嬪畯瀹氫箟锛?#define N 3 #define Y(n) ((N+1)*n) 鍒欐墽琛岃鍙ワ細z=2*(N+Y(5+1))鍚庣殑z鍊间负锛堬級 A銆?8聽聽聽聽聽 B銆?2聽聽聽聽聽C銆?8聽聽聽聽聽聽聽聽 D銆?4 17銆佷互涓嬬▼搴忕▼搴忕殑杩愯缁撴灉鏄紙锛?聽 int main(void)

{

char a[]={"programming"},b[]={"language"};

char *p1,*p2;

int i;

p1=a,p2=b;

for(i=0;i<7;i++)

{

if(*(p1+i)==*(p2+i))

printf("%c",*(p1+i));

}

return 0;

}A銆乬m聽聽 B銆乺g聽聽 C銆乷r聽聽聽聽D銆乬a 18銆佽嫢鏈変互涓嬬▼搴忔锛毬?int a[]={4,0,2,3,1},i,j,t;

for(i=1;i<5;i++)

{

t=a[i];

j=i-1;

while(j>=0 && t>a[j])

{

a[j+1]=a[j];

j--;

}

a[j+1]=t;

}A銆佸鏁扮粍a杩涜鎻掑叆鎺掑簭锛堝崌搴忥級 B銆佸鏁扮粍a杩涜鎻掑叆鎺掑簭锛堥檷搴忥級 C銆佸鏁扮粍a杩涜閫夋嫨鎺掑簭锛堝崌搴忥級 D銆佸鏁扮粍a杩涜閫夋嫨鎺掑簭锛堥檷搴忥級19銆佷互涓嬬▼搴忕殑杈撳嚭缁撴灉鏄紙锛?聽 #define P 3

int F(int x)

{

return (P*x*x);

}

void main()

{

printf("%d\n",F(3+5));

}A銆?9 B銆?92 C銆?9D銆?7 20銆佷互涓嬩唬鐮佷腑锛孉鐨勬瀯閫犲嚱鏁板拰鏋愭瀯鍑芥暟鍒嗗埆鎵ц浜嗗嚑娆★紙锛?A *pa = new A[10]; delete []pa; A銆?銆?聽 聽 聽 聽聽B銆?0銆?0聽聽 聽 聽 聽 C銆?銆?0聽 聽 聽 聽 聽 D銆?0銆? 21銆佸湪椤哄簭琛▄3銆?銆?銆?0銆?2銆?5銆?6銆?8銆?1銆?5銆?0}涓紝鐢ㄤ簩鍒嗘硶鏌ユ壘鍏抽敭鐮佸€?1锛屾墍闇€鐨勫叧閿爜姣旇緝娆℃暟鏄紙锛?A銆?聽聽聽聽 B銆?聽聽聽聽聽C銆?聽聽聽聽 D銆? 22銆佽嫢int鍗?涓瓧鑺傦紝char 鍗?涓瓧鑺傦紝float鍗?涓瓧鑺傦紝sizeof(xc)鐨勫ぇ灏忔槸锛堬級 聽 struct stu

{

union

{

char b[5];

int bh[2];

}class;

char xm[8];

float cj;

}xc;A銆?6聽聽聽聽 B銆?8聽聽聽聽C銆?0聽聽聽 D銆?2 23銆佽浜屽弶鏍戞牴缁撶偣鐨勫眰娆′负0锛屼竴妫垫繁搴︼紙楂樺害锛変负k鐨勬弧浜屽弶鏍戝拰鍚屾牱娣卞害鐨勫畬鍏ㄤ簩鍙夋爲鍚勬湁f涓粨鐐瑰拰c涓粨鐐癸紝涓嬪垪鍏崇郴寮忎笉姝g‘鐨勬槸锛堬級 A銆乫 >= c聽聽聽B銆乧 > f聽聽聽聽 C銆乫=2^k+1聽聽聽聽 D銆乧>2k-1 24銆佸叧浜庡紩鐢ㄥ拰鎸囬拡鐨勫尯鍒紝涓嬪垪鍙欒堪閿欒鐨勬槸锛堬級 A銆佸紩鐢ㄥ繀椤诲垵濮嬪寲锛屾寚閽堜笉蹇?B銆佹寚閽堝垵濮嬪寲浠ュ悗涓嶈兘琚敼鍙橈紝寮曠敤鍙互鏀瑰彉鎵€鎸囩殑瀵硅薄 C銆佸垹闄ょ┖鎸囬拡鏄棤瀹崇殑锛屼笉鑳藉垹闄ゅ紩鐢?D銆佷笉瀛樺湪鎸囧悜绌哄€肩殑寮曠敤锛屼絾鏄瓨鍦ㄦ寚鍚戠┖鍊肩殑鎸囬拡 25銆佸睘浜庣綉缁滃眰鍗忚鐨勬槸锛堬級 A銆両P聽聽聽 B銆乀CP聽聽聽 C銆両CMP聽聽聽聽 D銆乆.25 26銆丼TL涓殑鍝缁撴瀯鍦ㄥ鍔犳垚鍛樻椂鍙兘浼氬紩璧峰師鏈夋暟鎹垚鍛樼殑瀛樺偍浣嶇疆鍙戠敓鍙樺姩锛堬級 A銆乵ap聽聽 B銆乻et聽聽聽 C銆乴ist聽聽聽聽D銆乿ector 27銆亀indows娑堟伅璋冨害鏈哄埗鏄紙锛?A銆佹寚浠ら槦鍒椔犅犅?B銆佹寚浠ゅ爢鏍埪犅犅犅燙銆佹秷鎭槦鍒椔犅犅?D銆佹秷鎭爢鏍?28銆佸湪鎺掑簭鏂规硶涓紝鍏抽敭鐮佹瘮杈冩鏁板拰璁板綍鐨勫垵濮嬫帓鍒楁棤鍏崇殑鏄紙锛?A銆丼hell鎺掑簭聽聽聽 B銆佸綊骞舵帓搴徛犅犅犅?C銆佺洿鎺ユ彃鍏ユ帓搴徛犅犅犅燚銆侀€夋嫨鎺掑簭 29銆佸亣璁続涓烘娊璞$被锛屼笅鍒楀0鏄庯紙锛夋槸姝g‘鐨凙銆丄 fun(int );聽聽聽聽B銆丄 *p;聽聽聽 C銆乮nt fun(A)聽聽聽 D銆丄 Obj; 鎶借薄绫讳笉鑳藉畾涔夊璞°€備絾鏄彲浠ヤ綔涓烘寚閽堟垨鑰呭紩鐢ㄧ被鍨嬩娇鐢ㄣ€?30銆佸鏋滅被鐨勫畾涔夊涓嬶紝鍒欎互涓嬩唬鐮佹纭苟涓旀槸鑹ソ缂栫▼椋庢牸鐨勬槸锛堬級 A銆乻td::auto_ptr

int find_sec_max(int data[],int count)

{

int maxnumber = data[0];

int sec_max = MINNUMBER;

for(int i = 1;i < count; i++)

{

if(data[i] > maxnumber)

{

}

else

{

if(data[i] > sec_max)

}

}

return sec_max;

}涓婇潰鐨勪笁涓┖鏍煎渚濇搴旇濉笂锛歴ec_max = maxnumber;聽聽聽聽聽聽 maxnumber = data[i];聽聽聽聽聽聽聽聽 sec_max = data[i];聽 6銆佷笅闈㈢▼搴忓彲浠?....n涓殢鏈鸿緭鍑簃涓笉閲嶅鐨勬暟锛岃濉┖銆?聽 knuth(int n,int m)

{

srand((unsigned)time(NULL));

for(int i = 0;i < n;i++)

{

if(_________)

{

cout<

______________

}

}

} 鍒嗗埆涓猴細rand()%(n-i)

{

if(m>n)

{

while(_________) n++;

______________;

prim(m,n);

cout<

}

}

void main()

{

int n = 435234;

prim(n,2);

}绛旀鍒嗗埆涓猴細m%n聽 鍜?m/=n8銆佺▼搴忔敼閿欍€?聽 int fun(vector& val)

{

copy(val.begin() , val.end() , ostream_iterator(cout,"\n"));

......

}

void main()

{

int a[5] = {1,2,3,4,5};

vector v;

copy(a , a + 5 , v.begin());

fun(vector(v));

prim(n,2);

}閿欒鐨勪唬鐮佸拰鏀规鍚庣殑浠g爜鍒嗗埆涓猴細聽 9銆丆++涓璫onst鏈変粈涔堢敤閫旓紙鑷冲皯璇村嚭涓夌锛夛細1銆佷究浜庤繘琛岀被鍨嬫鏌ワ紱2銆佸彲浠ヨ妭鐪佺┖闂撮伩鍏嶄笉蹇呰鐨勫唴瀛樺垎閰嶏紝鎻愰珮浜嗘晥鐜囷紱3銆佷繚鎶よ淇グ鐨勫璞★紝闃叉鎰忓淇敼锛屽寮虹▼搴忕殑鍋ュ.鎬с€?0銆佷笅闈㈢▼搴忕殑鍔熻兘鏄緭鍑烘暟缁勭殑鍏ㄦ帓鍒楋紝璇峰~绌恒€?聽 void perm(int list[],int k,int m)

{

if(_______)

{

copy(list,list+m,ostream_iterator(cout," "));

cout<

return ;

}

for(int i = k ; i <= m ; ++i)

{

swap(&list[k] , &list[i]);

______________;

swap(&list[k] , &list[i]);

}

}

void main()

{

int list[] = {1,2,3,4,5};

perm(list,0,sizeof(list)/sizeof(int)-1);

}绛旀鍒嗗埆鏄細 k == m 鍜?perm(list , k+1 , m)聽 聽 聽

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-12 16:04:40聽

鍘熸枃閾炬帴

闃呰锛?95 璇勮锛?聽

鏌ョ湅璇勮

聽[鍘焆const 璇﹁В聽聽聽聽聽 浠婂ぉ鐪嬩簡涓€涓婥++ Primer涓叧浜巆onst鐢ㄦ硶鐨勪粙缁嶏紝璁插緱寰堝ソ锛?鏀剁泭鍖祬锛屼簬鏄仛涓€涓€荤粨锛屾柟渚夸互鍚庡啀娆℃煡鐪嬨€?浣嗘槸c++鍦╟鐨勫熀纭€涓婃柊澧炲姞鐨勫嚑鐐逛紭鍖栦篃鏄緢鑰€鐪肩殑锛屽氨const鐩存帴鍙互鍙栦唬c涓殑#define浠ヤ笅鍑犵偣寰堥噸瑕侊紝瀛︿笉濂藉悗鏋滀篃涔熷緢涓ラ噸銆傘€€涓€銆乧onst鍙橀噺 聽聽聽聽聽聽聽 1銆侀檺瀹氱澹版槑鍙橀噺鍙兘琚 const int i=5锛?int j=0锛?鈥︹€?i=j锛涖€€ //闈炴硶锛屽鑷寸紪璇戦敊璇?j=i锛涖€€ //鍚堟硶 2銆?蹇呴』鍒濆鍖?const int i=5锛涖€€銆€銆€ //鍚堟硶 const int j锛涖€€銆€銆€銆€銆€ //闈炴硶锛屽鑷寸紪璇戦敊璇?3銆佸湪鍙︿竴杩炴帴鏂囦欢涓紩鐢╟onst甯搁噺 extern const int i锛涖€€銆€銆€ //鍚堟硶 extern const int j=10锛涖€€ //闈炴硶锛屽父閲忎笉鍙互琚啀娆¤祴鍊?4銆佷究浜庤繘琛岀被鍨嬫鏌?鐢╟onst鏂规硶鍙互浣跨紪璇戝櫒瀵瑰鐞嗗唴瀹规湁鏇村浜嗚В銆?#define I=10 const long &i=10锛涖€€ /*dapingguo鎻愰啋锛氱敱浜庣紪璇戝櫒鐨勪紭鍖栵紝浣垮緱鍦╟onst long i=10锛?鏃秈涓嶈鍒嗛厤鍐呭瓨锛岃€屾槸宸?0鐩存帴浠e叆浠ュ悗鐨勫紩鐢ㄤ腑锛屼互鑷村湪浠ュ悗鐨勪唬鐮佷腑娌℃湁閿欒锛屼负杈惧埌璇存暀鏁堟灉锛岀壒鍒湴鐢?i鏄庣‘鍦扮粰鍑轰簡i鐨勫唴瀛樺垎閰嶃€備笉杩囦竴鏃︿綘鍏抽棴鎵€鏈変紭鍖栨帾鏂斤紝鍗充娇const long i=10锛涗篃浼氬紩璧峰悗闈㈢殑缂栬瘧閿欒銆?/ char h=I锛涖€€銆€銆€銆€銆€ //娌℃湁閿?char h=i锛涖€€銆€銆€銆€銆€ //缂栬瘧璀﹀憡锛屽彲鑳界敱浜庢暟鐨勬埅鐭甫鏉ラ敊璇祴鍊笺€?5銆佸彲浠ラ伩鍏嶄笉蹇呰鐨勫唴瀛樺垎閰?#define STRING "abcdefghijklmnn" const char string[]="abcdefghijklmn"锛?鈥︹€?printf锛圫TRING锛夛紱銆€ //涓篠TRING鍒嗛厤浜嗙涓€娆″唴瀛?printf锛坰tring锛夛紱銆€ //涓簊tring涓€娆″垎閰嶄簡鍐呭瓨锛屼互鍚庝笉鍐嶅垎閰?鈥︹€?printf锛圫TRING锛夛紱銆€ //涓篠TRING鍒嗛厤浜嗙浜屾鍐呭瓨 printf锛坰tring锛夛紱 鈥︹€?鐢变簬const瀹氫箟甯搁噺浠庢眹缂栫殑瑙掑害鏉ョ湅锛屽彧鏄粰鍑轰簡瀵瑰簲鐨勫唴瀛樺湴鍧€锛岃€屼笉鏄薄#define涓€鏍风粰鍑虹殑鏄珛鍗虫暟锛屾墍浠ワ紝const瀹氫箟鐨勫父閲忓湪绋嬪簭杩愯杩囩▼涓彧鏈変竴浠芥嫹璐濓紝鑰?define瀹氫箟鐨勫父閲忓湪鍐呭瓨涓湁鑻ュ共涓嫹璐濄€?聽聽聽聽聽聽 6銆佸彲浠ラ€氳繃鍑芥暟瀵瑰父閲忚繘琛屽垵濮嬪寲 int value锛堬級锛?const int i=value锛堬級锛?dapingguo璇达細鍋囧畾瀵筊OM缂栧啓绋嬪簭鏃讹紝鐢变簬鐩爣浠g爜鐨勪笉鍙敼鍐欙紝鏈鍙ュ皢浼氭棤鏁堬紝涓嶈繃鍙互鍙橀€氫竴涓嬶細 const int &i=value锛堬級锛?鍙浠鐨勫湴鍧€澶勪簬ROM涔嬪锛屽嵆鍙疄鐜帮細i閫氳繃鍑芥暟鍒濆鍖栵紝鑰屽叾鍊兼湁涓嶄細琚慨鏀广€?7銆佹槸涓嶆槸const鐨勫父閲忓€间竴瀹氫笉鍙互琚慨鏀瑰憿锛?瑙傚療浠ヤ笅涓€娈典唬鐮侊細 const int i=0锛?int *p=锛坕nt*锛?i锛?p=100锛?閫氳繃寮哄埗绫诲瀷杞崲锛屽皢鍦板潃璧嬬粰鍙橀噺锛屽啀浣滀慨鏀瑰嵆鍙互鏀瑰彉const甯搁噺鍊笺€?8銆佽鍒嗘竻鏁板€煎父閲忓拰鎸囬拡甯搁噺锛屼互涓嬪0鏄庨涓虹帺鍛筹細 int ii=0锛?const int i=0锛涖€€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€ //i鏄父閲忥紝i鐨勫€间笉浼氳淇敼 const int *p1i=&i锛涖€€銆€銆€銆€銆€銆€銆€ //鎸囬拡p1i鎵€鎸囧唴瀹规槸甯搁噺锛屽彲浠ヤ笉鍒濆鍖?int銆€ * const p2i=&ii锛涖€€銆€銆€ //鎸囬拡p2i鏄父閲忥紝鎵€鎸囧唴瀹瑰彲淇敼 const int * const p3i=&i锛?//鎸囬拡p3i鏄父閲忥紝鎵€鎸囧唴瀹逛篃鏄父閲?p1i=&ii锛涖€€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€ //鍚堟硶 *p2i=100锛涖€€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€ //鍚堟硶 聽聽 鍦ㄥソ闀夸竴鏀舵鏃堕棿鎴戣const鍥版儜锛岀湅鍒癱onst鍏抽敭瀛楋紝C++绋嬪簭鍛橀鍏堟兂鍒扮殑鍙兘鏄痗onst甯搁噺锛屽鏋滃彧鐭ラ亾鐢╟onst瀹氫箟鏄父閲忥紝閭d箞鐩稿綋浜庢妸鐏嵂浠呯敤浜庡埗浣滈灜鐐€俢onst鏇村ぇ鐨勯瓍鍔涙槸瀹冨彲浠ヤ慨楗板嚱鏁扮殑鍙傛暟銆佽繑鍥炲€硷紝鐢氳嚦鍑芥暟鐨勫畾涔変綋銆傝const淇グ鐨勪笢瑗块兘鍙楀埌寮哄埗淇濇姢锛屽彲浠ラ闃叉剰澶栫殑鍙樺姩锛岃兘鎻愰珮绋嬪簭鐨勫仴澹€с€傛墍浠ュ緢澶欳++绋嬪簭璁捐涔︾睄寤鸿锛?Use const whenever you need"銆?浜屻€乧onst鎴愬憳鍑芥暟 聽聽聽 浠讳綍涓嶄細淇敼鏁版嵁鎴愬憳鐨勫嚱鏁伴兘搴旇澹版槑涓篶onst绫诲瀷銆傚鏋滃湪缂栧啓const鎴愬憳鍑芥暟鏃讹紝涓嶆厧淇敼浜嗘暟鎹垚鍛橈紝鎴栬€呰皟鐢ㄤ簡鍏跺畠闈瀋onst鎴愬憳鍑芥暟锛岀紪璇戝櫒灏嗘寚鍑洪敊璇紝杩欐棤鐤戜細鎻愰珮绋嬪簭鐨勫仴澹€с€備互涓嬬▼搴忎腑锛岀被stack鐨勬垚鍛樺嚱鏁癎etCount浠呯敤浜庤鏁帮紝浠庨€昏緫涓婅GetCount搴斿綋涓篶onst鍑芥暟銆傜紪璇戝櫒灏嗘寚鍑篏etCount鍑芥暟涓殑閿欒銆?聽 class Stack

{

private:

int m_num;

int m_data[100];

public:

void Push(int elem);

int Pop(void);

int GetCount(void) const; //const鎴愬憳鍑芥暟

};

int Stack::GetCount(void) const

{

++m_num; //缂栬瘧閿欒锛屼紒鍥句慨鏀规暟鎹垚鍛榤_num

Pop(); //缂栬瘧閿欒锛屼紒鍥鹃潪const鎴愬憳鍑芥暟

return m_num;

}const鎴愬憳鍑芥暟鐨勫0鏄庣湅璧锋潵鎬€殑锛歝onst鍏抽敭瀛楀彧鑳芥斁鍦ㄥ嚱鏁板0鏄庣殑灏鹃儴锛屽ぇ姒傛槸鍥犱负鍏跺畠鍦版柟閮藉凡缁忚鍗犵敤浜嗐€偮?/p>

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-13 20:58:33聽

鍘熸枃閾炬帴

闃呰锛?81 璇勮锛?聽

鏌ョ湅璇勮

聽[鍘焆C++涓殑鍗曚緥妯″紡聽聽聽聽聽聽聽 鍗曚緥妯″紡涔熺О涓哄崟浠舵ā寮忋€佸崟瀛愭ā寮忥紝鍙兘鏄娇鐢ㄦ渶骞挎硾鐨勮璁℃ā寮忋€傚叾鎰忓浘鏄繚璇佷竴涓被浠呮湁涓€涓疄渚嬶紝骞舵彁渚涗竴涓闂畠鐨勫叏灞€璁块棶鐐癸紝璇ュ疄渚嬭鎵€鏈夌▼搴忔ā鍧楀叡浜€傛湁寰堝鍦版柟闇€瑕佽繖鏍风殑鍔熻兘妯″潡锛屽绯荤粺鐨勬棩蹇楄緭鍑猴紝GUI搴旂敤蹇呴』鏄崟榧犳爣锛孧ODEM鐨勮仈鎺ラ渶瑕佷竴鏉′笖鍙渶瑕佷竴鏉$數璇濈嚎锛屾搷浣滅郴缁熷彧鑳芥湁涓€涓獥鍙g鐞嗗櫒锛屼竴鍙癙C杩炰竴涓敭鐩樸€?聽聽聽聽聽聽 鍗曚緥妯″紡鏈夎澶氱瀹炵幇鏂规硶锛屽湪C++涓紝鐢氳嚦鍙互鐩存帴鐢ㄤ竴涓叏灞€鍙橀噺鍋氬埌杩欎竴鐐癸紝浣嗚繖鏍风殑浠g爜鏄剧殑寰堜笉浼橀泤銆?浣跨敤鍏ㄥ眬瀵硅薄鑳藉淇濊瘉鏂逛究鍦拌闂疄渚嬶紝浣嗘槸涓嶈兘淇濊瘉鍙0鏄庝竴涓璞♀€斺€斾篃灏辨槸璇撮櫎浜嗕竴涓叏灞€瀹炰緥澶栵紝浠嶇劧鑳藉垱寤虹浉鍚岀被鐨勬湰鍦板疄渚嬨€?銆婅璁℃ā寮忋€嬩竴涔︿腑缁欏嚭浜嗕竴绉嶅緢涓嶉敊鐨勫疄鐜帮紝瀹氫箟涓€涓崟渚嬬被锛屼娇鐢ㄧ被鐨勭鏈夐潤鎬佹寚閽堝彉閲忔寚鍚戠被鐨勫敮涓€瀹炰緥锛屽苟鐢ㄤ竴涓叕鏈夌殑闈欐€佹柟娉曡幏鍙栬瀹炰緥銆?聽聽聽聽聽聽 鍗曚緥妯″紡閫氳繃绫绘湰韬潵绠$悊鍏跺敮涓€瀹炰緥锛岃繖绉嶇壒鎬ф彁渚涗簡瑙e喅闂鐨勬柟娉曘€傚敮涓€鐨勫疄渚嬫槸绫荤殑涓€涓櫘閫氬璞★紝浣嗚璁¤繖涓被鏃讹紝璁╁畠鍙兘鍒涘缓涓€涓疄渚嬪苟鎻愪緵瀵规瀹炰緥鐨勫叏灞€璁块棶銆傚敮涓€瀹炰緥绫籗ingleton鍦ㄩ潤鎬佹垚鍛樺嚱鏁颁腑闅愯棌鍒涘缓瀹炰緥鐨勬搷浣溿€備範鎯笂鎶婅繖涓垚鍛樺嚱鏁板彨鍋欼nstance()锛屽畠鐨勮繑鍥炲€兼槸鍞竴瀹炰緥鐨勬寚閽堛€傚畾涔夊涓嬶細 聽 class CSingleton

{

private:

CSingleton() //鏋勯€犲嚱鏁版槸绉佹湁鐨?/p>

{

}

static CSingleton *m_pInstance;

public:

static CSingleton * GetInstance()

{

if(m_pInstance == NULL) //鍒ゆ柇鏄惁绗竴娆¤皟鐢?/p>

m_pInstance = new CSingleton();

return m_pInstance;

}

};鐢ㄦ埛璁块棶鍞竴瀹炰緥鐨勬柟娉曞彧鏈塆etInstance()鎴愬憳鍑芥暟銆傚鏋滀笉閫氳繃杩欎釜鍑芥暟锛屼换浣曞垱寤哄疄渚嬬殑灏濊瘯閮藉皢澶辫触锛屽洜涓虹被鐨勬瀯閫犲嚱鏁版槸绉佹湁鐨勩€侴etInstance()浣跨敤鎳掓儼鍒濆鍖栵紝涔熷氨鏄瀹冪殑杩斿洖鍊兼槸褰撹繖涓嚱鏁伴娆¤璁块棶鏃惰鍒涘缓鐨勩€傝繖鏄竴绉嶉槻寮硅璁♀€斺€旀墍鏈塆etInstance()涔嬪悗鐨勮皟鐢ㄩ兘杩斿洖鐩稿悓瀹炰緥鐨勬寚閽堬細聽 CSingleton* p1 = CSingleton :: GetInstance(); CSingleton* p2 = p1->GetInstance(); CSingleton & ref = * CSingleton :: GetInstance(); 瀵笹etInstance绋嶅姞淇敼锛岃繖涓璁℃ā鏉夸究鍙互閫傜敤浜庡彲鍙樺瀹炰緥鎯呭喌锛屽涓€涓被鍏佽鏈€澶氫簲涓疄渚嬨€?聽 鍗曚緥绫籆Singleton鏈変互涓嬬壒寰侊細 瀹冩湁涓€涓寚鍚戝敮涓€瀹炰緥鐨勯潤鎬佹寚閽坢_pInstance锛屽苟涓旀槸绉佹湁鐨勶紱 瀹冩湁涓€涓叕鏈夌殑鍑芥暟锛屽彲浠ヨ幏鍙栬繖涓敮涓€鐨勫疄渚嬶紝骞朵笖鍦ㄩ渶瑕佺殑鏃跺€欏垱寤鸿瀹炰緥锛?瀹冪殑鏋勯€犲嚱鏁版槸绉佹湁鐨勶紝杩欐牱灏变笉鑳戒粠鍒鍒涘缓璇ョ被鐨勫疄渚嬨€?澶у鏁版椂鍊欙紝杩欐牱鐨勫疄鐜伴兘涓嶄細鍑虹幇闂銆傛湁缁忛獙鐨勮鑰呭彲鑳戒細闂紝m_pInstance鎸囧悜鐨勭┖闂翠粈涔堟椂鍊欓噴鏀惧憿锛熸洿涓ラ噸鐨勯棶棰樻槸锛岃瀹炰緥鐨勬瀽鏋勫嚱鏁颁粈涔堟椂鍊欐墽琛岋紵 濡傛灉鍦ㄧ被鐨勬瀽鏋勮涓轰腑鏈夊繀椤荤殑鎿嶄綔锛屾瘮濡傚叧闂枃浠讹紝閲婃斁澶栭儴璧勬簮锛岄偅涔堜笂闈㈢殑浠g爜鏃犳硶瀹炵幇杩欎釜瑕佹眰銆傛垜浠渶瑕佷竴绉嶆柟娉曪紝姝e父鐨勫垹闄よ瀹炰緥銆?鍙互鍦ㄧ▼搴忕粨鏉熸椂璋冪敤GetInstance()锛屽苟瀵硅繑鍥炵殑鎸囬拡鎺夌敤delete鎿嶄綔銆傝繖鏍峰仛鍙互瀹炵幇鍔熻兘锛屼絾涓嶄粎寰堜笐闄嬶紝鑰屼笖瀹规槗鍑洪敊銆傚洜涓鸿繖鏍风殑闄勫姞浠g爜寰堝鏄撹蹇樿锛岃€屼笖涔熷緢闅句繚璇佸湪delete涔嬪悗锛屾病鏈変唬鐮佸啀璋冪敤GetInstance鍑芥暟銆?涓€涓Ε鍠勭殑鏂规硶鏄杩欎釜绫昏嚜宸辩煡閬撳湪鍚堥€傜殑鏃跺€欐妸鑷繁鍒犻櫎锛屾垨鑰呰鎶婂垹闄よ嚜宸辩殑鎿嶄綔鎸傚湪鎿嶄綔绯荤粺涓殑鏌愪釜鍚堥€傜殑鐐逛笂锛屼娇鍏跺湪鎭板綋鐨勬椂鍊欒鑷姩鎵ц銆?鎴戜滑鐭ラ亾锛岀▼搴忓湪缁撴潫鐨勬椂鍊欙紝绯荤粺浼氳嚜鍔ㄦ瀽鏋勬墍鏈夌殑鍏ㄥ眬鍙橀噺銆備簨瀹炰笂锛岀郴缁熶篃浼氭瀽鏋勬墍鏈夌殑绫荤殑闈欐€佹垚鍛樺彉閲忥紝灏卞儚杩欎簺闈欐€佹垚鍛樹篃鏄叏灞€鍙橀噺涓€鏍枫€傚埄鐢ㄨ繖涓壒寰侊紝鎴戜滑鍙互鍦ㄥ崟渚嬬被涓畾涔変竴涓繖鏍风殑闈欐€佹垚鍛樺彉閲忥紝鑰屽畠鐨勫敮涓€宸ヤ綔灏辨槸鍦ㄦ瀽鏋勫嚱鏁颁腑鍒犻櫎鍗曚緥绫荤殑瀹炰緥銆傚涓嬮潰鐨勪唬鐮佷腑鐨凜Garbo绫伙紙Garbo鎰忎负鍨冨溇宸ヤ汉锛夛細class CSingleton

{

private:

CSingleton()

{

}

static CSingleton *m_pInstance;

class CGarbo //瀹冪殑鍞竴宸ヤ綔灏辨槸鍦ㄦ瀽鏋勫嚱鏁颁腑鍒犻櫎CSingleton鐨勫疄渚?/p>

{

public:

~CGarbo()

{

if(CSingleton::m_pInstance)

delete CSingleton::m_pInstance;

}

};

static CGarbo Garbo; //瀹氫箟涓€涓潤鎬佹垚鍛樺彉閲忥紝绋嬪簭缁撴潫鏃讹紝绯荤粺浼氳嚜鍔ㄨ皟鐢ㄥ畠鐨勬瀽鏋勫嚱鏁?/p>

public:

static CSingleton * GetInstance()

{

if(m_pInstance == NULL) //鍒ゆ柇鏄惁绗竴娆¤皟鐢?/p>

m_pInstance = new CSingleton();

return m_pInstance;

}

};

绫籆Garbo琚畾涔変负CSingleton鐨勭鏈夊唴宓岀被锛屼互闃茶绫昏鍦ㄥ叾浠栧湴鏂规互鐢ㄣ€?绋嬪簭杩愯缁撴潫鏃讹紝绯荤粺浼氳皟鐢–Singleton鐨勯潤鎬佹垚鍛楪arbo鐨勬瀽鏋勫嚱鏁帮紝璇ユ瀽鏋勫嚱鏁颁細鍒犻櫎鍗曚緥鐨勫敮涓€瀹炰緥銆?浣跨敤杩欑鏂规硶閲婃斁鍗曚緥瀵硅薄鏈変互涓嬬壒寰侊細 鍦ㄥ崟渚嬬被鍐呴儴瀹氫箟涓撴湁鐨勫祵濂楃被锛?鍦ㄥ崟渚嬬被鍐呭畾涔夌鏈夌殑涓撻棬鐢ㄤ簬閲婃斁鐨勯潤鎬佹垚鍛橈紱 鍒╃敤绋嬪簭鍦ㄧ粨鏉熸椂鏋愭瀯鍏ㄥ眬鍙橀噺鐨勭壒鎬э紝閫夋嫨鏈€缁堢殑閲婃斁鏃舵満锛?浣跨敤鍗曚緥鐨勪唬鐮佷笉闇€瑕佷换浣曟搷浣滐紝涓嶅繀鍏冲績瀵硅薄鐨勯噴鏀俱€?杩涗竴姝ョ殑璁ㄨ浣嗘槸娣诲姞涓€涓被鐨勯潤鎬佸璞★紝鎬绘槸璁╀汉涓嶅お婊℃剰锛屾墍浠ユ湁浜虹敤濡備笅鏂规硶鏉ラ噸鐜板疄鐜板崟渚嬪拰瑙e喅瀹冪浉搴旂殑闂锛屼唬鐮佸涓嬶細 聽 class CSingleton

{

private:

CSingleton() //鏋勯€犲嚱鏁版槸绉佹湁鐨?/p>

{

}

public:

static CSingleton & GetInstance()

{

static CSingleton instance; //灞€閮ㄩ潤鎬佸彉閲?/p>

return instance;

}

};浣跨敤灞€閮ㄩ潤鎬佸彉閲忥紝闈炲父寮哄ぇ鐨勬柟娉曪紝瀹屽叏瀹炵幇浜嗗崟渚嬬殑鐗规€э紝鑰屼笖浠g爜閲忔洿灏戯紝涔熶笉鐢ㄦ媴蹇冨崟渚嬮攢姣佺殑闂銆?浣嗕娇鐢ㄦ绉嶆柟娉曚篃浼氬嚭鐜伴棶棰橈紝褰撳涓嬫柟娉曚娇鐢ㄥ崟渚嬫椂闂鏉ヤ簡锛?Singleton singleton = Singleton :: GetInstance(); 杩欎箞鍋氬氨鍑虹幇浜嗕竴涓被鎷疯礉鐨勯棶棰橈紝杩欏氨杩濊儗浜嗗崟渚嬬殑鐗规€с€備骇鐢熻繖涓棶棰樺師鍥犲湪浜庯細缂栬瘧鍣ㄤ細涓虹被鐢熸垚涓€涓粯璁ょ殑鏋勯€犲嚱鏁帮紝鏉ユ敮鎸佺被鐨勬嫹璐濄€傛渶鍚庢病鏈夊姙娉曪紝鎴戜滑瑕佺姝㈢被鎷疯礉鍜岀被璧嬪€硷紝绂佹绋嬪簭鍛樼敤杩欑鏂瑰紡鏉ヤ娇鐢ㄥ崟渚嬶紝褰撴椂棰嗗鐨勬剰鎬濇槸GetInstance()鍑芥暟杩斿洖涓€涓寚閽堣€屼笉鏄繑鍥炰竴涓紩鐢紝鍑芥暟鐨勪唬鐮佹敼涓哄涓嬶細 聽 class CSingleton

{

private:

CSingleton() //鏋勯€犲嚱鏁版槸绉佹湁鐨?/p>

{

}

public:

static CSingleton * GetInstance()

{

static CSingleton instance; //灞€閮ㄩ潤鎬佸彉閲?/p>

return &instance;

}

}; 浣嗘垜鎬昏鐨勪笉濂斤紝涓轰粈涔堜笉璁╃紪璇戝櫒涓嶈繖涔堝共鍛€傝繖鏃舵垜鎵嶆兂璧峰彲浠ユ樉绀虹殑鐢熷懡绫绘嫹璐濈殑鏋勯€犲嚱鏁帮紝鍜岄噸杞?= 鎿嶄綔绗︼紝鏂扮殑鍗曚緥绫诲涓嬶細 聽 class CSingleton

{

private:

CSingleton() //鏋勯€犲嚱鏁版槸绉佹湁鐨?/p>

{

}

CSingleton(const CSingleton &);

CSingleton & operator = (const CSingleton &);

public:

static CSingleton & GetInstance()

{

static CSingleton instance; //灞€閮ㄩ潤鎬佸彉閲?/p>

return instance;

}

};鍏充簬Singleton(const Singleton);鍜?Singleton & operate = (const Singleton&);鍑芥暟锛岄渶瑕佸0鏄庢垚绉佹湁鐨勶紝骞朵笖鍙0鏄庝笉瀹炵幇銆傝繖鏍凤紝濡傛灉鐢ㄤ笂闈㈢殑鏂瑰紡鏉ヤ娇鐢ㄥ崟渚嬫椂锛屼笉绠℃槸鍦ㄥ弸鍏冪被涓繕鏄叾浠栫殑锛岀紪璇戝櫒閮芥槸鎶ラ敊銆?涓嶇煡閬撹繖鏍风殑鍗曚緥绫绘槸鍚﹁繕浼氭湁闂锛屼絾鍦ㄧ▼搴忎腑杩欐牱瀛愪娇鐢ㄥ凡缁忓熀鏈病鏈夐棶棰樹簡銆偮?聽

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-14 10:08:40聽

鍘熸枃閾炬帴

闃呰锛?13 璇勮锛?聽

鏌ョ湅璇勮

聽[鍘焆瀛楃涓茬殑鍏ㄦ帓鍒楀拰缁勫悎绠楁硶鍏ㄦ帓鍒楀湪绗旇瘯闈㈣瘯涓緢鐑棬锛屽洜涓哄畠闅惧害閫備腑锛屾棦鍙互鑰冨療閫掑綊瀹炵幇锛屽張鑳借繘涓€姝ヨ€冨療闈為€掑綊鐨勫疄鐜帮紝渚夸簬鍖哄垎鍑鸿€冪敓鐨勬按骞炽€傛墍浠ュ湪鐧惧害鍜岃繀闆风殑鏍″洯鎷涜仒浠ュ強绋嬪簭鍛樺拰杞欢璁捐甯堢殑鑰冭瘯涓兘鑰冨埌浜嗭紝鍥犳鏈枃瀵瑰叏鎺掑垪浣滀笅鎬荤粨甯姪澶у鏇村ソ鐨勫涔犲拰鐞嗚В銆傚鏈枃鏈変换浣曡ˉ鍏呬箣澶勶紝娆㈣繋澶у鎸囧嚭銆?棣栧厛鏉ョ湅鐪嬮鐩槸濡備綍瑕佹眰鐨勶紙鐧惧害杩呴浄鏍℃嫑绗旇瘯棰橈級銆?涓€銆佸瓧绗︿覆鐨勬帓鍒?鐢–++鍐欎竴涓嚱鏁? 濡?Foo(const char *str), 鎵撳嵃鍑?str 鐨勫叏鎺掑垪, 濡?abc 鐨勫叏鎺掑垪: abc, acb, bca, dac, cab, cba涓€銆佸叏鎺掑垪鐨勯€掑綊瀹炵幇 涓烘柟渚胯捣瑙侊紝鐢?23鏉ョず渚嬩笅銆?23鐨勫叏鎺掑垪鏈?23銆?32銆?13銆?31銆?12銆?21杩欏叚绉嶃€傞鍏堣€冭檻213鍜?21杩欎簩涓暟鏄浣曞緱鍑虹殑銆傛樉鐒惰繖浜屼釜閮芥槸123涓殑1涓庡悗闈袱鏁颁氦鎹㈠緱鍒扮殑銆傜劧鍚庡彲浠ュ皢123鐨勭浜屼釜鏁板拰姣忎笁涓暟浜ゆ崲寰楀埌132銆傚悓鐞嗗彲浠ユ牴鎹?13鍜?21鏉ュ緱231鍜?12銆傚洜姝ゅ彲浠ョ煡閬撯€斺€斿叏鎺掑垪灏辨槸浠庣涓€涓暟瀛楄捣姣忎釜鏁板垎鍒笌瀹冨悗闈㈢殑鏁板瓧浜ゆ崲銆傛壘鍒拌繖涓寰嬪悗锛岄€掑綊鐨勪唬鐮佸氨寰堝鏄撳啓鍑烘潵浜嗭細 聽 #include

using namespace std;

#include

void Permutation(char* pStr, char* pBegin)

{

assert(pStr && pBegin);

if(*pBegin == '\0')

printf("%s\n",pStr);

else

{

for(char* pCh = pBegin; *pCh != '\0'; pCh++)

{

swap(*pBegin,*pCh);

Permutation(pStr, pBegin+1);

swap(*pBegin,*pCh);

}

}

}

int main(void)

{

char str[] = "abc";

Permutation(str,str);

return 0;

} 鍙﹀涓€绉嶅啓娉曪細 聽 //k琛ㄧず褰撳墠閫夊彇鍒扮鍑犱釜鏁帮紝m琛ㄧず鍏辨湁澶氬皯涓暟

void Permutation(char* pStr,int k,int m)

{

assert(pStr);

if(k == m)

{

static int num = 1; //灞€閮ㄩ潤鎬佸彉閲忥紝鐢ㄦ潵缁熻鍏ㄦ帓鍒楃殑涓暟

printf("绗?d涓帓鍒梊t%s\n",num++,pStr);

}

else

{

for(int i = k; i <= m; i++)

{

swap(*(pStr+k),*(pStr+i));

Permutation(pStr, k + 1 , m);

swap(*(pStr+k),*(pStr+i));

}

}

}

int main(void)

{

char str[] = "abc";

Permutation(str , 0 , strlen(str)-1);

return 0;

}濡傛灉瀛楃涓蹭腑鏈夐噸澶嶅瓧绗︾殑璇濓紝涓婇潰鐨勯偅涓柟娉曡偗瀹氫笉浼氱鍚堣姹傜殑锛屽洜姝ょ幇鍦ㄨ鎯冲姙娉曟潵鍘绘帀閲嶅鐨勬暟鍒椼€?浜屻€佸幓鎺夐噸澶嶇殑鍏ㄦ帓鍒楃殑閫掑綊瀹炵幇 鐢变簬鍏ㄦ帓鍒楀氨鏄粠绗竴涓暟瀛楄捣姣忎釜鏁板垎鍒笌瀹冨悗闈㈢殑鏁板瓧浜ゆ崲銆傛垜浠厛灏濊瘯鍔犱釜杩欐牱鐨勫垽鏂€斺€斿鏋滀竴涓暟涓庡悗闈㈢殑鏁板瓧鐩稿悓閭d箞杩欎簩涓暟灏变笉浜ゆ崲浜嗐€傚122锛岀涓€涓暟涓庡悗闈氦鎹㈠緱212銆?21銆傜劧鍚?22涓浜屾暟灏变笉鐢ㄤ笌绗笁涓暟浜ゆ崲浜嗭紝浣嗗212锛屽畠绗簩涓暟涓庣涓変釜鏁版槸涓嶇浉鍚岀殑锛屼氦鎹箣鍚庡緱鍒?21銆備笌鐢?22涓涓€涓暟涓庣涓変釜鏁颁氦鎹㈡墍寰楃殑221閲嶅浜嗐€傛墍浠ヨ繖涓柟娉曚笉琛屻€?鎹㈢鎬濈淮锛屽122锛岀涓€涓暟1涓庣浜屼釜鏁?浜ゆ崲寰楀埌212锛岀劧鍚庤€冭檻绗竴涓暟1涓庣涓変釜鏁?浜ゆ崲锛屾鏃剁敱浜庣涓変釜鏁扮瓑浜庣浜屼釜鏁帮紝鎵€浠ョ涓€涓暟涓嶅啀涓庣涓変釜鏁颁氦鎹€傚啀鑰冭檻212锛屽畠鐨勭浜屼釜鏁颁笌绗笁涓暟浜ゆ崲鍙互寰楀埌瑙e喅221銆傛鏃跺叏鎺掑垪鐢熸垚瀹屾瘯銆?杩欐牱鎴戜滑涔熷緱鍒颁簡鍦ㄥ叏鎺掑垪涓幓鎺夐噸澶嶇殑瑙勫垯鈥斺€斿幓閲嶇殑鍏ㄦ帓鍒楀氨鏄粠绗竴涓暟瀛楄捣姣忎釜鏁板垎鍒笌瀹冨悗闈㈤潪閲嶅鍑虹幇鐨勬暟瀛椾氦鎹€備笅闈㈢粰鍑哄畬鏁翠唬鐮侊細#include

using namespace std;

#include

//鍦╗nBegin,nEnd)鍖洪棿涓槸鍚︽湁瀛楃涓庝笅鏍囦负pEnd鐨勫瓧绗︾浉绛?/p>

bool IsSwap(char* pBegin , char* pEnd)

{

char *p;

for(p = pBegin ; p < pEnd ; p++)

{

if(*p == *pEnd)

return false;

}

return true;

}

void Permutation(char* pStr , char *pBegin)

{

assert(pStr);

if(*pBegin == '\0')

{

static int num = 1; //灞€閮ㄩ潤鎬佸彉閲忥紝鐢ㄦ潵缁熻鍏ㄦ帓鍒楃殑涓暟

printf("绗?d涓帓鍒梊t%s\n",num++,pStr);

}

else

{

for(char *pCh = pBegin; *pCh != '\0'; pCh++) //绗琾Begin涓暟鍒嗗埆涓庡畠鍚庨潰鐨勬暟瀛椾氦鎹㈠氨鑳藉緱鍒版柊鐨勬帓鍒?

{

if(IsSwap(pBegin , pCh))

{

swap(*pBegin , *pCh);

Permutation(pStr , pBegin + 1);

swap(*pBegin , *pCh);

}

}

}

}

int main(void)

{

char str[] = "baa";

Permutation(str , str);

return 0;

}OK锛屽埌鐜板湪鎴戜滑宸茬粡鑳界啛缁冨啓鍑洪€掑綊鐨勬柟娉曚簡锛屽苟涓旇€冭檻浜嗗瓧绗︿覆涓殑閲嶅鏁版嵁鍙兘寮曞彂鐨勯噸澶嶆暟鍒楅棶棰樸€傞偅涔堝浣曚娇鐢ㄩ潪閫掑綊鐨勬柟娉曟潵寰楀埌鍏ㄦ帓鍒椾簡锛?涓夈€佸叏鎺掑垪鐨勯潪閫掑綊瀹炵幇 瑕佽€冭檻鍏ㄦ帓鍒楃殑闈為€掑綊瀹炵幇锛屽厛鏉ヨ€冭檻濡備綍璁$畻瀛楃涓茬殑涓嬩竴涓帓鍒椼€傚"1234"鐨勪笅涓€涓帓鍒楀氨鏄?1243"銆傚彧瑕佸瀛楃涓插弽澶嶆眰鍑轰笅涓€涓帓鍒楋紝鍏ㄦ帓鍒楃殑涔熷氨杩庡垉鑰岃В浜嗐€?濡備綍璁$畻瀛楃涓茬殑涓嬩竴涓帓鍒椾簡锛熸潵鑰冭檻"926520"杩欎釜瀛楃涓诧紝鎴戜滑浠庡悗鍚戝墠鎵剧涓€鍙岀浉閭荤殑閫掑鏁板瓧锛?20"銆?52"閮芥槸闈為€掑鐨勶紝"26 "鍗虫弧瓒宠姹傦紝绉板墠涓€涓暟瀛?涓烘浛鎹㈡暟锛屾浛鎹㈡暟鐨勪笅鏍囩О涓烘浛鎹㈢偣锛屽啀浠庡悗闈㈡壘涓€涓瘮鏇挎崲鏁板ぇ鐨勬渶灏忔暟锛堣繖涓暟蹇呯劧瀛樺湪锛夛紝0銆?閮戒笉琛岋紝5鍙互锛屽皢5鍜?浜ゆ崲寰楀埌"956220"锛岀劧鍚庡啀灏嗘浛鎹㈢偣鍚庣殑瀛楃涓?6220"棰犲€掑嵆寰楀埌"950226"銆?瀵逛簬鍍忊€?321鈥濊繖绉嶅凡缁忔槸鏈€鈥滃ぇ鈥濈殑鎺掑垪锛岄噰鐢⊿TL涓殑澶勭悊鏂规硶锛屽皢瀛楃涓叉暣涓鍊掑緱鍒版渶鈥滃皬鈥濈殑鎺掑垪"1234"骞惰繑鍥瀎alse銆傝繖鏍凤紝鍙涓€涓惊鐜啀鍔犱笂璁$畻瀛楃涓蹭笅涓€涓帓鍒楃殑鍑芥暟灏卞彲浠ヨ交鏉剧殑瀹炵幇闈為€掑綊鐨勫叏鎺掑垪绠楁硶銆傛寜涓婇潰鎬濊矾骞跺弬鑰僑TL涓殑瀹炵幇婧愮爜锛屼笉闅惧啓鎴愪竴浠借川閲忚緝楂樼殑浠g爜銆傚€煎緱娉ㄦ剰鐨勬槸鍦ㄥ惊鐜墠瑕佸瀛楃涓叉帓搴忎笅锛屽彲浠ヨ嚜宸卞啓蹇€熸帓搴忕殑浠g爜锛堣鍙傞槄銆婄櫧璇濈粡鍏哥畻娉曚箣鍏?蹇€熸帓搴?蹇€熸悶瀹氥€嬶級锛屼篃鍙互鐩存帴浣跨敤VC搴撲腑鐨勫揩閫熸帓搴忓嚱鏁帮紙璇峰弬闃呫€婁娇鐢╒C搴撳嚱鏁颁腑鐨勫揩閫熸帓搴忓嚱鏁般€嬶級銆備笅闈㈠垪鍑哄畬鏁翠唬鐮侊細 聽 #include

#include

#include

using namespace std;

#include

//鍙嶈浆鍖洪棿

void Reverse(char* pBegin , char* pEnd)

{

while(pBegin < pEnd)

swap(*pBegin++ , *pEnd--);

}

//涓嬩竴涓帓鍒?/p>

bool Next_permutation(char a[])

{

assert(a);

char *p , *q , *pFind;

char *pEnd = a + strlen(a) - 1;

if(a == pEnd)

return false;

p = pEnd;

while(p != a)

{

q = p;

p--;

if(*p < *q) //鎵鹃檷搴忕殑鐩搁偦2鏁?鍓嶄竴涓暟鍗虫浛鎹㈡暟

{

//浠庡悗鍚戝墠鎵炬瘮鏇挎崲鐐瑰ぇ鐨勭涓€涓暟

pFind = pEnd;

while(*pFind < *p)

--pFind;

swap(*p , *pFind);

//鏇挎崲鐐瑰悗鐨勬暟鍏ㄩ儴鍙嶈浆

Reverse(q , pEnd);

return true;

}

}

Reverse(a , pEnd); //濡傛灉娌℃湁涓嬩竴涓帓鍒?鍏ㄩ儴鍙嶈浆鍚庤繑鍥瀎alse

return false;

}

int cmp(const void *a,const void *b)

{

return int(*(char *)a - *(char *)b);

}

int main(void)

{

char str[] = "bac";

int num = 1;

qsort(str , strlen(str),sizeof(char),cmp);

do

{

printf("绗?d涓帓鍒梊t%s\n",num++,str);

}while(Next_permutation(str));

return 0;

}鑷虫鎴戜滑宸茬粡杩愮敤浜嗛€掑綊涓庨潪閫掑綊鐨勬柟娉曡В鍐充簡鍏ㄦ帓鍒楅棶棰橈紝鎬荤粨涓€涓嬪氨鏄細 1銆佸叏鎺掑垪灏辨槸浠庣涓€涓暟瀛楄捣姣忎釜鏁板垎鍒笌瀹冨悗闈㈢殑鏁板瓧浜ゆ崲銆?2銆佸幓閲嶇殑鍏ㄦ帓鍒楀氨鏄粠绗竴涓暟瀛楄捣姣忎釜鏁板垎鍒笌瀹冨悗闈㈤潪閲嶅鍑虹幇鐨勬暟瀛椾氦鎹€?3銆佸叏鎺掑垪鐨勯潪閫掑綊灏辨槸鐢卞悗鍚戝墠鎵炬浛鎹㈡暟鍜屾浛鎹㈢偣锛岀劧鍚庣敱鍚庡悜鍓嶆壘绗竴涓瘮鏇挎崲鏁板ぇ鐨勬暟涓庢浛鎹㈡暟浜ゆ崲锛屾渶鍚庨鍊掓浛鎹㈢偣鍚庣殑鎵€鏈夋暟鎹€備簩銆佸瓧绗︿覆鐨勭粍鍚?棰樼洰锛氳緭鍏ヤ竴涓瓧绗︿覆锛岃緭鍑鸿瀛楃涓蹭腑瀛楃鐨勬墍鏈夌粍鍚堛€備妇涓緥瀛愶紝濡傛灉杈撳叆abc锛屽畠鐨勭粍鍚堟湁a銆乥銆乧銆乤b銆乤c銆乥c銆乤bc銆?涓婇潰鎴戜滑璇︾粏璁ㄨ浜嗗浣曠敤閫掑綊鐨勬€濊矾姹傚瓧绗︿覆鐨勬帓鍒椼€傚悓鏍凤紝鏈涔熷彲浠ョ敤閫掑綊鐨勬€濊矾鏉ユ眰瀛楃涓茬殑缁勫悎銆?鍋囪鎴戜滑鎯冲湪闀垮害涓簄鐨勫瓧绗︿覆涓眰m涓瓧绗︾殑缁勫悎銆傛垜浠厛浠庡ご鎵弿瀛楃涓茬殑绗竴涓瓧绗︺€傞拡瀵圭涓€涓瓧绗︼紝鎴戜滑鏈変袱绉嶉€夋嫨锛氱涓€鏄妸杩欎釜瀛楃鏀惧埌缁勫悎涓幓锛屾帴涓嬫潵鎴戜滑闇€瑕佸湪鍓╀笅鐨刵-1涓瓧绗︿腑閫夊彇m-1涓瓧绗︼紱绗簩鏄笉鎶婅繖涓瓧绗︽斁鍒扮粍鍚堜腑鍘伙紝鎺ヤ笅鏉ユ垜浠渶瑕佸湪鍓╀笅鐨刵-1涓瓧绗︿腑閫夋嫨m涓瓧绗︺€傝繖涓ょ閫夋嫨閮藉緢瀹规槗鐢ㄩ€掑綊瀹炵幇銆備笅闈㈡槸杩欑鎬濊矾鐨勫弬鑰冧唬鐮侊細#include

#include

#include

using namespace std;

#include

void Combination(char *string ,int number,vector &result);

void Combination(char *string)

{

assert(string != NULL);

vector result;

int i , length = strlen(string);

for(i = 1 ; i <= length ; ++i)

Combination(string , i ,result);

}

void Combination(char *string ,int number , vector &result)

{

assert(string != NULL);

if(number == 0)

{

static int num = 1;

printf("绗?d涓粍鍚圽t",num++);

vector::iterator iter = result.begin();

for( ; iter != result.end() ; ++iter)

printf("%c",*iter);

printf("\n");

return ;

}

if(*string == '\0')

return ;

result.push_back(*string);

Combination(string + 1 , number - 1 , result);

result.pop_back();

Combination(string + 1 , number , result);

}

int main(void)

{

char str[] = "abc";

Combination(str);

return 0;

} 鐢变簬缁勫悎鍙互鏄?涓瓧绗︾殑缁勫悎锛?涓瓧绗︾殑瀛楃鈥︹€︿竴鐩村埌n涓瓧绗︾殑缁勫悎锛屽洜姝ゅ湪鍑芥暟void Combination(char* string)锛屾垜浠渶瑕佷竴涓猣or寰幆銆傚彟澶栵紝鎴戜滑涓€涓獀ector鏉ュ瓨鏀鹃€夋嫨鏀捐繘缁勫悎閲岀殑瀛楃銆?瀛楃涓插叏鎺掑垪鎵╁睍----鍏殗鍚庨棶棰樎犅犅?棰樼洰锛氬湪8脳8鐨勫浗闄呰薄妫嬩笂鎽嗘斁鍏釜鐨囧悗锛屼娇鍏朵笉鑳界浉浜掓敾鍑伙紝鍗充换鎰忎袱涓殗鍚庝笉寰楀鍦ㄥ悓涓€琛屻€佸悓涓€鍒楁垨鑰呭悓涓€瀵硅鏂滅嚎涓娿€備笅鍥句腑鐨勬瘡涓粦鑹叉牸瀛愯〃绀轰竴涓殗鍚庯紝杩欏氨鏄竴绉嶇鍚堟潯浠剁殑鎽嗘斁鏂规硶銆傝姹傚嚭鎬诲叡鏈夊灏戠鎽嗘硶銆? 聽聽聽 杩欏氨鏄湁鍚嶇殑鍏殗鍚庨棶棰樸€傝В鍐宠繖涓棶棰橀€氬父闇€瑕佺敤閫掑綊锛岃€岄€掑綊瀵圭紪绋嬭兘鍔涚殑瑕佹眰姣旇緝楂樸€傚洜姝ゆ湁涓嶅皯闈㈣瘯瀹橀潚鐫愯繖涓鐩紝鐢ㄦ潵鑰冨療搴旇仒鑰呯殑鍒嗘瀽澶嶆潅闂鐨勮兘鍔涗互鍙婄紪绋嬬殑鑳藉姏銆?鐢变簬鍏釜鐨囧悗鐨勪换鎰忎袱涓笉鑳藉鍦ㄥ悓涓€琛岋紝閭d箞杩欒偗瀹氭槸姣忎竴涓殗鍚庡崰鎹竴琛屻€備簬鏄垜浠彲浠ュ畾涔変竴涓暟缁凜olumnIndex[8]锛屾暟缁勪腑绗琲涓暟瀛楄〃绀轰綅浜庣i琛岀殑鐨囧悗鐨勫垪鍙枫€傚厛鎶奀olumnIndex鐨勫叓涓暟瀛楀垎鍒敤0-7鍒濆鍖栵紝鎺ヤ笅鏉ユ垜浠鍋氱殑浜嬫儏灏辨槸瀵规暟缁凜olumnIndex鍋氬叏鎺掑垪銆傜敱浜庢垜浠槸鐢ㄤ笉鍚岀殑鏁板瓧鍒濆鍖栨暟缁勪腑鐨勬暟瀛楋紝鍥犳浠绘剰涓や釜鐨囧悗鑲畾涓嶅悓鍒椼€傛垜浠彧闇€瑕佸垽鏂緱鍒扮殑姣忎竴涓帓鍒楀搴旂殑鍏釜鐨囧悗鏄笉鏄湪鍚屼竴瀵硅鏂滅嚎涓婏紝涔熷氨鏄暟缁勭殑涓や釜涓嬫爣i鍜宩锛屾槸涓嶆槸i-j==ColumnIndex[i]-Column[j]鎴栬€卝-i==ColumnIndex[i]-ColumnIndex[j]銆?鍏充簬鎺掑垪鐨勮缁嗚璁猴紝璇﹁涓婇潰鐨勮瑙c€?鎺ヤ笅鏉ュ氨鏄啓浠g爜浜嗐€傛€濊矾鎯虫竻妤氫箣鍚庯紝缂栫爜骞朵笉鏄緢闅剧殑浜嬫儏銆備笅闈㈡槸涓€娈靛弬鑰冧唬鐮侊細 聽 #include

using namespace std;

int g_number = 0;

void Permutation(int * , int , int );

void Print(int * , int );

void EightQueen( )

{

const int queens = 8;

int ColumnIndex[queens];

for(int i = 0 ; i < queens ; ++i)

ColumnIndex[i] = i; //鍒濆鍖?/p>

Permutation(ColumnIndex , queens , 0);

}

bool Check(int ColumnIndex[] , int length)

{

int i,j;

for(i = 0 ; i < length; ++i)

{

for(j = i + 1 ; j < length; ++j)

{

if( i - j == ColumnIndex[i] - ColumnIndex[j] || j - i == ColumnIndex[i] - ColumnIndex[j]) //鍦ㄦ銆佸壇瀵硅绾夸笂

return false;

}

}

return true;

}

void Permutation(int ColumnIndex[] , int length , int index)

{

if(index == length)

{

if( Check(ColumnIndex , length) ) //妫€娴嬫鐩樺綋鍓嶇殑鐘舵€佹槸鍚﹀悎娉?/p>

{

++g_number;

Print(ColumnIndex , length);

}

}

else

{

for(int i = index ; i < length; ++i) //鍏ㄦ帓鍒?/p>

{

swap(ColumnIndex[index] , ColumnIndex[i]);

Permutation(ColumnIndex , length , index + 1);

swap(ColumnIndex[index] , ColumnIndex[i]);

}

}

}

void Print(int ColumnIndex[] , int length)

{

printf("%d\n",g_number);

for(int i = 0 ; i < length; ++i)

printf("%d ",ColumnIndex[i]);

printf("\n");

}

int main(void)

{

EightQueen();

return 0;

}杞浇锛歨ttp://zhedahht.blog.163.co聽 聽

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-15 11:24:26聽

鍘熸枃閾炬帴

闃呰锛?544 璇勮锛?聽

鏌ョ湅璇勮

聽[鍘焆C++缁忓吀闈㈣瘯棰?1銆佷互涓嬩笁鏉¤緭鍑鸿鍙ュ垎鍒緭鍑轰粈涔堬紵 聽 char str1[] = "abc";

char str2[] = "abc";

const char str3[] = "abc";

const char str4[] = "abc";

const char* str5 = "abc";

const char* str6 = "abc";

cout << boolalpha << ( str1==str2 ) << endl; // 杈撳嚭浠€涔堬紵

cout << boolalpha << ( str3==str4 ) << endl; // 杈撳嚭浠€涔堬紵

cout << boolalpha << ( str5==str6 ) << endl; // 杈撳嚭浠€涔堬紵 绛旓細鍒嗗埆杈撳嚭false,false,true銆俿tr1鍜宻tr2閮芥槸瀛楃鏁扮粍锛屾瘡涓兘鏈夊叾鑷繁鐨勫瓨鍌ㄥ尯锛屽畠浠殑鍊煎垯鏄悇瀛樺偍鍖洪鍦板潃锛屼笉绛夛紱str3鍜宻tr4鍚屼笂锛屽彧鏄寜const璇箟锛屽畠浠墍鎸囧悜鐨勬暟鎹尯涓嶈兘淇敼銆俿tr5鍜宻tr6骞堕潪鏁扮粍鑰屾槸瀛楃鎸囬拡锛屽苟涓嶅垎閰嶅瓨鍌ㄥ尯锛屽叾鍚庣殑鈥渁bc鈥濅互甯搁噺褰㈠紡瀛樹簬闈欐€佹暟鎹尯锛岃€屽畠浠嚜宸变粎鏄寚鍚戣鍖洪鍦板潃鐨勬寚閽堬紝鎵€浠ョ浉绛夈€?2銆佷笅闈唬鐮佺殑杈撳嚭鏄粈涔堬紵 聽 float a = 1.0f;

cout<< (int)a <

cout<< (int&)a <

cout << boolalpha << ( (int)a==(int&)a ) << endl; // 杈撳嚭浠€涔堬紵

float b = 0.0f;

cout<< (int)b <

cout<< (int&)b <

cout << boolalpha << ( (int)b==(int&)b ) << endl; // 杈撳嚭浠€涔堬紵 娴偣鏁扮殑 1.0f 鍦ㄥ唴瀛橀噷鏄繖鏍疯〃绀虹殑锛毬?0011 1111 1000 0000 00000000 00000000聽 杩欎釜32浣嶄簩杩涘埗鏁拌褰撲綔鏁存暟杈撳嚭灏辨槸锛毬?1065353216聽 鑰屾暣鏁扮殑 1 鍦ㄥ唴瀛橀噷鏄繖鏍疯〃绀虹殑锛毬?0000 0000 0000 0000 00000000 00000001聽 鎵€浠?(int)a != (int&)a聽 娴偣鐨?鍜屾暣鏁扮殑0 鍦ㄥ唴瀛橀噷閮芥槸锛毬?0000 0000 0000 0000 00000000 00000000聽 鎵€浠?(int)b == (int&)b聽 3銆佷互涓嬩唬鐮佷腑鐨勪袱涓猻izeof鐢ㄦ硶鏈夐棶棰樺悧锛?聽 void UpperCase( char str[] ) // 灏唖tr 涓殑灏忓啓瀛楁瘝杞崲鎴愬ぇ鍐欏瓧姣?/p>

{

for( size_t i=0; i

{

if( 'a'<=str[i] && str[i]<='z' )

{

str[i] -= ('a'-'A' );

}

}

}

int main(void)

{

char str[] = "aBcDe";

cout << "str瀛楃闀垮害涓? " << sizeof(str)/sizeof(str[0]) << endl;

UpperCase( str );

cout << str << endl;

return 0;

}4銆侀潪C++鍐呭缓鍨嬪埆A鍜孊锛屽湪鍝嚑绉嶆儏鍐典笅B鑳介殣寮忚浆鍖栦负A锛?5銆佷互涓嬩唬鐮佹湁浠€涔堥棶棰橈紵聽 struct Test

{

Test(int ) { }

Test() { }

void fun() { }

};

int main(void)

{

Test a(1);

a.fun();

Test b();

b.fun();

return 0;

}6銆佷互涓嬩唬鐮佹湁浠€涔堥棶棰橈紵 聽 聽 cout<< (true?1:"0") <

{

unsigned int const size1 = 2;

char str1[ size1 ];

unsigned int temp = 0;

cin >> temp;

unsigned int const size2 = temp;

char str2[ size2 ];

return 0;

}8銆佷互涓嬪弽鍚戦亶鍘哸rray鏁扮粍鐨勬柟娉曟湁浠€涔堥敊璇紵int main(void)

{

vector array;

array.push_back( 1 );

array.push_back( 2 );

array.push_back( 3 );

for( vector::size_type i=array.size()-1; i>=0; --i ) // 鍙嶅悜閬嶅巻array鏁扮粍

{

cout << array[i] << endl;

}

return 0;

} 9銆佷互涓嬩唬鐮佷腑鐨勮緭鍑鸿鍙ヨ緭鍑哄悧锛屼负浠€涔堬紵 聽 struct CLS

{

int m_i;

CLS(int i): m_i( i ) { }

CLS()

{

CLS( 0 );

}

};

int main(void)

{

CLS obj;

cout << obj.m_i << endl;

return 0;

}10銆丆++涓殑绌虹被锛岄粯璁や骇鐢熷摢浜涚被鎴愬憳鍑芥暟锛?1銆?浠ヤ笅浠g爜鏈変粈涔堥棶棰樺悧锛?聽 int main(void)

{

typedef vector IntArray;

IntArray array;

array.push_back( 1 );

array.push_back( 2 );

array.push_back( 2 );

array.push_back( 3 );

// 鍒犻櫎array鏁扮粍涓墍鏈夌殑2

for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor )

{

if( 2 == *itor )

{

array.erase( itor );

}

}

return 0;

}12銆?鍐欎竴涓嚱鏁帮紝瀹屾垚鍐呭瓨涔嬮棿鐨勬嫹璐濄€俒鑰冭檻闂鏄惁鍏ㄩ潰] 聽 聽 绛旀锛?2銆佸垎鍒緭鍑篺alse鍜宼rue銆傛敞鎰忚浆鎹㈢殑搴旂敤銆?int)a瀹為檯涓婃槸浠ユ诞鐐规暟a涓哄弬鏁版瀯閫犱簡涓€涓暣鍨嬫暟锛岃鏁存暟鐨勫€兼槸锛?int&)a鍒欐槸鍛婅瘔缂栬瘧鍣ㄥ皢a褰撲綔鏁存暟鐪嬶紙骞舵病鏈夊仛浠讳綍瀹炶川涓婄殑杞崲锛夈€傚洜涓轰互鏁存暟褰㈠紡瀛樻斁鍜屼互娴偣褰㈠紡瀛樻斁鍏跺唴瀛樻暟鎹槸涓嶄竴鏍风殑锛屽洜姝や袱鑰呬笉绛夈€傚b鐨勪袱绉嶈浆鎹㈡剰涔夊悓涓婏紝浣嗘槸鐨勬暣鏁板舰寮忓拰娴偣褰㈠紡鍏跺唴瀛樻暟鎹槸涓€鏍风殑锛屽洜姝ゅ湪杩欑鐗规畩鎯呭舰涓嬶紝涓よ€呯浉绛夛紙浠呬粎鍦ㄦ暟鍊兼剰涔変笂锛夈€?聽 娉ㄦ剰锛岀▼搴忕殑杈撳嚭浼氭樉绀?int&)a=1065353216锛岃繖涓€兼槸鎬庝箞鏉ョ殑鍛紵鍓嶉潰宸茬粡璇翠簡锛屼互娴偣鏁板舰寮忓瓨鏀惧湪鍐呭瓨涓紝鎸塱eee754瑙勫畾锛屽叾鍐呭涓簒0000803F锛堝凡鑰冭檻瀛楄妭鍙嶅簭锛夈€傝繖涔熷氨鏄痑杩欎釜鍙橀噺鎵€鍗犳嵁鐨勫唴瀛樺崟鍏冪殑鍊笺€傚綋(int&)a鍑虹幇鏃讹紝瀹冪浉褰撲簬鍛婅瘔瀹冪殑涓婁笅鏂囷細鈥滄妸杩欏潡鍦板潃褰撳仛鏁存暟鐪嬪緟锛佷笉瑕佺瀹冨師鏉ユ槸浠€涔堛€傗€濊繖鏍凤紝鍐呭x0000803F鎸夋暣鏁拌В閲婏紝鍏跺€兼濂藉氨鏄紙鍗佽繘鍒舵暟锛夈€?聽 閫氳繃鏌ョ湅姹囩紪浠g爜鍙互璇佸疄鈥?int)a鐩稿綋浜庨噸鏂版瀯閫犱簡涓€涓€肩瓑浜巃鐨勬暣鍨嬫暟鈥濅箣璇达紝鑰?int&)鐨勪綔鐢ㄥ垯浠呬粎鏄〃杈句簡涓€涓被鍨嬩俊鎭紝鎰忎箟鍦ㄤ簬涓篶out<<鍙?=閫夋嫨姝g‘鐨勯噸杞界増鏈€?3銆佺瓟锛氬嚱鏁板唴鐨剆izeof鏈夐棶棰樸€傛牴鎹娉曪紝sizeof濡傜敤浜庢暟缁勶紝鍙兘娴嬪嚭闈欐€佹暟缁勭殑澶у皬锛屾棤娉曟娴嬪姩鎬佸垎閰嶇殑鎴栧閮ㄦ暟缁勫ぇ灏忋€傚嚱鏁板鐨剆tr鏄竴涓潤鎬佸畾涔夌殑鏁扮粍锛屽洜姝ゅ叾澶у皬涓猴紝鍑芥暟鍐呯殑str瀹為檯鍙槸涓€涓寚鍚戝瓧绗︿覆鐨勬寚閽堬紝娌℃湁浠讳綍棰濆鐨勪笌鏁扮粍鐩稿叧鐨勪俊鎭紝鍥犳sizeof浣滅敤浜庝笂鍙皢鍏跺綋鎸囬拡鐪嬶紝涓€涓寚閽堜负涓瓧鑺傦紝鍥犳杩斿洖銆?4銆佺瓟锛?a. class B : public A { 鈥︹€ // B鍏湁缁ф壙鑷狝锛屽彲浠ユ槸闂存帴缁ф壙鐨?b. class B { operator A( ); } // B瀹炵幇浜嗛殣寮忚浆鍖栦负A鐨勮浆鍖?c. class A { A( const B& ); } // A瀹炵幇浜唍on-explicit鐨勫弬鏁颁负B锛堝彲浠ユ湁鍏朵粬甯﹂粯璁ゅ€肩殑鍙傛暟锛夋瀯閫犲嚱鏁?d. A& operator= ( const A& ); // 璧嬪€兼搷浣滐紝铏戒笉鏄瀹楃殑闅愬紡绫诲瀷杞崲锛屼絾涔熷媺寮虹畻涓€涓?5銆佺瓟锛氬彉閲廱瀹氫箟鍑洪敊銆傛寜榛樿鏋勯€犲嚱鏁板畾涔夊璞★紝涓嶉渶瑕佸姞鎷彿銆?6銆佺瓟锛氫笁鍏冭〃杈惧紡鈥?:鈥濋棶鍙峰悗闈㈢殑涓や釜鎿嶄綔鏁板繀椤讳负鍚屼竴绫诲瀷銆?7銆佺瓟锛歴tr2瀹氫箟鍑洪敊锛宻ize2闈炵紪璇戝櫒鏈熼棿甯搁噺锛岃€屾暟缁勫畾涔夎姹傞暱搴﹀繀椤讳负缂栬瘧鏈熷父閲忋€?8銆佺瓟锛氶鍏堟暟缁勫畾涔夋湁璇紝搴斿姞涓婄被鍨嬪弬鏁帮細vector array銆傚叾娆ector::size_type琚畾涔変负unsigned int锛屽嵆鏃犵鍙锋暟锛岃繖鏍蜂綔涓哄惊鐜彉閲忕殑i涓?鏃跺啀鍑忓氨浼氬彉鎴愭渶澶х殑鏁存暟锛屽鑷村惊鐜け鍘绘帶鍒躲€?聽 int main(void)

{

vector array;

array.push_back(1);

array.push_back(2);

array.push_back(3);

for(int i = array.size() - 1 ; i >= 0 ; --i)

cout<

return 0;

}9銆佺瓟锛氫笉鑳姐€傚湪榛樿鏋勯€犲嚱鏁板唴閮ㄥ啀璋冪敤甯﹀弬鐨勬瀯閫犲嚱鏁板睘鐢ㄦ埛琛屼负鑰岄潪缂栬瘧鍣ㄨ涓猴紝浜﹀嵆浠呮墽琛屽嚱鏁拌皟鐢紝鑰屼笉浼氭墽琛屽叾鍚庣殑鍒濆鍖栬〃杈惧紡銆傚彧鏈夊湪鐢熸垚瀵硅薄鏃讹紝鍒濆鍖栬〃杈惧紡鎵嶄細闅忕浉搴旂殑鏋勯€犲嚱鏁颁竴璧疯皟鐢ㄣ€?10銆?聽 class Empty

{

public:

Empty(); //缂虹渷鏋勯€犲嚱鏁?/p>

Empty(const Empty &); //鎷疯礉鏋勯€犲嚱鏁?/p>

~Empty(); //鏋愭瀯鍑芥暟

Empty & operator=(const Empty &); //璧嬪€艰繍绠楃

Empty* operator&(); //鍙栧潃杩愮畻绗?/p>

const Empty* operator&() const; //鍙栧潃杩愮畻绗onst

};11銆佺瓟锛氬悓鏍锋湁缂哄皯绫诲瀷鍙傛暟鐨勯棶棰樸€傚彟澶栵紝姣忔璋冪敤鈥渁rray.erase(itor);鈥濓紝琚垹闄ゅ厓绱犱箣鍚庣殑鍐呭浼氳嚜鍔ㄥ線鍓嶇Щ锛屽鑷磋凯浠f紡椤癸紝搴斿湪鍒犻櫎涓€椤瑰悗浣縤tor--锛屼娇涔嬩粠宸茬粡鍓嶇Щ鐨勪笅涓€涓厓绱犺捣缁х画閬嶅巻銆俰nt main(void)

{

typedef vector IntArray;

IntArray array;

array.push_back( 1 );

array.push_back( 2 );

array.push_back( 2 );

array.push_back( 3 );

// 鍒犻櫎array鏁扮粍涓墍鏈夌殑2

for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor )

{

if( 2 == *itor )

{

itor = array.erase( itor );

itor--;

}

}

return 0;

} 12銆?聽 // 鍔熻兘锛氱敱src鎵€鎸囧唴瀛樺尯鍩熷鍒禼ount涓瓧鑺傚埌dest鎵€鎸囧唴瀛樺尯鍩熴€?/p>

// 璇存槑锛歴rc鍜宒est鎵€鎸囧唴瀛樺尯鍩熷彲浠ラ噸鍙狅紝浣嗗鍒跺悗dest鍐呭浼氳鏇存敼銆傚嚱鏁拌繑鍥炴寚鍚慸est鐨勬寚閽?/p>

void *memmove(void *dest , const void *src , size_t count)

{

assert( (dest != NULL) && (src != NULL)); //瀹夊叏妫€鏌?/p>

assert( count > 0 );

char *psrc = (char *) src;

char *pdest = (char *) dest;

//妫€鏌ユ槸鍚︽湁閲嶅彔闂

if( pdest < psrc )

{

//姝e悜鎷疯礉

while( count-- )

*pdest++ = *psrc++;

}

else if( psrc < pdest )

{

//鍙嶅悜鎷疯礉

psrc = psrc + count - 1;

pdest = pdest + count - 1;

while( count-- )

*pdest-- = *psrc--;

}

return dest;

}

// 鍔熻兘锛氱敱src鎸囧悜鍦板潃涓鸿捣濮嬪湴鍧€鐨勮繛缁璶涓瓧鑺傜殑鏁版嵁澶嶅埗鍒颁互dest鎸囧悜鍦板潃涓鸿捣濮嬪湴鍧€鐨勭┖闂村唴銆?/p>

// 璇存槑锛歴rc鍜宒est鎵€鎸囧唴瀛樺尯鍩熶笉鑳介噸鍙狅紝鍑芥暟杩斿洖鎸囧悜dest鐨勬寚閽?/p>

void *memmcpy(void *dest , const void *src , size_t count)

{

assert( (dest != NULL) && (src != NULL)); //瀹夊叏妫€鏌?/p>

assert( count > 0 );

char *psrc = (char *) src;

char *pdest = (char *) dest;

while( count-- )

*pdest++ = *psrc++;

return dest;

} 聽 聽 聽 聽

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-16 20:02:43聽

鍘熸枃閾炬帴

闃呰锛?50 璇勮锛?聽

鏌ョ湅璇勮

聽[鍘焆娴呰皥C++澶氭€佹€犅犅犅犅犅犅?C++缂栫▼璇█鏄竴娆惧簲鐢ㄥ箍娉涳紝鏀寔澶氱绋嬪簭璁捐鐨勮绠楁満缂栫▼璇█銆傛垜浠粖澶╁氨浼氫负澶у璇︾粏浠嬬粛鍏朵腑C++澶氭€佹€х殑涓€浜涘熀鏈煡璇嗭紝浠ユ柟渚垮ぇ瀹跺湪瀛︿範杩囩▼涓姝よ兘澶熸湁涓€涓厖鍒嗙殑鎺屾彙銆?澶氭€佹€у彲浠ョ畝鍗曞湴姒傛嫭涓衡€滀竴涓帴鍙o紝澶氱鏂规硶鈥濓紝绋嬪簭鍦ㄨ繍琛屾椂鎵嶅喅瀹氳皟鐢ㄧ殑鍑芥暟锛屽畠鏄潰鍚戝璞$紪绋嬮鍩熺殑鏍稿績姒傚康銆傚鎬?polymorphisn)锛屽瓧闈㈡剰鎬濆绉嶅舰鐘躲€?C++澶氭€佹€ф槸閫氳繃铏氬嚱鏁版潵瀹炵幇鐨勶紝铏氬嚱鏁板厑璁稿瓙绫婚噸鏂板畾涔夋垚鍛樺嚱鏁帮紝鑰屽瓙绫婚噸鏂板畾涔夌埗绫荤殑鍋氭硶绉颁负瑕嗙洊(override)锛屾垨鑰呯О涓洪噸鍐欍€傦紙杩欓噷鎴戣寰楄琛ュ厖锛岄噸鍐欑殑璇濆彲浠ユ湁涓ょ锛岀洿鎺ラ噸鍐欐垚鍛樺嚱鏁板拰閲嶅啓铏氬嚱鏁帮紝鍙湁閲嶅啓浜嗚櫄鍑芥暟鐨勬墠鑳界畻浣滄槸浣撶幇浜咰++澶氭€佹€э級鑰岄噸杞藉垯鏄厑璁告湁澶氫釜鍚屽悕鐨勫嚱鏁帮紝鑰岃繖浜涘嚱鏁扮殑鍙傛暟鍒楄〃涓嶅悓锛屽厑璁稿弬鏁颁釜鏁颁笉鍚岋紝鍙傛暟绫诲瀷涓嶅悓锛屾垨鑰呬袱鑰呴兘涓嶅悓銆傜紪璇戝櫒浼氭牴鎹繖浜涘嚱鏁扮殑涓嶅悓鍒楄〃锛屽皢鍚屽悕鐨勫嚱鏁扮殑鍚嶇О鍋氫慨楗帮紝浠庤€岀敓鎴愪竴浜涗笉鍚屽悕绉扮殑棰勫鐞嗗嚱鏁帮紝鏉ュ疄鐜板悓鍚嶅嚱鏁拌皟鐢ㄦ椂鐨勯噸杞介棶棰樸€備絾杩欏苟娌℃湁浣撶幇澶氭€佹€с€?澶氭€佷笌闈炲鎬佺殑瀹炶川鍖哄埆灏辨槸鍑芥暟鍦板潃鏄棭缁戝畾杩樻槸鏅氱粦瀹氥€傚鏋滃嚱鏁扮殑璋冪敤锛屽湪缂栬瘧鍣ㄧ紪璇戞湡闂村氨鍙互纭畾鍑芥暟鐨勮皟鐢ㄥ湴鍧€锛屽苟鐢熶骇浠g爜锛屾槸闈欐€佺殑锛屽氨鏄鍦板潃鏄棭缁戝畾鐨勩€傝€屽鏋滃嚱鏁拌皟鐢ㄧ殑鍦板潃涓嶈兘鍦ㄧ紪璇戝櫒鏈熼棿纭畾锛岄渶瑕佸湪杩愯鏃舵墠纭畾锛岃繖灏卞睘浜庢櫄缁戝畾銆?閭d箞澶氭€佺殑浣滅敤鏄粈涔堝憿锛屽皝瑁呭彲浠ヤ娇寰椾唬鐮佹ā鍧楀寲锛岀户鎵垮彲浠ユ墿灞曞凡瀛樺湪鐨勪唬鐮侊紝浠栦滑鐨勭洰鐨勯兘鏄负浜嗕唬鐮侀噸鐢ㄣ€傝€屽鎬佺殑鐩殑鍒欐槸涓轰簡鎺ュ彛閲嶇敤銆備篃灏辨槸璇达紝涓嶈浼犻€掕繃鏉ョ殑绌剁珶鏄偅涓被鐨勫璞★紝鍑芥暟閮借兘澶熼€氳繃鍚屼竴涓帴鍙h皟鐢ㄥ埌閫傚簲鍚勮嚜瀵硅薄鐨勫疄鐜版柟娉曘€傘€€銆€鏈€甯歌鐨勭敤娉曞氨鏄0鏄庡熀绫荤殑鎸囬拡锛屽埄鐢ㄨ鎸囬拡鎸囧悜浠绘剰涓€涓瓙绫诲璞★紝璋冪敤鐩稿簲鐨勮櫄鍑芥暟锛屽彲浠ユ牴鎹寚鍚戠殑瀛愮被鐨勪笉鍚岃€屽疄鐜颁笉鍚岀殑鏂规硶銆傚鏋滄病鏈変娇鐢ㄨ櫄鍑芥暟鐨勮瘽锛屽嵆娌℃湁鍒╃敤C++澶氭€佹€э紝鍒欏埄鐢ㄥ熀绫绘寚閽堣皟鐢ㄧ浉搴旂殑鍑芥暟鐨勬椂鍊欙紝灏嗘€昏闄愬埗鍦ㄥ熀绫诲嚱鏁版湰韬紝鑰屾棤娉曡皟鐢ㄥ埌瀛愮被涓閲嶅啓杩囩殑鍑芥暟銆傚洜涓烘病鏈夊鎬佹€э紝鍑芥暟璋冪敤鐨勫湴鍧€灏嗘槸涓€瀹氱殑锛岃€屽浐瀹氱殑鍦板潃灏嗗缁堣皟鐢ㄥ埌鍚屼竴涓嚱鏁帮紝杩欏氨鏃犳硶瀹炵幇涓€涓帴鍙o紝澶氱鏂规硶鐨勭洰鐨勪簡銆?绗旇瘯棰樼洰锛?聽 #include

using namespace std;

class A

{

public:

void foo()

{

printf("1\n");

}

virtual void fun()

{

printf("2\n");

}

};

class B : public A

{

public:

void foo()

{

printf("3\n");

}

void fun()

{

printf("4\n");

}

};

int main(void)

{

A a;

B b;

A *p = &a;

p->foo();

p->fun();

p = &b;

p->foo();

p->fun();

return 0;

}聽聽聽聽聽 绗竴涓猵->foo()鍜宲->fuu()閮藉緢濂界悊瑙o紝鏈韩鏄熀绫绘寚閽堬紝鎸囧悜鐨勫張鏄熀绫诲璞★紝璋冪敤鐨勯兘鏄熀绫绘湰韬殑鍑芥暟锛屽洜姝よ緭鍑虹粨鏋滃氨鏄?銆?銆?聽銆€聽 绗簩涓緭鍑虹粨鏋滃氨鏄?銆?銆俻->foo()鍜宲->fuu()鍒欐槸鍩虹被鎸囬拡鎸囧悜瀛愮被瀵硅薄锛屾寮忎綋鐜板鎬佺殑鐢ㄦ硶锛宲->foo()鐢变簬鎸囬拡鏄釜鍩虹被鎸囬拡锛屾寚鍚戞槸涓€涓浐瀹氬亸绉婚噺鐨勫嚱鏁帮紝鍥犳姝ゆ椂鎸囧悜鐨勫氨鍙兘鏄熀绫荤殑foo()鍑芥暟鐨勪唬鐮佷簡锛屽洜姝よ緭鍑虹殑缁撴灉杩樻槸1銆傝€宲->fun()鎸囬拡鏄熀绫绘寚閽堬紝鎸囧悜鐨刦un鏄竴涓櫄鍑芥暟锛岀敱浜庢瘡涓櫄鍑芥暟閮芥湁涓€涓櫄鍑芥暟鍒楄〃锛屾鏃秔璋冪敤fun()骞朵笉鏄洿鎺ヨ皟鐢ㄥ嚱鏁帮紝鑰屾槸閫氳繃铏氬嚱鏁板垪琛ㄦ壘鍒扮浉搴旂殑鍑芥暟鐨勫湴鍧€锛屽洜姝ゆ牴鎹寚鍚戠殑瀵硅薄涓嶅悓锛屽嚱鏁板湴鍧€涔熷皢涓嶅悓锛岃繖閲屽皢鎵惧埌瀵瑰簲鐨勫瓙绫荤殑fun()鍑芥暟鐨勫湴鍧€锛屽洜姝よ緭鍑虹殑缁撴灉涔熶細鏄瓙绫荤殑缁撴灉4銆?绗旇瘯鐨勯鐩腑杩樻湁涓€涓彟绫绘祴璇曟柟娉曘€傚嵆 聽聽聽聽聽聽聽B *ptr = (B *)&a;聽 ptr->foo();聽 ptr->fun(); 闂繖涓よ皟鐢ㄧ殑杈撳嚭缁撴灉銆傝繖鏄竴涓敤瀛愮被鐨勬寚閽堝幓鎸囧悜涓€涓己鍒惰浆鎹负瀛愮被鍦板潃鐨勫熀绫诲璞°€傜粨鏋滐紝杩欎袱鍙ヨ皟鐢ㄧ殑杈撳嚭缁撴灉鏄?锛?銆?骞朵笉鏄緢鐞嗚В杩欑鐢ㄦ硶锛屼粠鍘熺悊涓婃潵瑙i噴锛岀敱浜嶣鏄瓙绫绘寚閽堬紝铏界劧琚祴浜堜簡鍩虹被瀵硅薄鍦板潃锛屼絾鏄痯tr->foo()鍦ㄨ皟鐢ㄧ殑鏃跺€欙紝鐢变簬鍦板潃鍋忕Щ閲忓浐瀹氾紝鍋忕Щ閲忔槸瀛愮被瀵硅薄鐨勫亸绉婚噺锛屼簬鏄嵆浣垮湪鎸囧悜浜嗕竴涓熀绫诲璞$殑鎯呭喌涓嬶紝杩樻槸璋冪敤鍒颁簡瀛愮被鐨勫嚱鏁帮紝铏界劧鍙兘浠庡鍒扮粓閮芥病鏈夊瓙绫诲璞$殑瀹炰緥鍖栧嚭鐜般€?鑰宲tr->fun()鐨勮皟鐢紝鍙兘杩樻槸鍥犱负C++澶氭€佹€х殑鍘熷洜锛岀敱浜庢寚鍚戠殑鏄竴涓熀绫诲璞★紝閫氳繃铏氬嚱鏁板垪琛ㄧ殑寮曠敤锛屾壘鍒颁簡鍩虹被涓璮un()鍑芥暟鐨勫湴鍧€锛屽洜姝よ皟鐢ㄤ簡鍩虹被鐨勫嚱鏁般€傜敱姝ゅ彲瑙佸鎬佹€х殑寮哄ぇ锛屽彲浠ラ€傚簲鍚勭鍙樺寲锛屼笉璁烘寚閽堟槸鍩虹被鐨勮繕鏄瓙绫荤殑锛岄兘鑳芥壘鍒版纭殑瀹炵幇鏂规硶銆?/灏忕粨锛?銆佹湁virtual鎵嶅彲鑳藉彂鐢熷鎬佺幇璞?/p>

// 2銆佷笉鍙戠敓澶氭€侊紙鏃爒irtual锛夎皟鐢ㄥ氨鎸夊師绫诲瀷璋冪敤

#include

using namespace std;

class Base

{

public:

virtual void f(float x)

{

cout<<"Base::f(float)"<< x <

}

void g(float x)

{

cout<<"Base::g(float)"<< x <

}

void h(float x)

{

cout<<"Base::h(float)"<< x <

}

};

class Derived : public Base

{

public:

virtual void f(float x)

{

cout<<"Derived::f(float)"<< x <

}

void g(int x)

{

cout<<"Derived::g(int)"<< x <

}

void h(float x)

{

cout<<"Derived::h(float)"<< x <

}

};

int main(void)

{

Derived d;

Base *pb = &d;

Derived *pd = &d;

// Good : behavior depends solely on type of the object

pb->f(3.14f); // Derived::f(float) 3.14

pd->f(3.14f); // Derived::f(float) 3.14

// Bad : behavior depends on type of the pointer

pb->g(3.14f); // Base::g(float) 3.14

pd->g(3.14f); // Derived::g(int) 3

// Bad : behavior depends on type of the pointer

pb->h(3.14f); // Base::h(float) 3.14

pd->h(3.14f); // Derived::h(float) 3.14

return 0;

}C++绾櫄鍑芥暟 聽涓€銆佸畾涔?聽 绾櫄鍑芥暟鏄湪鍩虹被涓0鏄庣殑铏氬嚱鏁帮紝瀹冨湪鍩虹被涓病鏈夊畾涔夛紝浣嗚姹備换浣曟淳鐢熺被閮借瀹氫箟鑷繁鐨勫疄鐜版柟娉曘€傚湪鍩虹被涓疄鐜扮函铏氬嚱鏁扮殑鏂规硶鏄湪鍑芥暟鍘熷瀷鍚庡姞鈥?0鈥澛?聽 virtual void funtion()=0聽 浜屻€佸紩鍏ュ師鍥?聽聽 1銆佷负浜嗘柟渚夸娇鐢ㄥ鎬佺壒鎬э紝鎴戜滑甯稿父闇€瑕佸湪鍩虹被涓畾涔夎櫄鎷熷嚱鏁般€偮?聽聽 2銆佸湪寰堝鎯呭喌涓嬶紝鍩虹被鏈韩鐢熸垚瀵硅薄鏄笉鍚堟儏鐞嗙殑銆備緥濡傦紝鍔ㄧ墿浣滀负涓€涓熀绫诲彲浠ユ淳鐢熷嚭鑰佽檸銆佸瓟闆€绛夊瓙绫伙紝浣嗗姩鐗╂湰韬敓鎴愬璞℃槑鏄句笉鍚堝父鐞嗐€偮?聽 涓轰簡瑙e喅涓婅堪闂锛屽紩鍏ヤ簡绾櫄鍑芥暟鐨勬蹇碉紝灏嗗嚱鏁板畾涔変负绾櫄鍑芥暟锛堟柟娉曪細virtual ReturnType Function()= 0;锛夛紝鍒欑紪璇戝櫒瑕佹眰鍦ㄦ淳鐢熺被涓繀椤讳簣浠ラ噸鍐欎互瀹炵幇澶氭€佹€с€傚悓鏃跺惈鏈夌函铏氭嫙鍑芥暟鐨勭被绉颁负鎶借薄绫伙紝瀹冧笉鑳界敓鎴愬璞°€傝繖鏍峰氨寰堝ソ鍦拌В鍐充簡涓婅堪涓や釜闂銆?涓夈€佺浉浼兼蹇?聽聽 1銆佸鎬佹€?聽 鎸囩浉鍚屽璞℃敹鍒颁笉鍚屾秷鎭垨涓嶅悓瀵硅薄鏀跺埌鐩稿悓娑堟伅鏃朵骇鐢熶笉鍚岀殑瀹炵幇鍔ㄤ綔銆侰++鏀寔涓ょ澶氭€佹€э細缂栬瘧鏃跺鎬佹€э紝杩愯鏃跺鎬佹€с€偮犅?a銆佺紪璇戞椂澶氭€佹€э細閫氳繃閲嶈浇鍑芥暟瀹炵幇聽 聽 b銆佽繍琛屾椂澶氭€佹€э細閫氳繃铏氬嚱鏁板疄鐜般€偮?聽 2銆佽櫄鍑芥暟聽 聽 铏氬嚱鏁版槸鍦ㄥ熀绫讳腑琚0鏄庝负virtual锛屽苟鍦ㄦ淳鐢熺被涓噸鏂板畾涔夌殑鎴愬憳鍑芥暟锛屽彲瀹炵幇鎴愬憳鍑芥暟鐨勫姩鎬佽鐩栵紙Override锛?聽 3銆佹娊璞$被聽 聽 鍖呭惈绾櫄鍑芥暟鐨勭被绉颁负鎶借薄绫汇€傜敱浜庢娊璞$被鍖呭惈浜嗘病鏈夊畾涔夌殑绾櫄鍑芥暟锛屾墍浠ヤ笉鑳藉畾涔夋娊璞$被鐨勫璞°€偮?聽 聽

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-18 22:45:14聽

鍘熸枃閾炬帴

闃呰锛?53 璇勮锛?聽

鏌ョ湅璇勮

聽[鍘焆N*N鍖归┈锛孨涓禌閬擄紝姹傚嚭鏈€蹇玁鍖归┈鐨勮В娉曞叆闂ㄧ骇锛?1鍖归┈锛?涓禌閬擄紝涓嶈鏃讹紝鏈€灏戣璧涘嚑鍦哄彲浠ユ眰鍑烘渶蹇洓鍖归┈锛?棣栧厛锛氬垎涓?缁勫垎鍒繘琛屾瘮璧涘悗寰楀埌姣忎竴缁勭殑姣旇禌鍚嶆锛屾瘮璧涘満娆★細9锛?鐒跺悗锛氬皢9缁勭殑姣忕粍绗竴鍚嶆瘮璧涳紝寰楀埌绗竴鍚嶏紝鑲畾鏄墍鏈夐┈鐨勭涓€鍚嶏紱姣旇禌鍦烘锛? 鏈€鍚庯細鍓╀笅椹腑鏈夎祫鏍艰閫愬墠鍥涘悕鐨勯┈鏈堿2銆丄3銆丄4銆丅1銆丅2銆丅3銆丆1銆丆2銆丏1锛屽垰濂芥湁9鍖归┈锛屽湪杩涜涓€鍦烘瘮璧涘氨鍙互浜嗭紝姣旇禌鍦烘锛?鎵€浠ユ渶灏戣繘琛?1鍦烘瘮璧涖€?鎻愰珮绾э細闂鏄繖鏍风殑锛氫竴鍏辨湁25鍖归┈锛屾湁涓€涓禌鍦猴紝璧涘満鏈?涓禌閬擄紝灏辨槸璇存渶澶氬悓鏃跺彲浠ユ湁5鍖归┈涓€璧锋瘮璧涖€傚亣璁炬瘡鍖归┈閮借窇鐨勫緢绋冲畾锛屼笉鐢ㄤ换浣曞叾浠栧伐鍏凤紝鍙€氳繃椹笌椹箣闂寸殑姣旇禌锛岃瘯闂渶灏?寰楁瘮澶氬皯鍦烘墠鑳界煡閬撹窇寰楁渶蹇殑5鍖归┈銆?娉ㄦ剰锛?"鍋囪姣忓尮椹兘璺戠殑寰堢ǔ瀹? 鐨勬剰鎬濇槸鍦ㄤ笂涓€鍦烘瘮璧涗腑A椹瘮B椹揩锛屽垯涓嬩竴鍦烘瘮璧涗腑A椹緷鐒舵瘮B椹揩銆傜◢寰兂涓€涓嬶紝鍙互閲囩敤涓€绉?绔炴爣璧涙帓搴?Tournament Sort)鐨勬€濊矾銆?瑙併€婇€夋嫨鎺掑簭 銆?(1) 棣栧厛灏?5鍖归┈鍒嗘垚5缁勶紝骞跺垎鍒繘琛?鍦烘瘮璧涗箣鍚庡緱鍒扮殑鍚嶆鎺掑垪濡備笅锛?聽聽聽聽聽聽聽聽聽聽聽聽聽 A缁勶細 [A1 A2 A3聽聽 A4 A5] 聽聽聽聽聽聽聽聽聽聽聽聽聽 B缁勶細 [B1 B2 B3聽聽 B4 B5] 聽聽聽聽聽聽聽聽聽聽聽聽聽 C缁勶細 [C1 C2 C3 C4 C5] 聽聽聽聽聽聽聽聽聽聽聽聽聽 D缁勶細 [D1 D2 D3 D4 D5] 聽聽聽聽聽聽聽聽聽聽聽聽聽 E缁勶細 [E1 E2 E3聽聽 E4 E5] 聽聽聽聽聽 鍏朵腑锛屾瘡涓皬缁勬渶蹇殑椹负[A1銆丅1銆丆1銆丏1銆丒1]銆?(2) 灏哰A1銆丅1銆丆1銆丏1銆丒1]杩涜绗?鍦猴紝閫夊嚭绗?鍚嶇殑椹紝涓嶅Θ璁?A1>B1>C1>D1>E1. 姝ゆ椂绗?鍚嶇殑椹负A1銆?(3) 灏哰A2銆丅1銆丆1銆丏1銆丒1]杩涜绗?鍦猴紝姝ゆ椂閫夋嫨鍑烘潵鐨勫繀瀹氭槸绗?鍚嶇殑椹紝涓嶅Θ鍋囪涓築1銆傚洜涓鸿繖5鍖归┈鏄櫎鍘籄1涔嬪姣忎釜灏忕粍褰撳墠鏈€蹇殑椹€?(3) 杩涜绗?鍦猴紝閫夋嫨[A2銆丅2銆丆1銆丏1銆丒1]瑙掗€愬嚭绗?鍚嶇殑椹€?(4) 渚濇绫绘帹锛岀9锛?0鍦哄彲浠ュ垎鍒喅鍑虹4锛?鍚嶇殑鍚椼€?鍥犳锛屼緷鐓ц繖绉嶇珵鏍囪禌鎺掑簭鎬濇兂锛岄渶瑕?0鍦烘瘮璧涙槸涓€瀹氬彲浠ュ彇鍑哄墠5鍚嶇殑銆備粩缁嗘兂涓€涓嬶紝濡傛灉闇€瑕佸噺灏戞瘮璧涘満娆★紝灏变竴瀹氶渶瑕佸湪鏌愪竴娆℃瘮璧涗腑鍚屾椂鍐冲嚭2涓悕娆★紝鑰屼笖姣忎竴鍦烘瘮璧涗箣鍚庯紝鏈変竴浜涗笉鍙兘杩涘叆鍓?鍚嶇殑椹彲浠ユ彁鍓嶅嚭灞€銆?褰撶劧瑕佸仛鍒拌繖涓€鐐癸紝灏卞繀椤诲皬蹇冮€夋嫨姣忎竴鍦烘瘮璧涚殑椹尮銆傛垜浠湪涓婇潰鐨勬柟娉曞熀纭€涓婅繘涓€姝ユ€濊€冭繖涓棶棰橈紝甯屾湜鑳藉寰楀埌瑙e喅銆?(1) 棣栧厛鍒╃敤5鍦烘瘮璧涜閫愬嚭姣忎釜灏忕粍鐨勬帓鍚嶆搴忔槸缁濆蹇呰鐨勩€?(2) 绗?鍦烘瘮璧涢€夊嚭绗?鍚嶇殑椹篃鏄繀涓嶅彲灏戠殑銆傚亣濡備粛鐒舵槸A1椹?A1>B1>C1>D1>E1)銆傞偅涔堟鏃舵垜浠彲浠ュ緱鍒颁竴涓噸瑕佺殑缁撹锛氭湁涓€浜涢┈鍦ㄥ墠6鍦烘瘮璧涗箣鍚庡氨鍐冲畾鍑哄眬鐨勫懡杩愪簡(涓嬮潰钃濊壊瀛椾綋鏍囧織鍑哄眬)銆?聽聽聽聽 A缁勶細 [A1聽 A2聽 A3聽聽 A4聽 A5] 聽聽聽聽 B缁勶細 [B1聽 B2聽聽 B3聽聽 B4聽聽B5聽] 聽聽聽聽 C缁勶細 [C1聽 C2聽 C3 聽聽C4聽 C5聽] 聽聽聽聽 D缁勶細 [D1 D2聽聽D3聽聽 D4聽 D5] 聽聽聽聽 E缁勶細聽 [E1聽聽E2聽 E3聽聽聽 E4聽 E5聽] (3) 绗?鍦烘瘮璧涙槸鍏抽敭锛岃兘鍚﹀悓鏃跺喅鍑虹2锛?鍚嶇殑椹憿锛熸垜浠鍏堝仛涓嬪垎鏋愶細 聽聽聽聽 鍦ㄤ笂闈㈢殑鏂规硶涓紝绗?鍦烘瘮璧沎A2銆丅1銆丆1銆丏1銆丒1]鏄负浜嗗喅瀹氱2鍚嶇殑椹€備絾鏄湪绗?鍦烘瘮璧涗腑鎴戜滑宸茬粡寰楀埌(B1>C1>D1>E1)锛岃瘯闂紵鏈塀1鍦ㄧ殑姣旇禌锛孋1銆丏1銆丒1杩樻湁鍙兘浜夊ず绗?鍚嶅悧锛熉犲綋鐒朵笉鍙兘锛屼篃灏辨槸璇寸2鍚嶅彧鑳藉湪A2銆丅1涓嚭鐜般€傚疄闄呬笂鍙渶瑕?鏉¤窇閬撳氨鍙互鍐冲嚭绗?鍚嶏紝鍓╀笅C1銆丏1銆丒1鐨?鏉¤窇閬撻兘鍙兘鐢ㄦ潵鍑戠儹闂圭殑鍚楋紵 聽聽聽聽 鑳藉浼樺寲鐨勫叧閿嚭鏉ヤ簡锛屾垜浠槸鍚﹁兘澶熼€氳繃鍓╀笅鐨?涓窇閬撴潵鍐冲嚭绗?鍚嶅憿锛熷綋鐒跺彲浠ワ紝鎴戜滑鏉ヨ繘涓€姝ュ垎鏋愮3鍚嶇殑鎯呭喌锛?聽聽聽聽 鈼?濡傛灉A2>B1(鍗崇2鍚嶄负A2)锛岄偅涔堟牴鎹6鍦烘瘮璧涗腑鐨?B1>C1>D1>E1)銆偮犲彲浠ユ柇瀹氱3鍚嶅彧鑳藉湪A3鍜孊1涓骇鐢熴€?聽聽聽聽 鈼?濡傛灉B1>A2(鍗崇2鍚嶄负B1)锛岄偅涔堝彲浠ユ柇瀹氱殑绗?鍚嶅彧鑳藉湪A2銆丅2銆丆1 涓骇鐢熴€?聽聽聽聽 濂戒簡锛岀粨璁轰篃鍑烘潵浜嗭紝鍙鎴戜滑鎶奫A2銆丅1銆丄3銆丅2銆丆1]浣滀负绗?鍦烘瘮璧涚殑椹紝閭d箞杩欏満姣旇禌鐨勭2锛?鍚嶄竴瀹氭槸鏁翠釜25鍖归┈涓殑绗?锛?鍚嶃€?聽聽聽聽 鎴戜滑鍦ㄨ繖閲屽垪涓惧嚭绗?鍦虹殑2锛?鍚嶆鐨勬墍鏈夊彲鑳芥儏鍐碉細 聽聽聽聽 鈶?绗?鍚?A2锛岀3鍚?A3 聽聽聽聽 鈶?绗?鍚?A2锛岀3鍚?B1 聽聽聽聽 鈶?绗?鍚?B1锛岀3鍚?A2 聽聽聽聽 鈶?绗?鍚?B1锛岀3鍚?B2 聽聽聽聽 鈶?绗?鍚?B1锛岀3鍚?C1 (4) 绗?鍦烘瘮璧涘緢澶嶆潅锛屾垜浠鏍规嵁绗?鍦虹殑鎵€鏈夊彲鑳界殑姣旇禌鎯呭喌杩涜鍒嗘瀽銆?聽聽聽聽聽 鈶?绗?鍚?A2锛岀3鍚?A3銆傞偅涔堟绉嶆儏鍐典笅绗?鍚嶅彧鑳藉湪A4鍜孊1涓骇鐢熴€?聽聽聽聽聽聽聽聽聽聽 鈼?濡傛灉绗?鍚?A4锛岄偅涔堢5鍚嶅彧鑳藉湪A5銆丅1涓骇鐢熴€?聽聽聽聽聽聽聽聽聽聽 鈼?濡傛灉绗?鍚?B1锛岄偅涔堢5鍚嶅彧鑳藉湪A4銆丅2銆丆1涓骇鐢熴€?聽聽聽聽聽聽聽聽聽聽聽涓嶇缁撴灉濡備綍锛屾绉嶆儏鍐典笅锛岀4銆?鍚嶉兘鍙互鍦ㄧ8鍦烘瘮璧涗腑鍐冲嚭銆傚叾涓瘮璧涢┈鍖逛负[A4銆丄5銆丅1銆丅2銆丆1] 聽聽聽聽聽 鈶?绗?鍚?A2锛岀3鍚?B1銆傞偅涔堟绉嶆儏鍐典笅绗?鍚嶅彧鑳藉湪A3銆丅2銆丆1涓骇鐢熴€?聽聽聽聽聽聽聽聽聽聽 鈼?濡傛灉绗?鍚?A3锛岄偅涔堢5鍚嶅彧鑳藉湪A4銆丅2銆丆1涓骇鐢熴€?聽聽聽聽聽聽聽聽聽聽 鈼?濡傛灉绗?鍚?B2锛岄偅涔堢5鍚嶅彧鑳藉湪A3銆丅3銆丆1涓骇鐢熴€?聽聽聽聽聽聽聽聽聽聽 鈼?濡傛灉绗?鍚?C1锛岄偅涔堢5鍚嶅彧鑳藉湪A3銆丅2銆丆2銆丏1涓骇鐢熴€?聽聽聽聽聽聽聽聽聽聽聽閭d箞锛岀4銆?鍚嶉渶瑕佸湪椹尮[A3銆丅2銆丅3銆丆1銆丄4銆丆2銆丏1]涓冨尮椹腑浜х敓锛屽垯蹇呴』姣旇禌涓ゅ満鎵嶈锛屼篃灏辨槸鍒扮9鍦鸿閫愬嚭鍏ㄩ儴鐨勫墠5鍚嶃€?聽聽聽聽聽 鈶?绗?鍚?B1锛岀3鍚?A2銆傞偅涔堟绉嶆儏鍐典笅绗?鍚嶅彧鑳藉湪A3銆丅2銆丆1涓骇鐢熴€?聽聽聽聽聽聽聽聽聽聽 鎯呭喌鍜屸憽涓€鏍凤紝蹇呴』瑙掗€愮9鍦?聽聽聽聽聽 鈶?绗?鍚?B1锛岀3鍚?B2銆?閭d箞姝ょ鎯呭喌涓嬬4鍚嶅彧鑳藉湪A2銆丅3銆丆1涓骇鐢熴€?聽聽聽聽聽聽聽聽聽聽 鈼?濡傛灉绗?鍚?A2锛岄偅涔堢5鍚嶅彧鑳藉湪A3銆丅3銆丆1涓骇鐢熴€?聽聽聽聽聽聽聽聽聽聽 鈼?濡傛灉绗?鍚?B3锛岄偅涔堢5鍚嶅彧鑳藉湪A2銆丅4銆丆1涓骇鐢熴€?聽聽聽聽聽聽聽聽聽聽 鈼?濡傛灉绗?鍚?C1锛岄偅涔堢5鍚嶅彧鑳藉湪A2銆丅3銆丆2銆丏1涓骇鐢熴€?聽聽聽聽聽聽聽聽聽聽聽聽閭d箞锛岀4銆?鍚嶉渶瑕佸湪椹尮[A2銆丅3銆丅4銆丆1銆丄3銆丆2銆丏1]涓冨尮椹腑浜х敓锛屽垯蹇呴』姣旇禌涓ゅ満鎵嶈锛屼篃灏辨槸鍒扮9鍦鸿閫愬嚭鍏ㄩ儴鐨勫墠5鍚嶃€?聽聽聽聽聽聽聽 鈶?绗?鍚?B1锛岀3鍚?C1銆傞偅涔堟绉嶆儏鍐典笅绗?鍚嶅彧鑳藉湪A2銆丅2銆丆2銆丏1涓骇鐢熴€?聽聽聽聽聽聽聽聽聽聽聽 鈼?濡傛灉绗?鍚?A2锛岄偅涔堢5鍚嶅彧鑳藉湪A3銆丅2銆丆2銆丏1涓骇鐢熴€?聽聽聽聽聽聽聽聽聽聽聽 鈼?濡傛灉绗?鍚?B2锛岄偅涔堢5鍚嶅彧鑳藉湪A2銆丅3銆丆2銆丏1涓骇鐢熴€?聽聽聽聽聽聽聽聽聽聽聽 鈼?濡傛灉绗?鍚?C2锛岄偅涔堢5鍚嶅彧鑳藉湪A2銆丅2銆丆3銆丏1涓骇鐢熴€?聽聽聽聽聽聽聽聽聽聽聽 鈼?濡傛灉绗?鍚?D1锛岄偅涔堢5鍚嶅彧鑳藉湪A2銆丅2銆丆2銆丏2銆丒2涓骇鐢熴€?聽聽聽聽聽聽聽聽聽聽聽聽聽閭d箞锛岀4銆?鍚嶉渶瑕佸湪椹尮[A2銆丅2銆丆2銆丏1銆丄3銆丅3銆丆3銆丏2銆丒1]涔濆尮椹腑浜х敓锛屽洜姝や篃蹇呴』姣旇禌涓ゅ満锛屼篃灏辨槸鍒扮9闀垮喅鍑鸿儨璐熴€傛€荤粨锛氭渶濂芥儏鍐靛彲浠ュ湪绗?鍦鸿閫愬嚭鍓?鍚嶏紝鏈€宸篃鍙互鍦ㄧ9鍦烘悶瀹氥€?/p>

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-20 14:40:08聽

鍘熸枃閾炬帴

闃呰锛?82 璇勮锛?聽

鏌ョ湅璇勮

聽[鍘焆鍒嗘不绠楁硶姹傛渶杩戠偣瀵?聽聽聽聽聽http://acm.hdu.edu.cn/showproblem.php?pid=1007 聽聽聽聽聽聽聽聽聽鍏堣涓嬮鎰忥紝寰堢畝鍗曪紝缁檔涓偣鐨勫潗鏍囷紝姹傝窛绂绘渶杩戠殑涓€瀵圭偣涔嬮棿璺濈鐨勪竴鍗娿€傜涓€琛屾槸涓€涓暟n琛ㄧず鏈塶涓偣锛屾帴涓嬫潵n琛屾槸n涓偣鐨剎鍧愭爣鍜寉鍧愭爣锛屽疄鏁般€?聽聽聽聽聽 杩欎釜棰樼洰鍏跺疄灏辨槸姹傛渶杩戠偣瀵圭殑璺濈銆傘€婄畻娉曞璁恒€嬩笂鏈夎缁嗚瑙o紝鐜嬫檽涓滅殑涔︿笂涔熸湁浠g爜銆備富瑕佹€濇兂灏辨槸鍒嗘不銆傚厛鎶妌涓偣鎸墄鍧愭爣鎺掑簭锛岀劧鍚庢眰宸﹁竟n/2涓拰鍙宠竟n/2涓殑鏈€杩戣窛绂伙紝鏈€鍚庡悎骞躲€傚悎骞惰閲嶇偣璇翠竴涓嬶紝姣旇緝楹荤儲銆?聽聽聽聽聽 棣栧厛锛屽亣璁剧偣鏄痭涓紝缂栧彿涓?鍒皀銆傛垜浠鍒嗘不姹傦紝鍒欐壘涓€涓腑闂寸殑缂栧彿mid锛屽厛姹傚嚭1鍒癿id鐐圭殑鏈€杩戣窛绂昏涓篸1锛岃繕鏈塵id+1鍒皀鐨勬渶杩戣窛绂昏涓篸2銆傝繖閲岀殑鐐归渶瑕佹寜x鍧愭爣鐨勯『搴忔帓濂斤紝骞朵笖鍋囪杩欎簺鐐逛腑锛屾病鏈?鐐瑰湪鍚屼竴涓綅缃€傦紙鑻ユ湁锛屽垯鐩存帴鏈€灏忚窛绂讳负0浜嗭級銆?聽聽聽聽聽 鐒跺悗锛屼护d涓篸1, d2涓緝灏忕殑閭d釜鐐广€傚鏋滆鏈€杩戠偣瀵逛腑鐨勪袱鐐归兘鍦?-mid闆嗗悎涓紝鎴栬€卪id+1鍒皀闆嗗悎涓紝鍒檇灏辨槸鏈€灏忚窛绂讳簡銆備絾鏄繕鏈夊彲鑳界殑鏄渶杩戠偣瀵逛腑鐨勪袱鐐瑰垎灞炶繖涓や釜闆嗗悎锛屾墍浠ユ垜浠繀椤诲厛妫€娴嬩竴涓嬭繖绉嶆儏鍐垫槸鍚︿細瀛樺湪锛岃嫢瀛樺湪锛屽垯鎶婅繖涓渶杩戠偣瀵圭殑璺濈璁板綍涓嬫潵锛屽幓鏇存柊d銆傝繖鏍锋垜浠氨鍙互寰楅亾鏈€灏忕殑璺濈d浜嗐€?聽聽聽聽聽 鍏抽敭鏄鍘绘娴嬫渶杩戠偣瀵癸紝鐞嗚涓婃瘡涓偣閮借鍜屽闈㈤泦鍚堢殑鐐瑰尮閰嶄竴娆★紝閭f晥鐜囪繕鏄笉鑳芥弧瓒虫垜浠殑瑕佹眰銆傛墍浠ヨ繖閲岃浼樺寲銆傛€庝箞浼樺寲鍛紵鑰冭檻涓€涓嬶紝鍋囧浠ユ垜浠墍閫夌殑鍒嗗壊鐐筸id涓虹晫锛屽鏋滄煇涓€鐐圭殑妯潗鏍囧埌鐐筸id鐨勬í鍧愭爣鐨勭粷瀵瑰€艰秴杩嘾1骞朵笖瓒呰繃d2锛岄偅涔堣繖涓偣鍒癿id鐐圭殑璺濈蹇呯劧瓒呰繃d1鍜宒2涓殑灏忚€咃紝鎵€浠ヨ繖涓偣鍒板鏂归泦鍚堢殑浠绘剰鐐圭殑璺濈蹇呯劧涓嶆槸鎵€鏈夌偣涓渶灏忕殑銆?聽聽聽聽聽 鎵€浠ユ垜浠厛鎶婂湪mid涓虹晫宸﹀彸涓€涓寖鍥村唴鐨勭偣鍏ㄩ儴绛涢€夊嚭鏉ワ紝鏀惧埌涓€涓泦鍚堥噷銆傜瓫閫夊ソ浠ュ悗锛屽綋鐒跺彲浠ユ妸杩欎簺鐐逛袱涓ゆ眰璺濈鍘绘洿鏂癲浜嗭紝涓嶈繃杩欐牱杩樻槸寰堟參锛屼竾涓€婊¤冻鏉′欢鐨勭偣寰堝鍛€傝繖閲岃繕寰楃户缁紭鍖栥€傞鍏堟妸杩欎簺鐐规寜y鍧愭爣鎺掑簭銆傚亣璁炬帓搴忓ソ浠ュ悗鏈塩nt涓偣锛岀紪鍙蜂负0鍒癱nt-1銆傞偅涔堟垜浠敤0鍙峰幓鍜?鍒癱nt-1鍙风殑鐐规眰涓€涓嬭窛绂伙紝鐒跺悗1鍙峰拰2鍒癱nt-1鍙风殑鐐规眰涓€涓嬭窛绂汇€傘€傘€傚鏋滄煇涓や釜鐐箉杞磋窛绂诲凡缁忚秴杩囦簡d锛岃繖娆″惊鐜氨鍙互鐩存帴break浜嗭紝寮€濮嬩粠涓嬩竴涓偣鏌ユ壘浜嗐€?聽 // 鍒嗘不绠楁硶姹傛渶杩戠偣瀵?/p>

#include

#include

#include

using namespace std;

struct point

{

double x , y;

}p[100005];

int a[100005]; //淇濆瓨绛涢€夌殑鍧愭爣鐐圭殑绱㈠紩

int cmpx(const point &a , const point &b)

{

return a.x < b.x;

}

int cmpy(int &a , int &b) //杩欓噷鐢ㄧ殑鏄笅鏍囩储寮?/p>

{

return p[a].y < p[b].y;

}

inline double dis(point &a , point &b)

{

return sqrt( (a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y));

}

inline double min(double a , double b)

{

return a < b ? a : b;

}

double closest(int low , int high)

{

if(low + 1 == high)

return dis(p[low] , p[high]);

if(low + 2 == high)

return min(dis(p[low] , p[high]) , min( dis(p[low] , p[low+1]) , dis(p[low+1] , p[high]) ));

int mid = (low + high)>>1;

double ans = min( closest(low , mid) , closest(mid + 1 , high) ); //鍒嗘不娉曡繘琛岄€掑綊姹傝В

int i , j , cnt = 0;

for(i = low ; i <= high ; ++i) //鎶妜鍧愭爣鍦╬[mid].x-ans~p[mid].x+ans鑼冨洿鍐呯殑鐐瑰彇鍑烘潵

{

if(p[i].x >= p[mid].x - ans && p[i].x <= p[mid].x + ans)

a[cnt++] = i; //淇濆瓨鐨勬槸涓嬫爣绱㈠紩

}

sort(a , a + cnt , cmpy); //鎸墆鍧愭爣杩涜鍗囧簭鎺掑簭

for(i = 0 ; i < cnt ; ++i)

{

for(j = i+1 ; j < cnt ; ++j)

{

if(p[a[j]].y - p[a[i]].y >= ans) //娉ㄦ剰涓嬫爣绱㈠紩

break;

ans = min(ans , dis(p[a[i]] , p[a[j]]));

}

}

return ans;

}

int main(void)

{

int i,n;

while(scanf("%d",&n) != EOF)

{

if(!n)

break;

for(i = 0 ; i < n ; ++i)

scanf("%lf %lf",&p[i].x,&p[i].y);

sort(p , p + n , cmpx);

printf("%.2lf\n",closest(0 , n - 1)/2);

}

return 0;

} 鎸夌収y鍊艰繘琛屽崌搴忔帓鍒楀悗锛岃繕鍙互杩涗竴姝ヨ繘琛屼紭鍖栫殑锛屽氨鏄瘡娆¢€夊彇7涓偣灏監K浜嗭紝鍏蜂綋鍘熷洜缂栫▼涔嬬編涓婇潰鏈変粙缁嶇殑銆?聽 for(i = 0 ; i < cnt ; ++i)

{

int k = (i+7) > cnt ? cnt :(i+7); //鍙閫夊彇鍑?涓偣(璇佹槑杩囩▼娌$湅鎳?

for(j = i+1 ; j < k ; ++j)

{

if(p[a[j]].y - p[a[i]].y >= ans) //娉ㄦ剰涓嬫爣绱㈠紩

break;

ans = min(ans , dis(p[a[i]] , p[a[j]]));

}

} 聽 聽 聽

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-20 17:19:15聽

鍘熸枃閾炬帴

闃呰锛?12 璇勮锛?聽

鏌ョ湅璇勮

聽[鍘焆瀵绘壘鏈€杩滅偣瀵归棶棰?缁欏畾骞抽潰涓奛涓偣鐨勫潗鏍囷紝鎵惧嚭璺濈鏈€杩滅殑涓や釜鐐广€?鍒嗘瀽 绫讳技浜庘€滄渶杩戠偣瀵归棶棰樷€濓紝杩欎釜闂涔熷彲浠ョ敤鏋氫妇鐨勬柟娉曟眰瑙o紝鏃堕棿澶嶆潅搴(n^2)銆?鈥滃鎵炬渶杩戠偣瀵光€濇槸鐢ㄥ埌鍒嗘不绛栫暐闄嶄綆澶嶆潅搴︼紝鑰屸€滃鎵炬渶杩滅偣瀵光€濆彲鍒╃敤鍑犱綍鎬ц川銆傛敞鎰忓埌锛氬浜庡钩闈笂鏈塶涓偣锛岃繖涓€瀵规渶杩滅偣蹇呯劧瀛樺湪浜庤繖n涓偣鎵€鏋勬垚鐨勪竴涓嚫鍖呬笂锛堣瘉鏄庣暐锛夛紝閭d箞鍙互鎺掗櫎澶ч噺鐐癸紝濡備笅鍥炬墍绀猴細鍦ㄥ緱鍒板嚫鍖呬互鍚庯紝鍙互鍙湪椤剁偣涓婇潰鎵炬渶杩滅偣浜嗐€傚悓鏍凤紝濡傛灉涓峅(n^2)涓や袱鏋氫妇锛屽彲浠ユ兂璞℃湁涓ゆ潯骞宠绾匡紝 鈥滃崱鈥濅綇杩欎釜鍑稿寘锛岀劧鍚庡崱绱х殑鎯呭喌涓嬫棆杞竴鍦堬紝鑲畾灏辫兘鎵惧埌鍑稿寘鐩村緞锛屼篃灏辨壘鍒颁簡鏈€杩滅殑鐐瑰銆傛垨璁歌繖灏辨槸涓哄暐鍙€滄棆杞崱澹虫硶鈥濄€? 鎬荤粨璧锋潵锛岄棶棰樿В鍐虫楠や负锛?1銆佺敤Graham's Scanning姹傚嚫鍖?2銆佺敤Rotating Calipers姹傚嚫鍖呯洿寰勶紝涔熷氨鎵惧埌浜嗘渶杩滅偣瀵广€?璇ョ畻娉曠殑骞冲潎澶嶆潅搴︿负O(nlogn) 銆傛渶鍧忕殑鎯呭喌涓嬶紝濡傛灉杩檔涓偣鏈韩灏辨瀯鎴愪簡涓€涓嚫鍖咃紝鏃堕棿澶嶆潅搴︿负O(n^2)銆傛棆杞崱澹冲彲浠ョ敤浜庢眰鍑稿寘鐨勭洿寰勩€佸搴︼紝涓や釜涓嶇浉浜ゅ嚫鍖呴棿鐨勬渶澶ц窛绂诲拰鏈€灏忚窛绂荤瓑銆傝櫧鐒剁畻娉曠殑鎬濇兂涓嶉毦鐞嗚В锛屼絾鏄疄鐜拌捣鏉ョ湡鐨勫緢瀹规槗璁╀汉鈥滃崱澹斥€濄€? 閫嗗悜鎬濊€冿紝濡傛灉qa锛宷b鏄嚫鍖呬笂鏈€杩滀袱鐐癸紝蹇呯劧鍙互鍒嗗埆杩噏a锛宷b鐢诲嚭涓€瀵瑰钩琛岀嚎銆傞€氳繃鏃嬭浆杩欏骞宠绾匡紝鎴戜滑鍙互璁╁畠鍜屽嚫鍖呬笂鐨勪竴鏉¤竟閲嶅悎,濡傚浘涓摑鑹茬洿绾匡紝鍙互娉ㄦ剰鍒帮紝qa鏄嚫鍖呬笂绂籶鍜宷b鎵€鍦ㄧ洿绾挎渶杩滅殑鐐广€備簬鏄垜浠殑鎬濊矾灏辨槸鏋氫妇鍑稿寘涓婄殑鎵€鏈夎竟锛屽姣忎竴鏉¤竟鎵惧嚭鍑稿寘涓婄璇ヨ竟鏈€杩滅殑椤剁偣锛岃绠楄繖涓《鐐瑰埌璇ヨ竟涓や釜绔偣鐨勮窛绂伙紝骞惰褰曟渶澶х殑鍊笺€傜洿瑙備笂杩欐槸涓€涓狾(n2)鐨勭畻娉曪紝鍜岀洿鎺ユ灇涓句换鎰忎袱涓《鐐逛竴鏍蜂簡銆備絾鏄敞鎰忓埌褰撴垜浠€嗘椂閽堟灇涓捐竟鐨勬椂鍊欙紝鏈€杩滅偣鐨勫彉鍖栦篃鏄€嗘椂閽堢殑锛岃繖鏍峰氨鍙互涓嶇敤浠庡ご璁$畻鏈€杩滅偣锛岃€屽彲浠ョ揣鎺ョ潃涓婁竴娆$殑鏈€杩滅偣缁х画璁$畻锛屼簬鏄垜浠緱鍒颁簡O(n)鐨勭畻娉曘€?http://poj.org/problem?id=2187 聽 // 姹傛渶杩滅偣瀵?/p>

#include

#include

using namespace std;

struct point

{

int x , y;

}p[50005];

int top , stack[50005]; // 鍑稿寘鐨勭偣瀛樺湪浜巗tack[]涓?/p>

inline double dis(const point &a , const point &b)

{

return (a.x - b.x)*(a.x - b.x)+(a.y - b.y)*(a.y - b.y);

}

inline int max(int a , int b)

{

return a > b ? a : b;

}

inline int xmult(const point &p1 , const point &p2 , const point &p0)

{ //璁$畻鍙変箻--绾挎鏃嬭浆鏂瑰悜鍜屽搴旂殑鍥涜竟褰㈢殑闈㈢Н--杩斿洖(p1-p0)*(p2-p0)鍙夌Н

//if鍙夌Н涓烘--p0p1鍦╬0p2鐨勯『鏃堕拡鏂瑰悜; if(x==0)鍏辩嚎

return (p1.x-p0.x)*(p2.y-p0.y) - (p1.y-p0.y)*(p2.x-p0.x);

}

int cmp(const void * a , const void * b) //閫嗘椂閽堟帓搴?杩斿洖姝f暟瑕佷氦鎹?/p>

{

struct point *p1 = (struct point *)a;

struct point *p2 = (struct point *)b;

int ans = xmult(*p1 , *p2 , p[0]); //鍚戦噺鍙変箻

if(ans < 0) //p0p1绾挎鍦╬0p2绾挎鐨勪笂鏂癸紝闇€瑕佷氦鎹?/p>

return 1;

else if(ans == 0 && ( (*p1).x >= (*p2).x)) //鏂滅巼鐩哥瓑鏃讹紝璺濈杩戠殑鐐瑰湪鍏?/p>

return 1;

else

return -1;

}

void graham(int n) //褰㈡垚鍑稿寘

{

qsort(p+1 , n-1 , sizeof(point) , cmp);

int i;

stack[0] = 0 , stack[1] = 1;

top = 1;

for(i = 2 ; i < n ; ++i)

{

while(top > 0 && xmult( p[stack[top]] , p[i] , p[stack[top-1]]) <= 0)

top--; //椤烘椂閽堟柟鍚?-鍒犻櫎鏍堥《鍏冪礌

stack[++top] = i; //鏂板厓绱犲叆鏍?/p>

}

int temp = top;

for(i = n-2 ; i >= 0 ; --i)

{

while(top > temp && xmult(p[stack[top]] , p[i] , p[stack[top-1]]) <= 0)

top--;

stack[++top] = i; //鏂板厓绱犲叆鏍?/p>

}

}

int rotating_calipers() //鍗″3

{

int i , q=1;

int ans = 0;

stack[top]=0;

for(i = 0 ; i < top ; i++)

{

while( xmult( p[stack[i+1]] , p[stack[q+1]] , p[stack[i]] ) > xmult( p[stack[i+1]] , p[stack[q]] , p[stack[i]] ) )

q = (q+1)%(top);

ans = max(ans , max( dis(p[stack[i]] , p[stack[q]]) , dis(p[stack[i+1]] , p[stack[q+1]])));

}

return ans;

}

int main(void)

{

int i , n , leftdown;

while(scanf("%d",&n) != EOF)

{

leftdown = 0;

for(i = 0 ; i < n ; ++i)

{

scanf("%d %d",&p[i].x,&p[i].y);

if(p[i].y < p[leftdown].y || (p[i].y == p[leftdown].y && p[i].x < p[leftdown].x)) //鎵惧埌鏈€宸︿笅瑙掔殑鐐?/p>

leftdown = i;

}

swap(p[0] , p[leftdown]);

graham(n);

printf("%d\n",rotating_calipers());

}

return 0;

} 聽

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-21 17:28:38聽

鍘熸枃閾炬帴

闃呰锛?96 璇勮锛?聽

鏌ョ湅璇勮

聽[鍘焆闅忔満鏁拌寖鍥存墿灞曟柟娉曟€荤粨棰樼洰锛?宸茬煡鏈変釜rand7()鐨勫嚱鏁帮紝杩斿洖1鍒?闅忔満鑷劧鏁帮紝璁╁埄鐢ㄨ繖涓猺and7()鏋勯€爎and10() 闅忔満1~10銆?鍒嗘瀽锛氳淇濊瘉rand10()鍦ㄦ暣鏁?-10鐨勫潎鍖€鍒嗗竷锛屽彲浠ユ瀯閫犱竴涓?-10*n鐨勫潎鍖€鍒嗗竷鐨勯殢鏈烘暣鏁板尯闂达紙n涓轰换浣曟鏁存暟锛夈€傚亣璁緓鏄繖涓?-10*n鍖洪棿涓婄殑涓€涓殢鏈烘暣鏁帮紝閭d箞x%10+1灏辨槸鍧囧寑鍒嗗竷鍦?-10鍖洪棿涓婄殑鏁存暟銆傜敱浜?rand7()-1)*7+rand7()鍙互鏋勯€犲嚭鍧囧寑鍒嗗竷鍦?-49鐨勯殢鏈烘暟锛堝師鍥犺涓嬮潰鐨勮鏄庯級锛屽彲浠ュ皢41锝?9杩欐牱鐨勯殢鏈烘暟鍓旈櫎鎺夛紝寰楀埌鐨勬暟1-40浠嶇劧鏄潎鍖€鍒嗗竷鍦?-40鐨勶紝杩欐槸鍥犱负姣忎釜鏁伴兘鍙互鐪嬫垚涓€涓嫭绔嬩簨浠躲€?涓嬮潰璇存槑涓轰粈涔?rand7()-1)*7+rand7()鍙互鏋勯€犲嚭鍧囧寑鍒嗗竷鍦?-49鐨勯殢鏈烘暟: 棣栧厛rand7()-1寰楀埌涓€涓鏁f暣鏁伴泦鍚坽0锛?锛?锛?锛?锛?锛?}锛屽叾涓瘡涓暣鏁扮殑鍑虹幇姒傜巼閮芥槸1/7銆傞偅涔?rand7()-1)*7寰楀埌涓€涓鏁f暣鏁伴泦鍚圓={0锛?锛?4锛?1锛?8锛?5锛?2}锛屽叾涓瘡涓暣鏁扮殑鍑虹幇姒傜巼涔熼兘鏄?/7銆傝€宺and7()寰楀埌鐨勯泦鍚圔={1锛?锛?锛?锛?锛?锛?}涓瘡涓暣鏁板嚭鐜扮殑姒傜巼涔熸槸1/7銆傛樉鐒堕泦鍚圓鍜孊涓换浣曚袱涓厓绱犵粍鍚堝彲浠ヤ笌1-49涔嬮棿鐨勪竴涓暣鏁颁竴涓€瀵瑰簲锛屼篃灏辨槸璇?-49涔嬮棿鐨勪换浣曚竴涓暟锛屽彲浠ュ敮涓€纭畾A鍜孊涓袱涓厓绱犵殑涓€绉嶇粍鍚堟柟寮忥紝鍙嶈繃鏉ヤ篃鎴愮珛銆傜敱浜嶢鍜孊涓厓绱犲彲浠ョ湅鎴愭槸鐙珛浜嬩欢锛屾牴鎹嫭绔嬩簨浠剁殑姒傜巼鍏紡P(AB)=P(A)P(B)锛屽緱鍒版瘡涓粍鍚堢殑姒傜巼鏄?/7*1/7=1/49銆傚洜姝?rand7()-1)*7+rand7()鐢熸垚鐨勬暣鏁板潎鍖€鍒嗗竷鍦?-49涔嬮棿锛屾瘡涓暟鐨勬鐜囬兘鏄?/49銆?绋嬪簭锛毬?int rand_10()

{

int x = 0;

do

{

x = 7 * (rand7() - 1) + rand7();

}while(x > 40);

return x % 10 + 1;

}娉細鐢辨湅鍙嬮棶涓轰粈涔堢敤while(x>40)鑰屼笉鐢╳hile(x>10锛夊憿锛熷師鍥犳槸濡傛灉鐢╳hile(x>10锛夊垯鏈?0/49鐨勬鐜囬渶瑕佸惊鐜痺hile锛屽緢鏈夊彲鑳芥寰幆浜嗐€?闂鎻忚堪 宸茬煡random3()杩欎釜闅忔満鏁颁骇鐢熷櫒鐢熸垚[1, 3]鑼冨洿鐨勯殢鏈烘暟锛岃鐢╮andom3()鏋勯€爎andom5()鍑芥暟锛岀敓鎴怺1, 5]鐨勯殢鏈烘暟锛?闂鍒嗘瀽 濡備綍浠嶽1-3]鑼冨洿鐨勬暟鏋勯€犳洿澶ц寖鍥寸殑鏁板憿锛熷悓鏃舵弧瓒宠繖涓洿澶ц寖鍥寸殑鏁板嚭鐜版鐜囨槸鐩稿悓鐨勶紝鍙互鎯冲埌鐨勮繍绠楀寘鎷袱绉嶏細鍔犳硶鍜屼箻娉?鑰冭檻涓嬮潰鐨勮〃杈惧紡锛?3 * (random3() 鈥?1) + random3(); 鍙互璁$畻寰楀埌涓婅堪琛ㄨ揪寮忕殑鑼冨洿鏄痆1, 9]聽 鑰屼笖鏁扮殑鍑虹幇姒傜巼鏄浉鍚岀殑锛屽嵆1/9 涓嬮潰鑰冭檻濡備綍浠嶽1, 9]鑼冨洿鐨勬暟鐢熸垚[1, 5]鐨勬暟鍛紵 鍙互鎯冲埌鐨勬柟娉曞氨鏄?rejection sampling 鏂规硶锛屽嵆鐢熸垚[1, 9]鐨勯殢鏈烘暟锛屽鏋滄暟鐨勮寖鍥翠笉鍦╗1, 5]鍐咃紝鍒欓噸鏂板彇鏍?瑙e喅鏂规硶聽 int random5()

{

int val = 0;

do

{

val = 3 * (random3() - 1) + random3();

}while(val > 5);

return val;

}褰掔撼鎬荤粨 灏嗚繖涓棶棰樿繘涓€姝ユ娊璞★紝宸茬煡random_m()闅忔満鏁扮敓鎴愬櫒鐨勮寖鍥存槸[1, m] 姹俽andom_n()鐢熸垚[1, n]鑼冨洿鐨勫嚱鏁帮紝m < n && n <= m *m 涓€鑸В娉曪細 聽 聽 int random_n()

{

int val = 0;

int t; //t涓簄鐨勬渶澶у€嶆暟锛屼笖婊¤冻t

do

{

val = m * (random_m() - 1) + random_m();

}while(val > t);

return val;

} 聽

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-22 15:40:08聽

鍘熸枃閾炬帴

闃呰锛?45 璇勮锛?聽

鏌ョ湅璇勮

聽[鍘焆绛夋鐜囬殢鏈哄嚱鏁扮殑瀹炵幇 棰樼洰锛氬凡鐭ラ殢鏈哄嚱鏁皉and(),浠鐨勬鐜囦骇鐢?锛屼互1-p鐨勬鐜囦骇鐢?锛岀幇鍦ㄨ姹傝璁′竴涓柊鐨勯殢鏈哄嚱鏁皀ewRand(), 浣垮叾浠?/n鐨勭瓑姒傜巼浜х敓1~n涔嬮棿鐨勪换鎰忎竴涓暟銆傝В鍐虫€濊矾锛氬彲浠ラ€氳繃宸茬煡闅忔満鍑芥暟rand()浜х敓绛夋鐜囦骇鐢?鍜?鐨勬柊闅忔満鍑芥暟Rand()锛岀劧鍚庤皟鐢╧锛坘涓烘暣鏁皀鐨勪簩杩涘埗琛ㄧず鐨勪綅鏁帮級娆and()鍑芥暟锛屽緱鍒颁竴涓暱搴︿负k鐨?鍜?搴忓垪锛屼互姝ゅ簭鍒楁墍褰㈡垚鐨勬暣鏁板嵆涓?--n涔嬮棿鐨勬暟瀛椼€傛敞鎰忥細浠庝骇鐢熷簭鍒楀緱鍒扮殑鏁存暟鏈夊彲鑳藉ぇ浜巒锛屽鏋滃ぇ浜巒鐨勮瘽锛屽垯閲嶆柊浜х敓鐩磋嚦寰楀埌鐨勬暣鏁颁笉澶т簬n銆?绗竴姝ワ細鐢眗and()鍑芥暟浜х敓Rand()鍑芥暟锛孯and()鍑芥暟绛夋鐜囦骇鐢?鍜?銆?int Rand()

{

int i1 = rand();

int i2 = rand();

if(i1==0 && i2==1)

return 1;

else if(i1==1 && i2==0)

return 0;

else

return Rand();

return -1;

}绗簩姝ワ細璁$畻鏁存暟n鐨勪簩杩涘埗琛ㄧず鎵€鎷ユ湁鐨勪綅鏁発锛宬 = 1 +log2n锛坙og浠?涓哄簳n锛?绗笁姝ワ細璋冪敤锝嬫Rand()浜х敓闅忔満鏁般€偮?int newRand()

{

int result = 0;

for(int i = 0 ; i < k ; ++i)

{

if(Rand() == 1)

result |= (1<

}

if(result > n)

return newRand();

return result;

} 聽 棰樼洰锛?缁欏畾涓€涓嚱鏁皉and5()锛岃鍑芥暟鍙互闅忔満鐢熸垚1-5鐨勬暣鏁帮紝涓旂敓鎴愭鐜囦竴鏍枫€傜幇瑕佹眰浣跨敤璇ュ嚱鏁版瀯閫犲嚱鏁皉and7()锛屼娇鍑芥暟rand7()鍙互闅忔満绛夋鐜囩殑鐢熸垚1-7鐨勬暣鏁般€傛€濊矾锛?寰堝浜虹殑绗竴鍙嶅簲鏄埄鐢╮and5() + rand()%3鏉ュ疄鐜皉and7()鍑芥暟锛岃繖涓柟娉曠‘瀹炲彲浠ヤ骇鐢?-7涔嬮棿鐨勯殢鏈烘暟锛屼絾鏄粩缁嗘兂鎯冲彲浠ュ彂鐜版暟瀛楃敓鎴愮殑姒傜巼鏄笉鐩哥瓑鐨勩€俽and()%3 浜х敓0鐨勬鐜囨槸1/5锛岃€屼骇鐢?鍜?鐨勬鐜囬兘鏄?/5锛屾墍浠ヨ繖涓柟娉曚骇鐢?鍜?鐨勬鐜囧ぇ浜庝骇鐢?鐨勬鐜囥€?姝g‘鐨勬柟娉曟槸鍒╃敤rand5()鍑芥暟鐢熸垚1-25涔嬮棿鐨勬暟瀛楋紝鐒跺悗灏嗗叾涓殑1-21鏄犲皠鎴?-7锛屼涪寮?2-25銆備緥濡傜敓鎴?1锛?)锛?1锛?)锛?1锛?)锛屽垯鐪嬫垚rand7()涓殑1锛屽鏋滃嚭鐜板墿涓嬬殑4绉嶏紝鍒欎涪寮冮噸鏂扮敓鎴愩€傜畝鍗曞疄鐜帮細 聽 int rand7()

{

int x = 0;

do

{

x = 5 * (rand5() - 1) + rand5();

}while(x > 21);

return 1 + x%7;

}鎴戠殑澶囨敞锛?聽聽聽 杩欑鎬濇兂鏄熀浜庯紝rand()浜х敓[0,N-1]锛屾妸rand()瑙嗕负N杩涘埗鐨勪竴浣嶆暟浜х敓鍣紝閭d箞鍙互浣跨敤rand()*N+rand()鏉ヤ骇鐢?浣嶇殑N杩涘埗鏁帮紝浠ユ绫绘帹锛屽彲浠ヤ骇鐢?浣嶏紝4浣嶏紝5浣?..鐨凬杩涘埗鏁般€傝繖绉嶆寜鏋勯€燦杩涘埗鏁扮殑鏂瑰紡鐢熸垚鐨勯殢鏈烘暟锛屽繀瀹氳兘淇濊瘉闅忔満锛岃€岀浉鍙嶏紝鍊熷姪鍏朵粬鏂瑰紡鏉ヤ娇鐢╮and()浜х敓闅忔満鏁?濡?rand5() + rand()%3 )閮芥槸涓嶈兘淇濊瘉姒傜巼骞冲潎鐨勩€?聽聽聽 姝ら涓璑涓?锛屽洜姝ゅ彲浠ヤ娇鐢╮and5()*5+rand5()鏉ヤ骇鐢?浣嶇殑5杩涘埗鏁帮紝鑼冨洿灏辨槸1鍒?5銆傚啀鍘绘帀22-25锛屽墿浣欑殑闄?锛屼互姝や綔涓簉and7()鐨勪骇鐢熷櫒銆?缁欏畾涓€涓嚱鏁皉and()鑳戒骇鐢?鍒皀-1涔嬮棿鐨勭瓑姒傜巼闅忔満鏁帮紝闂浣曚骇鐢?鍒癿-1涔嬮棿绛夋鐜囩殑闅忔満鏁帮紵 int random(int m , int n)

{

int k = rand();

int max = n-1;

while(k < m)

{

k = k*n + rand();

max = max*n + n-1;

}

return k/(max/n);

}濡備綍浜х敓濡備笅姒傜巼鐨勯殢鏈烘暟锛?鍑?娆★紝1鍑虹幇2娆★紝2鍑虹幇3娆★紝n-1鍑虹幇n娆★紵 聽 聽 int random(int size)

{

while(true)

{

int m = rand(size);

int n = rand(size);

if(m + n < size)

return m+n;

}

} 聽

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-22 15:55:31聽

鍘熸枃閾炬帴

闃呰锛?91 璇勮锛?聽

鏌ョ湅璇勮

聽[鍘焆Google闈㈣瘯棰樷€斺€斿強绛旀1銆?鏉戝瓙閲屾湁100瀵瑰か濡伙紝鍏朵腑姣忎釜涓堝か閮界瀿鐫€鑷繁鐨勫瀛愬伔鎯呫€傘€傘€傛潙閲岀殑姣忎釜濡诲瓙閮借兘绔嬪嵆鍙戠幇闄よ嚜宸变笀澶箣澶栫殑鍏朵粬鐢蜂汉鏄惁鍋锋儏锛屽敮鐙笉鐭ラ亾濂硅嚜宸辩殑涓堝か鍒板簳鏈夋病鏈夊伔鎯呫€傛潙閲岀殑瑙勭煩涓嶅蹇嶉€氬ジ銆備换浣曚竴涓瀛愶紝涓€鏃﹁兘璇佹槑鑷繁鐨勭敺浜哄伔鎯咃紝灏卞繀椤诲綋澶╂妸浠栨潃姝汇€傛潙閲岀殑濂充汉鍏ㄩ兘涓ユ牸鐓ф瑙勭煩鍔炰簨銆備竴澶╋紝濂冲ご棰嗗嚭鏉ュ甯冿紝鏉戦噷鑷冲皯鏈変竴涓笀澶伔鎯呫€傝闂帴涓嬫潵浼氬彂鐢熶粈涔堜簨锛?绛旀锛氳繖鏄竴涓吀鍨嬬殑閫掑綊闂銆備竴鏃︽墍鏈夌殑濡诲瓙閮界煡閬撹嚦灏戞湁涓€涓敺浜哄嚭杞紝鎴戜滑灏卞彲浠ユ寜閫掑綊鏂瑰紡鏉ョ湅寰呰繖涓祦绋嬨€傚厛璁╂垜浠亣璁惧彧鏈変竴涓笀澶伔鎯呫€傚垯浠栫殑濡诲瓙瑙佷笉鍒颁换浣曞伔鎯呯殑鐢蜂汉锛屽洜姝ょ煡閬撹繖涓汉灏辨槸鑷繁涓堝か锛屽ス褰撳ぉ灏变細鏉€浜嗕粬銆傚亣濡傛湁涓や釜涓堝か鍋锋儏锛屽垯浠栦咯鐨勫瀛愬彧鐭ラ亾涓嶆槸鑷繁涓堝か鐨勯偅涓€涓敺浜哄伔鎯呫€傚洜姝ゅス浼氱瓑涓婁竴澶╃湅閭d釜浜烘湁娌℃湁琚潃姝汇€傚亣濡傜涓€澶╂病浜鸿鏉€姝伙紝濂瑰氨鑳界‘瀹氬ス鑷繁鐨勪笀澶篃鍋蜂簡鎯呫€備緷姝ょ被鎺紝鍋囧鏈?00涓笀澶伔鎯咃紝鍒欎粬浠兘瀹夊叏娲讳笂99澶╋紝鐩村埌100澶╂椂锛屾墍鏈夊瀛愭妸浠栦滑鍏ㄩ兘鏉€姝汇€傚簲鑱樿亴浣嶏細浜у搧缁忕悊 2銆佸亣璁惧湪涓€娈甸珮閫熷叕璺笂锛?0鍒嗛挓涔嬪唴瑙佸埌姹借溅缁忚繃鐨勬鐜囨槸0.95銆傞偅涔堬紝鍦?0鍒嗛挓鍐呰鍒版苯杞︾粡杩囩殑姒傜巼鏄灏戯紵锛堝亣璁剧己鐪佹鐜囧浐瀹氾級绛旀锛氳繖棰樼殑鍏抽敭鍦ㄤ簬0.95鏄鍒颁竴杈嗘垨澶氳締姹借溅鐨勬鐜囷紝鑰屼笉鏄粎瑙佸埌涓€杈嗘苯杞︾殑姒傜巼銆傚湪30鍒嗛挓鍐咃紝瑙佷笉鍒颁换浣曡溅杈嗙殑姒傜巼涓?.05銆傚洜姝ゅ湪10鍒嗛挓鍐呰涓嶅埌浠讳綍杞﹁締鐨勬鐜囨槸杩欎釜鍊肩殑绔嬫柟鏍癸紝鑰屽湪10鍒嗛挓鍐呰鍒颁竴杈嗚溅鐨勬鐜囧垯涓?鍑忓幓姝ょ珛鏂规牴锛屼篃灏辨槸澶х害63%銆?搴旇仒鑱屼綅锛氫骇鍝佺粡鐞?3銆佹湁鍥涗釜浜鸿鍦ㄥ閲岀┛杩囦竴鏉℃偓绱㈡ˉ鍥炲埌瀹胯惀鍦般€傚彲鏄粬浠彧鏈変竴鏀墜鐢碉紝鐢垫睜鍙鍐嶄寒17鍒嗛挓銆傝繃妗ュ繀椤昏鏈夋墜鐢碉紝鍚﹀垯澶嵄闄┿€傛ˉ鏈€澶氬彧鑳芥壙鍙椾袱涓汉鍚屾椂閫氳繃鐨勯噸閲忋€傝繖鍥涗釜浜虹殑杩囨ˉ閫熷害閮戒笉涓€鏍凤細涓€涓渶瑕?鍒嗛挓锛屼竴涓渶瑕?鍒嗛挓锛屼竴涓渶瑕?鍒嗛挓锛岃繕鏈変竴涓渶瑕?0鍒嗛挓銆備粬浠浣曟墠鑳藉湪17鍒嗛挓涔嬪唴鍏ㄩ儴杩囨ˉ锛熺瓟妗堬細1鍜?涓€璧疯繃锛?鍒嗛挓锛夛紱1杩斿洖锛?鍒嗛挓锛夛紱5鍜?0涓€璧疯繃锛?3鍒嗛挓锛夛紱2杩斿洖锛?5鍒嗛挓锛夛紱1鍜?涓€璧疯繃锛?7鍒嗛挓锛夈€傚叏浣撳畨鍏ㄨ繃妗ャ€?搴旇仒鑱屼綅锛氫骇鍝佺粡鐞?4銆佷綘鍜屼竴涓湅鍙嬪幓鍙傚姞鑱氫細銆傝仛浼氱畻涓婁綘浠竴鍏?0浜恒€傘€傘€備綘鐨勬湅鍙嬫兂瑕佽窡浣犳墦涓祵锛氫綘鍦ㄨ繖浜涗汉姣忔壘鍒颁竴涓拰浣犵敓鏃ョ浉鍚岀殑锛屼綘灏辫耽1鍧楅挶銆備粬鍦ㄨ繖浜涗汉閲屾瘡鎵惧埌涓€涓拰浣犵敓鏃ヤ笉鍚岀殑浜猴紝浠栧氨璧?鍧楅挶銆備綘璇ヤ笉璇ユ墦杩欎釜璧岋紵绛旀锛氫笉绠楅棸骞寸殑璇濓紝鍒汉璺熶綘鐢熸棩鐩稿悓鐨勬鐜囨槸1/365锛涜窡浣犵敓鏃ヤ笉鍚岀殑姒傜巼鏄?64/365銆傚洜姝や笉瑕佹墦杩欎釜璧屻€?搴旇仒鑱屼綅锛氫骇鍝佺粡鐞?5銆佸鏋滀綘鐪嬪埌鏃堕挓涓婇潰鐨勬椂闂存槸3锛?5锛岄偅涔堝叾鏃堕拡鍜屽垎閽堜箣闂寸殑瑙掑害鏄灏戯紵锛堢瓟妗堜笉鏄浂锛?绛旀锛?.5搴︺€傛椂閽熶笂姣忎竴鍒嗛挓鏄?搴︼紙360搴?60鍒嗛挓锛夈€傛椂閽堟瘡灏忔椂浠庝竴涓暟瀛楄蛋鍒颁笅涓€涓暟瀛楋紙姝や緥涓负浠?鐐瑰埌4鐐癸級锛屼篃灏辨槸30搴︺€傚洜涓烘棰樹腑鏃堕棿鍒氬ソ璧拌繃1/4灏忔椂锛屽洜姝ゆ椂閽堣蛋瀹?0搴︾殑1/4锛屼篃灏辨槸7.5搴︺€?搴旇仒鑱屼綅锛氫骇鍝佺粡鐞?6銆佸皢涓€鏍规湪鏉℃姌鎴?娈典箣鍚庯紝鍙互褰㈡垚涓€涓笁瑙掑舰鐨勬鐜囨湁澶氬ぇ锛?绛旀锛氬洜涓洪鐩腑娌℃湁璇磋姹傛湪鏉″繀椤婚灏剧浉杩炵殑鍋氭垚涓夎褰紝鍥犳绛旀鏄?00%銆備换浣曢暱搴︾殑涓夋牴鏈ㄦ潯閮藉彲浠ュ舰鎴愪竴涓笁瑙掑舰銆?搴旇仒鑱屼綅锛氫骇鍝佺粡鐞?7銆佸崡闈炴湁涓欢鏃堕棶棰樸€傝瀵瑰叾鍔犱互鍒嗘瀽銆?绛旀锛氳繖鏄剧劧鏄釜闈炲父妯$硦鐨勯棶棰橈紝鍥犳娌℃湁鍞竴鐨勬纭瓟妗堛€傛瘮杈冨ソ鐨勫洖绛斿簲璇ユ槸鐢辫闈㈣瘯鑰呭睍绀鸿嚜宸卞鈥滃欢鏃垛€濇蹇电殑鐔熸倝绋嬪害浠ュ強鍙戞尌鑷繁鐨勬兂璞″姏锛屾瀯鎯冲嚭涓€涓湁瓒g殑寤舵椂闂骞跺鍏舵彁渚涗竴涓湁瓒g殑瑙e喅鏂规銆傚簲鑱樿亴浣嶏細浜у搧缁忕悊 8銆佸湪涓€涓袱缁村钩闈笂鏈変笁涓笉鍦ㄤ竴鏉$洿绾夸笂鐨勭偣銆傝闂兘澶熶綔鍑哄嚑鏉′笌杩欎簺鐐硅窛绂荤浉鍚岀殑绾匡紵绛旀锛氫笁鏉°€傚皢涓ょ偣涔嬮棿鑱旀垚涓€鏉$嚎娈点€傚湪杩欐潯绾挎涓庣涓夌偣涔嬮棿姝d腑鐨勪綅缃紝鍋氫竴鏉′笌姝ょ嚎娈靛钩琛岀殑鐩寸嚎锛屽嵆涓轰竴鏉¤窛涓夌偣绛夎窛鐨勭嚎銆傜劧鍚庢寜姝ゆ柟娉曞鍏朵綑涓ょ偣鐨勭粍鍚堝仛鍑哄彟澶栦袱鏉℃潵銆?搴旇仒鑱屼綅锛氳蒋浠跺伐绋嬪笀 9銆?鐨?4娆℃柟鏄灏戯紵绛旀锛氬鏋滀綘涓嶆槸鍥犱负鍧愬湪闈㈣瘯瀹ら噷锛屾墜杈规病鏈夎绠楀櫒鐨勮瘽锛屽簲璇ュ彲浠ュ緢瀹规槗鎵惧埌绛旀锛屽嵆1.84467441 涔樹互10鐨?9娆℃柟銆?銆愯鏄垜锛屽氨鍐欎竴涓?锛屽悗闈㈠姞涓?4涓浂锛岀畻鏄?杩涘埗绛旀锛屽搱鍝堛€傗€斺€旇瘧鑰呮敞銆?搴旇仒鑱屼綅锛氳蒋浠跺伐绋嬪笀 10銆佸亣璁句綘鍦ㄨ。姗遍噷鎸傛弧琛~锛屽緢闅句粠涓寫鍑烘煇涓€浠舵潵銆傝闂綘鎵撶畻鎬庢牱鏁寸悊涓€涓嬶紝浣垮緱瀹冧滑瀹规槗鎸戦€夛紵绛旀锛氭棰樻病鏈夊浐瀹氱瓟妗堛€傝€冮獙鐨勬槸琚潰璇曡€呭湪瑙e喅闂鏂归潰鐨勬兂璞″姏鍜屽垱閫犳€с€傛垜浠寰楄鑰呪€滵ude鈥濈殑杩欎釜绛旀鍙兘浼氱粰Google鐣欎笅娣卞埢鍗拌薄锛氭妸瀹冧滑鎸夊竷鏂欑殑绉嶇被杩涜鍝堝笇锛圚ASH锛夌粍鍚堛€傜劧鍚庢瘡绫诲啀鎸?-3-4鏍戞垨绾㈤粦鏍戯紙閮芥槸璁$畻鏈虹畻娉曪級鎺掑簭銆?搴旇仒鑱屼綅锛氳蒋浠跺伐绋嬪笀 11銆佺粰浣犱竴鍓簳瀛楁锛圱ic Tac Toe锛夈€傘€傘€備綘鏉ュ啓涓€涓▼搴忥紝浠ユ暣涓父鎴忓拰涓€涓帺瀹剁殑鍚嶅瓧涓哄弬鏁般€傛鍑芥暟闇€杩斿洖娓告垙缁撴灉锛屽嵆姝ょ帺瀹舵槸鍚﹁耽浜嗐€傞鍏堜綘瑕佸喅瀹氫娇鐢ㄥ摢绉嶆暟鎹粨鏋勫鐞嗘父鎴忋€備綘杩樿鍏堣鍑轰娇鐢ㄥ摢绉嶇畻娉曪紝鐒跺悗鍐欏嚭浠g爜銆傛敞鎰忥細杩欎釜娓告垙涓殑鏌愪簺鏍煎瓙閲屽彲鑳芥槸绌虹殑銆備綘鐨勬暟鎹粨鏋勯渶瑕佽€冭檻鍒拌繖涓潯浠躲€傜瓟妗堬細鎵€闇€瑕佺殑鏁版嵁缁撴瀯搴斾负浜屽厓瀛楃鏁板垪銆傝皟鐢ㄦ鍑芥暟妫€鏌?绉嶆潯浠讹紝鍒ゆ柇鏄惁鏈夎耽瀹躲€傚叾涓6绉嶆潯浠跺氨鏄湅鏄惁杩樻湁绌烘牸銆傚鏋滄湁璧㈠锛屽垯瀛楃鍒ゆ柇鐜╁鏄疿杩樻槸O銆傚洜姝や綘闇€瑕佷竴涓棗鏍囥€傚鏋滄湁璧㈠鍒欒繑鍥炴鍊煎苟缁撴潫娓告垙锛屽鏋滄病鏈夊垯缁х画娓告垙銆?搴旇仒鑱屼綅锛氳蒋浠跺伐绋嬪笀 12銆佷负1涓囦嚎涓暟鎺掑簭闇€瑕佸闀挎椂闂达紵璇疯鍑轰竴涓潬璋辩殑浼拌銆傜瓟妗堬細杩欏張鏄竴涓病鏈夋爣鍑嗙瓟妗堢殑棰樼洰銆傜洰鐨勬槸鑰冨療琚潰璇曡€呯殑鍒涢€犳€с€傛垜浠€惧悜浜庝袱浣嶈鑰呯粰鍑虹殑绠€鍗曠瓟妗堬細鐢ㄥ綊骞舵帓搴忔硶锛圡erge Sort锛夋帓搴忋€傚钩鍧囨儏鍐典笅涓篛(1,000,000,000,000 Log 1,000,000,000,000)銆傛渶宸儏鍐典笅涓篛(1,000,000,000,000 Log 1,000,000,000,000)銆愪袱鑰呯浉鍚屻€傗€斺€旇瘧鑰呮敞銆戙€傜幇鍦ㄥ彲浠ュ仛鍒版瘡绉?0浜挎鐨勮繍绠楋紝鎵€浠ュぇ绾﹀簲闇€瑕?000绉掋€?搴旇仒鑱屼綅锛氳蒋浠跺伐绋嬪笀 13銆佽璁捐涓€涓€滆洐璺斥€濇父鎴忕殑绠楁硶锛屽苟鍐欏嚭鏂规鐨勪唬鐮併€傘€傘€傜瓟妗堬細杩欎釜娓告垙鐨勭洰鏍囨槸寮曞涓€涓潚铔欓伩寮€鏉ュ線杞﹁締锛屾í绌夸竴鏉$箒蹇欑殑鍏矾銆備綘鍙互鐢ㄤ竴涓暟鍒楁潵浠h〃涓€鏉¤溅閬撱€傚皢鏂规绠€鍖栨垚涓€鏉杞﹂亾鐨勫叕璺€傛垜浠彧鎵惧埌涓€涓姝ら棶棰樼殑瑙g瓟锛屽畠鏉ヨ嚜Glassdoor.com缃戠珯锛氣€滀竴涓柟娉曟槸鍐欎竴涓€掑綊绠楁硶鏉ュ喅瀹氫綍鏃剁瓑寰咃紝浣曟椂璺宠繘涓嬩竴涓溅閬撱€傝繖鐢变笅鏉¤溅閬撲腑鏄惁鏈夐€愭笎鎺ヨ繎鐨勯殰纰嶇墿鏉ュ喅瀹氥€傗€?搴旇仒鑱屼綅锛氳蒋浠跺伐绋嬪笀 14銆丟oogle姣忓勾鏀跺埌澶氬皯浠借蒋浠跺伐绋嬪笀鐨勭畝鍘嗭紵杩欎篃鏄湪鑰冨療搴旇瘯鑰呮槸鍚︽湁鑳藉姏鎶婇棶棰樼畝鍗曟槑纭寲锛屽苟鎻愬嚭鍒涢€犳€х殑瑙e喅鏂规銆傜瓟妗堬細涓€涓€滈噺鍖栨姤閰垎鏋愬笀鈥濊亴浣嶇殑姹傝亴鑰咃紝搴旇鐭ラ亾2008骞碐oogle闆囦剑浜?400浜恒€備及璁″叾涓?5%锛屽嵆2550浜猴紝搴旇鏄伐绋嬪笀锛屽苟涓擥oogle鍜屽搱浣涚殑褰曞彇鐜囩被浼硷紝鍗充粠鐢宠浜轰腑鍙?%銆傜敱姝ゅ彲鐭ュ簲璇ユ敹鍒板ぇ绾?5000绠€鍘嗭紙85000 x 3% = 2550锛?搴旇仒鑱屼綅锛氶噺鍖栨姤閰垎鏋愬笀 15銆佺粰浣犱竴涓暟瀛楅摼琛ㄣ€傘€傘€傞摼琛ㄥ埌澶翠箣鍚庡張浼氫粠澶村紑濮嬶紙寰幆閾捐〃锛夈€傝鍐欏嚭瀵绘壘閾捐〃涓渶灏忔暟瀛楃殑鏈€楂樻晥绠楁硶銆傛壘鍑烘閾捐〃涓殑浠绘剰缁欏畾鏁板瓧銆傞摼琛ㄤ腑鐨勬暟瀛楁€绘槸涓嶆柇澧炲ぇ鐨勶紝浣嗘槸浣犱笉鐭ラ亾寰幆閾捐〃浠庝綍澶勫紑濮嬨€備緥锛?8, 40, 55, 89, 6, 13, 20, 23, 36銆傜瓟妗堬細鎴戜滑鏈€鍠滄鐨勭瓟妗堟潵鑷鑰呪€漝ude鈥濓細寤虹珛涓存椂鎸囬拡骞朵粠鏍逛笂寮€濮嬨€傦紙寰幆閾捐〃澶у鏁版儏鍐典笅閮芥湁鍚戝墠鎴栧悜鍚庢寚閽堛€傦級鍒ゆ柇鏄悜鍓嶆洿澶ц繕鏄悜鍚庢洿澶с€傚鏋滃悜鍓嶆洿澶у垯鐭ラ亾宸茶揪鍒伴摼琛ㄦ渶鍚庯紝鍙堥噸鏂颁綅浜庨摼琛ㄥ紑濮嬩綅缃€傚鏋滃悜鍓嶆洿澶с€愬師鏂囧姝わ紝浼煎簲涓衡€滃悜鍓嶆洿灏忊€濄€傗€斺€旇瘧鑰呮敞銆戯紝閭d綘鍙互鍚戝悗鎼滃骞惰繘琛屾暟瀛楁瘮杈冦€傚鏋滄棦娌℃湁鏍逛篃娌℃湁鎸囬拡鎸囧悜閾捐〃锛岄偅涔堜綘鐨勬暟鎹氨涓㈠け鍦ㄥ唴瀛樹腑浜嗐€?/p>

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-22 16:27:06聽

鍘熸枃閾炬帴

闃呰锛?42 璇勮锛?聽

鏌ョ湅璇勮

聽[鍘焆C++涓殑static鍏抽敭瀛桟++鐨剆tatic鏈変袱绉嶇敤娉曪細闈㈠悜杩囩▼绋嬪簭璁捐涓殑static鍜岄潰鍚戝璞$▼搴忚璁′腑鐨剆tatic銆傚墠鑰呭簲鐢ㄤ簬鏅€氬彉閲忓拰鍑芥暟锛屼笉娑夊強绫伙紱鍚庤€呬富瑕佽鏄巗tatic鍦ㄧ被涓殑浣滅敤銆?涓€銆侀潰鍚戣繃绋嬭璁′腑鐨剆tatic 1銆侀潤鎬佸叏灞€鍙橀噺 鍦ㄥ叏灞€鍙橀噺鍓嶏紝鍔犱笂鍏抽敭瀛梥tatic锛岃鍙橀噺灏辫瀹氫箟鎴愪负涓€涓潤鎬佸叏灞€鍙橀噺銆傛垜浠厛涓句竴涓潤鎬佸叏灞€鍙橀噺鐨勪緥瀛愶紝濡備笅锛毬?#include

using namespace std;

static int n; //瀹氫箟闈欐€佸叏灞€鍙橀噺

void fn()

{

n++;

cout<

}

int main(void)

{

n = 20;

cout<

fn();

return 0;

}闈欐€佸叏灞€鍙橀噺鏈変互涓嬬壒鐐癸細 聽

璇ュ彉閲忓湪鍏ㄥ眬鏁版嵁鍖哄垎閰嶅唴瀛橈紱鏈粡鍒濆鍖栫殑闈欐€佸叏灞€鍙橀噺浼氳绋嬪簭鑷姩鍒濆鍖栦负0锛堣嚜鍔ㄥ彉閲忕殑鍊兼槸闅忔満鐨勶紝闄ら潪瀹冭鏄惧紡鍒濆鍖栵級锛涢潤鎬佸叏灞€鍙橀噺鍦ㄥ0鏄庡畠鐨勬暣涓枃浠堕兘鏄彲瑙佺殑锛岃€屽湪鏂囦欢涔嬪鏄笉鍙鐨勶紱銆€ 闈欐€佸彉閲忛兘鍦ㄥ叏灞€鏁版嵁鍖哄垎閰嶅唴瀛橈紝鍖呮嫭鍚庨潰灏嗚鎻愬埌鐨勯潤鎬佸眬閮ㄥ彉閲忋€傚浜庝竴涓畬鏁寸殑绋嬪簭锛屽湪鍐呭瓨涓殑鍒嗗竷鎯呭喌濡備笅鍥撅細

浠g爜鍖哄叏灞€鏁版嵁鍖哄爢鍖烘爤鍖恒€€銆€涓€鑸▼搴忕殑鐢眓ew浜х敓鐨勫姩鎬佹暟鎹瓨鏀惧湪鍫嗗尯锛屽嚱鏁板唴閮ㄧ殑鑷姩鍙橀噺瀛樻斁鍦ㄦ爤鍖恒€傝嚜鍔ㄥ彉閲忎竴鑸細闅忕潃鍑芥暟鐨勯€€鍑鸿€岄噴鏀剧┖闂达紝闈欐€佹暟鎹紙鍗充娇鏄嚱鏁板唴閮ㄧ殑闈欐€佸眬閮ㄥ彉閲忥級涔熷瓨鏀惧湪鍏ㄥ眬鏁版嵁鍖恒€傚叏灞€鏁版嵁鍖虹殑鏁版嵁骞朵笉浼氬洜涓哄嚱鏁扮殑閫€鍑鸿€岄噴鏀剧┖闂淬€傜粏蹇冪殑璇昏€呭彲鑳戒細鍙戠幇锛孍xample 1涓殑浠g爜涓皢 聽 static int n; //瀹氫箟闈欐€佸叏灞€鍙橀噺鏀逛负 聽 聽 int n; //瀹氫箟鍏ㄥ眬鍙橀噺绋嬪簭鐓ф牱姝e父杩愯銆?鐨勭‘锛屽畾涔夊叏灞€鍙橀噺灏卞彲浠ュ疄鐜板彉閲忓湪鏂囦欢涓殑鍏变韩锛屼絾瀹氫箟闈欐€佸叏灞€鍙橀噺杩樻湁浠ヤ笅濂藉锛?聽聽聽聽聽聽 闈欐€佸叏灞€鍙橀噺涓嶈兘琚叾瀹冩枃浠舵墍鐢紱 聽聽聽聽聽聽 鍏跺畠鏂囦欢涓彲浠ュ畾涔夌浉鍚屽悕瀛楃殑鍙橀噺锛屼笉浼氬彂鐢熷啿绐侊紱 鎮ㄥ彲浠ュ皢涓婅堪绀轰緥浠g爜鏀逛负濡備笅锛?/File1

#include

using namespace std;

void fn();

static int n; //瀹氫箟闈欐€佸叏灞€鍙橀噺

int main(void)

{

n = 20;

cout<

fn();

return 0;

}

//File2

#include

using namespace std;

extern int n;

void fn()

{

n++;

cout<

} 缂栬瘧骞惰繍琛岃繖涓▼搴忥紝鎮ㄥ氨浼氬彂鐜颁笂杩颁唬鐮佸彲浠ュ垎鍒€氳繃缂栬瘧锛屼絾杩愯鏃跺嚭鐜伴敊璇€傝瘯鐫€灏?聽 static int n; //瀹氫箟闈欐€佸叏灞€鍙橀噺鏀逛负 聽 int n; //瀹氫箟鍏ㄥ眬鍙橀噺鍐嶆缂栬瘧杩愯绋嬪簭锛岀粏蹇冧綋浼氬叏灞€鍙橀噺鍜岄潤鎬佸叏灞€鍙橀噺鐨勫尯鍒€?2銆侀潤鎬佸眬閮ㄥ彉閲?鍦ㄥ眬閮ㄥ彉閲忓墠锛屽姞涓婂叧閿瓧static锛岃鍙橀噺灏辫瀹氫箟鎴愪负涓€涓潤鎬佸眬閮ㄥ彉閲忋€?鎴戜滑鍏堜妇涓€涓潤鎬佸眬閮ㄥ彉閲忕殑渚嬪瓙锛屽涓嬶細#include

using namespace std;

void fn();

int main(void)

{

fn();

fn();

fn();

return 0;

}

void fn()

{

static int n = 10;

cout<

n++;

}閫氬父锛屽湪鍑芥暟浣撳唴瀹氫箟浜嗕竴涓彉閲忥紝姣忓綋绋嬪簭杩愯鍒拌璇彞鏃堕兘浼氱粰璇ュ眬閮ㄥ彉閲忓垎閰嶆爤鍐呭瓨銆備絾闅忕潃绋嬪簭閫€鍑哄嚱鏁颁綋锛岀郴缁熷氨浼氭敹鍥炴爤鍐呭瓨锛屽眬閮ㄥ彉閲忎篃鐩稿簲澶辨晥銆?浣嗘湁鏃跺€欐垜浠渶瑕佸湪涓ゆ璋冪敤涔嬮棿瀵瑰彉閲忕殑鍊艰繘琛屼繚瀛樸€傞€氬父鐨勬兂娉曟槸瀹氫箟涓€涓叏灞€鍙橀噺鏉ュ疄鐜般€備絾杩欐牱涓€鏉ワ紝鍙橀噺宸茬粡涓嶅啀灞炰簬鍑芥暟鏈韩浜嗭紝涓嶅啀浠呭彈鍑芥暟鐨勬帶鍒讹紝缁欑▼搴忕殑缁存姢甯︽潵涓嶄究銆?闈欐€佸眬閮ㄥ彉閲忔濂藉彲浠ヨВ鍐宠繖涓棶棰樸€傞潤鎬佸眬閮ㄥ彉閲忎繚瀛樺湪鍏ㄥ眬鏁版嵁鍖猴紝鑰屼笉鏄繚瀛樺湪鏍堜腑锛屾瘡娆$殑鍊间繚鎸佸埌涓嬩竴娆¤皟鐢紝鐩村埌涓嬫璧嬫柊鍊笺€?闈欐€佸眬閮ㄥ彉閲忔湁浠ヤ笅鐗圭偣锛?聽聽聽 璇ュ彉閲忓湪鍏ㄥ眬鏁版嵁鍖哄垎閰嶅唴瀛橈紱 聽聽聽 闈欐€佸眬閮ㄥ彉閲忓湪绋嬪簭鎵ц鍒拌瀵硅薄鐨勫0鏄庡鏃惰棣栨鍒濆鍖栵紝鍗充互鍚庣殑鍑芥暟璋冪敤涓嶅啀杩涜鍒濆鍖栵紱 聽聽聽 闈欐€佸眬閮ㄥ彉閲忎竴鑸湪澹版槑澶勫垵濮嬪寲锛屽鏋滄病鏈夋樉寮忓垵濮嬪寲锛屼細琚▼搴忚嚜鍔ㄥ垵濮嬪寲涓?锛?聽聽聽 瀹冨缁堥┗鐣欏湪鍏ㄥ眬鏁版嵁鍖猴紝鐩村埌绋嬪簭杩愯缁撴潫銆備絾鍏朵綔鐢ㄥ煙涓哄眬閮ㄤ綔鐢ㄥ煙锛屽綋瀹氫箟瀹冪殑鍑芥暟鎴栬鍙ュ潡缁撴潫鏃讹紝鍏朵綔鐢ㄥ煙闅忎箣缁撴潫锛?3銆侀潤鎬佸嚱鏁?鍦ㄥ嚱鏁扮殑杩斿洖绫诲瀷鍓嶅姞涓妔tatic鍏抽敭瀛?鍑芥暟鍗宠瀹氫箟涓洪潤鎬佸嚱鏁般€傞潤鎬佸嚱鏁颁笌鏅€氬嚱鏁颁笉鍚岋紝瀹冨彧鑳藉湪澹版槑瀹冪殑鏂囦欢褰撲腑鍙锛屼笉鑳借鍏跺畠鏂囦欢浣跨敤銆?闈欐€佸嚱鏁扮殑渚嬪瓙锛?include

using namespace std;

static void fn(); //澹版槑闈欐€佸嚱鏁?/p>

int main(void)

{

fn();

return 0;

}

void fn() //瀹氫箟闈欐€佸嚱鏁?/p>

{

int n = 10;

cout<

}瀹氫箟闈欐€佸嚱鏁扮殑濂藉锛?聽聽聽聽聽聽 闈欐€佸嚱鏁颁笉鑳借鍏跺畠鏂囦欢鎵€鐢紱 聽聽聽聽聽聽 鍏跺畠鏂囦欢涓彲浠ュ畾涔夌浉鍚屽悕瀛楃殑鍑芥暟锛屼笉浼氬彂鐢熷啿绐侊紱 浜屻€侀潰鍚戝璞$殑static鍏抽敭瀛楋紙绫讳腑鐨剆tatic鍏抽敭瀛楋級 1銆侀潤鎬佹暟鎹垚鍛?鍦ㄧ被鍐呮暟鎹垚鍛樼殑澹版槑鍓嶅姞涓婂叧閿瓧static锛岃鏁版嵁鎴愬憳灏辨槸绫诲唴鐨勯潤鎬佹暟鎹垚鍛樸€傚厛涓句竴涓潤鎬佹暟鎹垚鍛樼殑渚嬪瓙銆?include

using namespace std;

class Myclass

{

private:

int a , b , c;

static int sum; //澹版槑闈欐€佹暟鎹垚鍛?/p>

public:

Myclass(int a , int b , int c);

void GetSum();

};

int Myclass::sum = 0; //瀹氫箟骞跺垵濮嬪寲闈欐€佹暟鎹垚鍛?/p>

Myclass::Myclass(int a , int b , int c)

{

this->a = a;

this->b = b;

this->c = c;

sum += a+b+c;

}

void Myclass::GetSum()

{

cout<<"sum="<

}

int main(void)

{

Myclass M(1 , 2 , 3);

M.GetSum();

Myclass N(4 , 5 , 6);

N.GetSum();

M.GetSum();

return 0;

}鍙互鐪嬪嚭锛岄潤鎬佹暟鎹垚鍛樻湁浠ヤ笅鐗圭偣锛?

瀵逛簬闈為潤鎬佹暟鎹垚鍛橈紝姣忎釜绫诲璞¢兘鏈夎嚜宸辩殑鎷疯礉銆傝€岄潤鎬佹暟鎹垚鍛樿褰撲綔鏄被鐨勬垚鍛樸€傛棤璁鸿繖涓被鐨勫璞¤瀹氫箟浜嗗灏戜釜锛岄潤鎬佹暟鎹垚鍛樺湪绋嬪簭涓篃鍙湁涓€浠芥嫹璐濓紝鐢辫绫诲瀷鐨勬墍鏈夊璞″叡浜闂€備篃灏辨槸璇达紝闈欐€佹暟鎹垚鍛樻槸璇ョ被鐨勬墍鏈夊璞℃墍鍏辨湁鐨勩€傚璇ョ被鐨勫涓璞℃潵璇达紝闈欐€佹暟鎹垚鍛樺彧鍒嗛厤涓€娆″唴瀛橈紝渚涙墍鏈夊璞″叡鐢ㄣ€傛墍浠ワ紝闈欐€佹暟鎹垚鍛樼殑鍊煎姣忎釜瀵硅薄閮芥槸涓€鏍风殑锛屽畠鐨勫€煎彲浠ユ洿鏂帮紱闈欐€佹暟鎹垚鍛樺瓨鍌ㄥ湪鍏ㄥ眬鏁版嵁鍖恒€傞潤鎬佹暟鎹垚鍛樺畾涔夋椂瑕佸垎閰嶇┖闂达紝鎵€浠ヤ笉鑳藉湪绫诲0鏄庝腑瀹氫箟銆傚湪Example 5涓紝璇彞int Myclass::Sum=0;鏄畾涔夐潤鎬佹暟鎹垚鍛橈紱闈欐€佹暟鎹垚鍛樺拰鏅€氭暟鎹垚鍛樹竴鏍烽伒浠巔ublic,protected,private璁块棶瑙勫垯锛涘洜涓洪潤鎬佹暟鎹垚鍛樺湪鍏ㄥ眬鏁版嵁鍖哄垎閰嶅唴瀛橈紝灞炰簬鏈被鐨勬墍鏈夊璞″叡浜紝鎵€浠ワ紝瀹冧笉灞炰簬鐗瑰畾鐨勭被瀵硅薄锛屽湪娌℃湁浜х敓绫诲璞℃椂鍏朵綔鐢ㄥ煙灏卞彲瑙侊紝鍗冲湪娌℃湁浜х敓绫荤殑瀹炰緥鏃讹紝鎴戜滑灏卞彲浠ユ搷浣滃畠锛涢潤鎬佹暟鎹垚鍛樺垵濮嬪寲涓庝竴鑸暟鎹垚鍛樺垵濮嬪寲涓嶅悓銆傞潤鎬佹暟鎹垚鍛樺垵濮嬪寲鐨勬牸寮忎负锛?锛滄暟鎹被鍨嬶紴锛滅被鍚嶏紴::锛滈潤鎬佹暟鎹垚鍛樺悕锛?锛滃€硷紴绫荤殑闈欐€佹暟鎹垚鍛樻湁涓ょ璁块棶褰㈠紡锛?锛滅被瀵硅薄鍚嶏紴.锛滈潤鎬佹暟鎹垚鍛樺悕锛?鎴?锛滅被绫诲瀷鍚嶏紴::锛滈潤鎬佹暟鎹垚鍛樺悕锛?濡傛灉闈欐€佹暟鎹垚鍛樼殑璁块棶鏉冮檺鍏佽鐨勮瘽锛堝嵆public鐨勬垚鍛橈級锛屽彲鍦ㄧ▼搴忎腑锛屾寜涓婅堪鏍煎紡鏉ュ紩鐢ㄩ潤鎬佹暟鎹垚鍛?锛涢潤鎬佹暟鎹垚鍛樹富瑕佺敤鍦ㄥ悇涓璞¢兘鏈夌浉鍚岀殑鏌愰」灞炴€х殑鏃跺€欍€傛瘮濡傚浜庝竴涓瓨娆剧被锛屾瘡涓疄渚嬬殑鍒╂伅閮芥槸鐩稿悓鐨勩€傛墍浠ワ紝搴旇鎶婂埄鎭涓哄瓨娆剧被鐨勯潤鎬佹暟鎹垚鍛樸€傝繖鏈変袱涓ソ澶勶紝绗竴锛屼笉绠″畾涔夊灏戜釜瀛樻绫诲璞★紝鍒╂伅鏁版嵁鎴愬憳閮藉叡浜垎閰嶅湪鍏ㄥ眬鏁版嵁鍖虹殑鍐呭瓨锛屾墍浠ヨ妭鐪佸瓨鍌ㄧ┖闂淬€傜浜岋紝涓€鏃﹀埄鎭渶瑕佹敼鍙樻椂锛屽彧瑕佹敼鍙樹竴娆★紝鍒欐墍鏈夊瓨娆剧被瀵硅薄鐨勫埄鎭叏鏀瑰彉杩囨潵浜嗭紱鍚屽叏灞€鍙橀噺鐩告瘮锛屼娇鐢ㄩ潤鎬佹暟鎹垚鍛樻湁涓や釜浼樺娍锛?/p>

闈欐€佹暟鎹垚鍛樻病鏈夎繘鍏ョ▼搴忕殑鍏ㄥ眬鍚嶅瓧绌洪棿锛屽洜姝や笉瀛樺湪涓庣▼搴忎腑鍏跺畠鍏ㄥ眬鍚嶅瓧鍐茬獊鐨勫彲鑳芥€э紱鍙互瀹炵幇淇℃伅闅愯棌銆傞潤鎬佹暟鎹垚鍛樺彲浠ユ槸private鎴愬憳锛岃€屽叏灞€鍙橀噺涓嶈兘锛?2銆侀潤鎬佹垚鍛樺嚱鏁般€€銆€涓庨潤鎬佹暟鎹垚鍛樹竴鏍凤紝鎴戜滑涔熷彲浠ュ垱寤轰竴涓潤鎬佹垚鍛樺嚱鏁帮紝瀹冧负绫荤殑鍏ㄩ儴鏈嶅姟鑰屼笉鏄负鏌愪竴涓被鐨勫叿浣撳璞℃湇鍔°€傞潤鎬佹垚鍛樺嚱鏁颁笌闈欐€佹暟鎹垚鍛樹竴鏍凤紝閮芥槸绫荤殑鍐呴儴瀹炵幇锛屽睘浜庣被瀹氫箟鐨勪竴閮ㄥ垎銆傛櫘閫氱殑鎴愬憳鍑芥暟涓€鑸兘闅愬惈浜嗕竴涓猼his鎸囬拡锛宼his鎸囬拡鎸囧悜绫荤殑瀵硅薄鏈韩锛屽洜涓烘櫘閫氭垚鍛樺嚱鏁版€绘槸鍏蜂綋鐨勫睘浜庢煇涓被鐨勫叿浣撳璞$殑銆傞€氬父鎯呭喌涓嬶紝this鏄己鐪佺殑銆傚鍑芥暟fn()瀹為檯涓婃槸this->fn()銆備絾鏄笌鏅€氬嚱鏁扮浉姣旓紝闈欐€佹垚鍛樺嚱鏁扮敱浜庝笉鏄笌浠讳綍鐨勫璞$浉鑱旂郴锛屽洜姝ゅ畠涓嶅叿鏈塼his鎸囬拡銆備粠杩欎釜鎰忎箟涓婅锛屽畠鏃犳硶璁块棶灞炰簬绫诲璞$殑闈為潤鎬佹暟鎹垚鍛橈紝涔熸棤娉曡闂潪闈欐€佹垚鍛樺嚱鏁帮紝瀹冨彧鑳借皟鐢ㄥ叾浣欑殑闈欐€佹垚鍛樺嚱鏁般€備笅闈妇涓潤鎬佹垚鍛樺嚱鏁扮殑渚嬪瓙銆?聽 #include

using namespace std;

class Myclass

{

private:

int a , b , c;

static int sum; //澹版槑闈欐€佹暟鎹垚鍛?/p>

public:

Myclass(int a , int b , int c);

static void GetSum(); //澹版槑闈欐€佹垚鍛樺嚱鏁?/p>

};

int Myclass::sum = 0; //瀹氫箟骞跺垵濮嬪寲闈欐€佹暟鎹垚鍛?/p>

Myclass::Myclass(int a , int b , int c)

{

this->a = a;

this->b = b;

this->c = c;

sum += a+b+c; //闈為潤鎬佹垚鍛樺嚱鏁板彲浠ヨ闂潤鎬佹暟鎹垚鍛?/p>

}

void Myclass::GetSum() //闈欐€佹垚鍛樺嚱鏁扮殑瀹炵幇

{

//cout<

cout<<"sum="<

}

int main(void)

{

Myclass M(1 , 2 , 3);

M.GetSum();

Myclass N(4 , 5 , 6);

N.GetSum();

Myclass::GetSum();

return 0;

}鍏充簬闈欐€佹垚鍛樺嚱鏁帮紝鍙互鎬荤粨涓轰互涓嬪嚑鐐癸細 聽 聽

鍑虹幇鍦ㄧ被浣撳鐨勫嚱鏁板畾涔変笉鑳芥寚瀹氬叧閿瓧static锛涢潤鎬佹垚鍛樹箣闂村彲浠ョ浉浜掕闂紝鍖呮嫭闈欐€佹垚鍛樺嚱鏁拌闂潤鎬佹暟鎹垚鍛樺拰璁块棶闈欐€佹垚鍛樺嚱鏁帮紱闈為潤鎬佹垚鍛樺嚱鏁板彲浠ヤ换鎰忓湴璁块棶闈欐€佹垚鍛樺嚱鏁板拰闈欐€佹暟鎹垚鍛橈紱闈欐€佹垚鍛樺嚱鏁颁笉鑳借闂潪闈欐€佹垚鍛樺嚱鏁板拰闈為潤鎬佹暟鎹垚鍛橈紱鐢变簬娌℃湁this鎸囬拡鐨勯澶栧紑閿€锛屽洜姝ら潤鎬佹垚鍛樺嚱鏁颁笌绫荤殑鍏ㄥ眬鍑芥暟鐩告瘮閫熷害涓婁細鏈夊皯璁哥殑澧為暱锛涜皟鐢ㄩ潤鎬佹垚鍛樺嚱鏁帮紝鍙互鐢ㄦ垚鍛樿闂搷浣滅(.)鍜?->)涓轰竴涓被鐨勫璞℃垨鎸囧悜绫诲璞$殑鎸囬拡璋冪敤闈欐€佹垚鍛樺嚱鏁帮紝涔熷彲浠ョ洿鎺ヤ娇鐢ㄥ涓嬫牸寮忥細 锛滅被鍚嶏紴::锛滈潤鎬佹垚鍛樺嚱鏁板悕锛烇紙锛滃弬鏁拌〃锛烇級 璋冪敤绫荤殑闈欐€佹垚鍛樺嚱鏁般€?/p>

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-4-22 22:06:46聽

鍘熸枃閾炬帴

闃呰锛?02 璇勮锛?聽

鏌ョ湅璇勮

聽[鍘焆鐧惧害2012瀹炰範鐢熸牎鍥嫑鑱樼瑪璇曢1銆佺粰涓€涓崟璇峚锛屽鏋滈€氳繃浜ゆ崲鍗曡瘝涓瓧姣嶇殑椤哄簭鍙互寰楀埌鍙﹀鐨勫崟璇峛锛岄偅涔坆鏄痑鐨勫厔寮熷崟璇嶏紝姣斿鐨勫崟璇峚rmy鍜宮ary浜掍负鍏勫紵鍗曡瘝銆?鐜板湪瑕佺粰鍑轰竴绉嶈В鍐虫柟妗堬紝瀵逛簬鐢ㄦ埛杈撳叆鐨勫崟璇嶏紝鏍规嵁缁欏畾鐨勫瓧鍏告壘鍑鸿緭鍏ュ崟璇嶆湁鍝簺鍏勫紵鍗曡瘝銆傝鍏蜂綋璇存槑鏁版嵁缁撴瀯鍜屾煡璇㈡祦绋嬶紝瑕佹眰鏃堕棿鍜岀┖闂存晥鐜囧敖鍙兘鍦伴珮銆?瀛楀吀鏍戠殑鍏稿瀷搴旂敤 2銆佺郴缁熶腑缁存姢浜嗚嫢骞叉暟鎹」锛屾垜浠鏁版嵁椤圭殑鍒嗙被鍙互鍒嗕负涓夌骇锛岄鍏堟垜浠寜鐓т竴绾у垎绫绘柟娉曞皢鏁版嵁椤瑰垎涓篈銆丅銆丆......鑻ュ共绫诲埆锛屾瘡涓竴绾у垎绫绘柟娉曚骇鐢熺殑绫诲埆鍙堝彲浠ユ寜鐓т簩绾у垎绫绘柟娉曞垎涓篴銆乥銆乧......鑻ュ共瀛愮被鍒紝鍚屾牱锛屼簩绾у垎绫绘柟娉曚骇鐢熺殑绫诲埆鍙堝彲浠ユ寜鐓ф槸涓夌骇鍒嗙被鏂规硶鍒嗕负i銆乮i銆乮ii......鑻ュ共瀛愮被鍒紝姣忎釜涓夌骇鍒嗙被鏂规硶浜х敓鐨勫瓙绫诲埆涓殑鏁版嵁椤逛粠1寮€濮嬬紪鍙枫€傛垜浠渶瑕佸姣忎釜鏁版嵁椤硅緭鍑烘棩蹇楋紝鏃ュ織鐨勫舰寮忔槸key_value瀵癸紝鍐欏叆鏃ュ織鐨勬椂鍊欙紝鐢ㄦ埛鎻愪緵涓夌骇绫诲埆鍚嶇О銆佹暟鎹」缂栧彿鍜屾棩蹇楃殑key锛屽叡浜斾釜key鍊硷紝渚嬪锛寃rite_log锛圓,a,i,1,key1锛夛紝鑾峰彇鏃ュ織鐨勬椂鍊欙紝鐢ㄦ埛鎻愪緵涓夌骇绫诲埆鍚嶇О銆佹暟鎹」缂栧彿锛屽叡鍥涗釜key鍊硷紝杩斿洖瀵瑰簲鐨勬墍鏈夌殑key_value瀵癸紝渚嬪get_log锛圓,a,i,1,key1锛夛紝 璇锋弿杩颁竴绉嶆暟鎹粨鏋勬潵瀛樺偍杩欎簺鏃ュ織锛屽苟璁$畻鍑哄啓鍏ユ棩蹇楀拰璇诲嚭鏃ュ織鐨勬椂闂村鏉傚害銆?3銆丆鍜孋++涓浣曞姩鎬佸垎閰嶅拰閲婃斁鍐呭瓨锛熶粬浠殑鍖哄埆鏄粈涔堬紵 malloc/free鍜宯ew/delete鐨勫尯鍒?銆佹暟缁刟l[0,mid-1]鍜宎l[mid,num-1]鏄悇鑷湁搴忕殑锛屽鏁扮粍al[0,num-1]鐨勪袱涓瓙鏈夊簭娈佃繘琛宮erge锛屽緱鍒癮l[0,num-1]鏁翠綋鏈夊簭銆傝姹傜┖闂村鏉傚害涓篛(1)銆傛敞锛歛l[i]鍏冪礌鏄敮鎸?<'杩愮畻绗︾殑銆?聽 /*

鏁扮粍a[begin, mid] 鍜?a[mid+1, end]鏄悇鑷湁搴忕殑锛屽涓や釜瀛愭杩涜Merge寰楀埌a[begin , end]鐨勬湁搴忔暟缁勩€?瑕佹眰绌洪棿澶嶆潅搴︿负O(1)

鏂规锛?/p>

1銆佷袱涓湁搴忔浣岮鍜孊锛孉鍦ㄥ墠锛孊绱ф帴鍦ˋ鍚庨潰锛屾壘鍒癆鐨勭涓€涓ぇ浜嶣[0]鐨勬暟A[i]锛?A[0...i-1]鐩稿綋浜巑erge鍚庣殑鏈夋晥娈碉紝鍦˙涓壘鍒扮涓€涓ぇ浜嶢[i]鐨勬暟B[j]锛?/p>

瀵规暟缁凙[i...j-1]寰幆鍙崇Щj-k浣嶏紝浣緼[i...j-1]鏁扮粍鐨勫墠闈㈤儴鍒嗘湁搴?/p>

2銆佸姝ゅ惊鐜痬erge

3銆佸惊鐜彸绉婚€氳繃鍏堝瓙娈靛弽杞啀鏁翠綋鍙嶈浆鐨勬柟寮忚繘琛岋紝澶嶆潅搴︽槸O(L), L鏄渶瑕佸惊鐜Щ鍔ㄧ殑瀛愭鐨勯暱搴?/p>

*/

#include

using namespace std;

void Reverse(int *a , int begin , int end ) //鍙嶈浆

{

for(; begin < end; begin++ , end--)

swap(a[begin] , a[end]);

}

void RotateRight(int *a , int begin , int end , int k) //寰幆鍙崇Щ

{

int len = end - begin + 1; //鏁扮粍鐨勯暱搴?/p>

k %= len;

Reverse(a , begin , end - k);

Reverse(a , end - k + 1 , end);

Reverse(a , begin , end);

}

// 灏嗘湁搴忔暟缁刟[begin...mid] 鍜?a[mid+1...end] 杩涜褰掑苟鎺掑簭

void Merge(int *a , int begin , int end )

{

int i , j , k;

i = begin;

j = 1 + ((begin + end)>>1); //浣嶈繍绠楃殑浼樺厛绾ф瘮杈冧綆锛屽闈㈤渶瑕佸姞涓€涓嫭鍙凤紝鍒氬紑濮嬪繕璁版坊鍔犳嫭鍙凤紝瀵艰嚧閿欎簡寰堝娆?/p>

while(i <= end && j <= end && i

{

while(i <= end && a[i] < a[j])

i++;

k = j; //鏆傛椂淇濆瓨鎸囬拡j鐨勪綅缃?/p>

while(j <= end && a[j] < a[i])

j++;

if(j > k)

RotateRight(a , i , j-1 , j-k); //鏁扮粍a[i...j-1]寰幆鍙崇Щj-k娆?/p>

i += (j-k+1); //绗竴涓寚閽堝線鍚庣Щ鍔紝鍥犱负寰幆鍙崇Щ鍚庯紝鏁扮粍a[i....i+j-k]鏄湁搴忕殑

}

}

void MergeSort(int *a , int begin , int end )

{

if(begin == end)

return ;

int mid = (begin + end)>>1;

MergeSort(a , begin , mid); //閫掑綊鍦板皢a[begin...mid] 褰掑苟涓烘湁搴忕殑鏁扮粍

MergeSort(a , mid+1 , end); //閫掑綊鍦板皢a[mid+1...end] 褰掑苟涓烘湁搴忕殑鏁扮粍

Merge(a , begin , end); //灏嗘湁搴忔暟缁刟[begin...mid] 鍜?a[mid+1...end] 杩涜褰掑苟鎺掑簭

}

int main(void)

{

int n , i , a[20];

while(cin>>n)

{

for(i = 0 ; i < n ; ++i)

cin>>a[i];

MergeSort(a , 0 , n - 1);

for(i = 0 ; i < n ; ++i)

cout<

cout<

}

return 0;

}5銆佺嚎绋嬪拰杩涚▼鐨勫尯鍒強鑱旂郴锛熷浣曠悊瑙b€滅嚎绋嬪畨鍏ㄢ€濋棶棰橈紵聽 绛旀锛氳繘绋嬪拰绾跨▼閮芥槸鐢辨搷浣滅郴缁熸墍浣撲細鐨勭▼搴忚繍琛岀殑鍩烘湰鍗曞厓锛岀郴缁熷埄鐢ㄨ鍩烘湰鍗曞厓瀹炵幇绯荤粺瀵瑰簲鐢ㄧ殑骞跺彂鎬с€?1銆佺畝鑰岃█涔?涓€涓▼搴忚嚦灏戞湁涓€涓繘绋?涓€涓繘绋嬭嚦灏戞湁涓€涓嚎绋? 2銆佺嚎绋嬬殑鍒掑垎灏哄害灏忎簬杩涚▼锛屼娇寰楀绾跨▼绋嬪簭鐨勫苟鍙戞€ч珮銆?3銆佸彟澶栵紝杩涚▼鍦ㄦ墽琛岃繃绋嬩腑鎷ユ湁鐙珛鐨勫唴瀛樺崟鍏冿紝鑰屽涓嚎绋嬪叡浜唴瀛橈紝浠庤€屾瀬澶у湴鎻愰珮浜嗙▼搴忕殑杩愯鏁堢巼銆?4銆佺嚎绋嬪湪鎵ц杩囩▼涓笌杩涚▼杩樻槸鏈夊尯鍒殑銆傛瘡涓嫭绔嬬殑绾跨▼鏈変竴涓▼搴忚繍琛岀殑鍏ュ彛銆侀『搴忔墽琛屽簭鍒楀拰绋嬪簭鐨勫嚭鍙c€備絾鏄嚎绋嬩笉鑳藉鐙珛鎵ц锛屽繀椤讳緷瀛樺湪搴旂敤绋嬪簭涓紝鐢卞簲鐢ㄧ▼搴忔彁渚涘涓嚎绋嬫墽琛屾帶鍒躲€?5銆佷粠閫昏緫瑙掑害鏉ョ湅锛屽绾跨▼鐨勬剰涔夊湪浜庝竴涓簲鐢ㄧ▼搴忎腑锛屾湁澶氫釜鎵ц閮ㄥ垎鍙互鍚屾椂鎵ц銆備絾鎿嶄綔绯荤粺骞舵病鏈夊皢澶氫釜绾跨▼鐪嬪仛澶氫釜鐙珛鐨勫簲鐢紝鏉ュ疄鐜拌繘绋嬬殑璋冨害鍜岀鐞嗕互鍙婅祫婧愬垎閰嶃€傝繖灏辨槸杩涚▼鍜岀嚎绋嬬殑閲嶈鍖哄埆銆?聽 绠楁硶涓庣▼搴忚璁′竴銆?缃戦〉鐖櫕鍦ㄦ姄鍙栫綉椤垫椂锛屼粠鎸囧畾鐨刄RL绔欑偣鍏ュ彛寮€濮嬬埇鍙栬繖涓珯鐐逛笂鐨勬墍鏈塙RL link锛屾姄鍙栧埌涓嬩竴绾ink瀵瑰簲鐨勯〉闈㈠悗锛屽悓鏍峰椤甸潰涓婄殑link杩涜鎶撳彇浠庤€屽畬鎴愭繁搴﹂亶鍘嗐€備负绠€鍖栭棶棰橈紝鎴戜滑鍋囪姣忎釜椤甸潰涓婅嚦澶氬彧鏈変竴涓猯ink锛屽浠巜ww.baidu.com/a.html閾炬帴鍒?www.baidu.com/b.html鍐嶉摼鍒皐ww.baidu.com/x.html锛屽綋鐖櫕鎶撳彇鍒版煇涓〉闈㈡椂锛屾湁鍙兘鍐嶉摼鍥瀢ww.baidu.com/b.html锛屼篃鏈夊彲鑳界埇鍙栧埌涓€涓笉甯︿换浣昹ink鐨勭粓鏋侀〉闈€傚綋鎶撳彇鍒扮浉鍚岀殑URL鎴栦笉鍖呭惈浠讳綍link鐨勭粓鏋侀〉闈㈡椂鍗冲畬鎴愮埇鍙栥€傜埇铏湪鎶撳彇鍒拌繖浜涢〉闈㈠悗寤虹珛涓€涓崟鍚戦摼琛紝鐢ㄦ潵璁板綍鎶撳彇鍒扮殑椤甸潰锛屽锛歛.html->b.html->x.html...->NULL銆?闂細瀵逛簬鐖櫕鍒嗗埆浠巜ww.baidu.com/x1.html鍜寃ww.baidu.com/x2.html涓や釜鍏ュ彛寮€濮嬭幏寰椾袱涓崟鍚戦摼琛紝寰楀埌杩欎袱涓崟鍚戦摼琛ㄥ悗锛屽浣曞垽鏂粬浠槸鍚︽姄鍙栧埌浜嗙浉鍚岀殑URL锛燂紙鍋囪椤甸潰URL涓婄櫨浜匡紝瀛樺偍璧勬簮鏈夐檺锛屾棤娉曠敤hash鏂规硶鍒ゆ柇鏄惁鍖呭惈鐩稿悓鐨刄RL锛?璇峰厛鎻忚堪鐩稿簲鐨勭畻娉曪紝鍐嶇粰鍑虹浉搴旂殑浠g爜瀹炵幇銆傦紙鍙渶缁欏嚭鍒ゆ柇鏂规硶浠g爜锛屾棤闇€鐖櫕浠g爜锛?涓や釜鍗曞悜閾捐〃鐨勭浉浜ら棶棰樸€?绠楁硶涓庣▼搴忚璁′簩銆?4銆佹湁涓€绉嶇粨鏋勫涓嬪浘鎵€绀猴紝瀹冪敱灞傜殑宓屽缁勬垚锛屼竴涓埗灞備腑鍙兘鍖呭惈鍨傜洿鏂瑰悜涓婃垨鑰呮槸姘村钩鏂瑰悜涓婂苟鍒楃殑灞傦紝渚嬪锛屽眰1鍙互鍖呭惈2銆?銆?涓変釜鍨傜洿鏂瑰悜涓婄殑灞傦紝灞?鍙互鍖呭惈5鍜?涓や釜姘村钩鏂瑰悜鐨勫眰锛屽湪绌哄眰涓彲浠ュ寘鍚暟鎹妭鐐癸紝鎵€璋撶殑绌哄眰鏄寚涓嶅寘鍚瓙灞傜殑灞傦紝姣忎釜绌哄眰鍙互鍖呭惈鑻ュ共涓暟鎹妭鐐癸紝涔熷彲浠ヤ竴涓兘涓嶅寘鍚€?鍦ㄨ繖绉嶇粨鏋勪笂闈紝鎴戜滑浠庡瀭鐩存柟鍚戜笂鍒掍竴鏉$嚎锛屾垜浠害瀹氭瘡涓€涓瓙灞備腑鎴戜滑鍙兘缁忚繃涓€涓暟鎹妭鐐癸紝鍦ㄨ繖绉嶆儏鍐典笅锛屾瘡鏉$嚎鍙互缁忚繃澶氫釜鏁版嵁鑺傜偣锛屼篃鍙互涓嶇粡杩囦换浣曟暟鎹妭鐐癸紝渚嬪锛岀嚎1缁忚繃浜?銆?銆?涓変釜鏁版嵁鑺傜偣锛岀嚎2鍙粡杩囦簡14涓暟鎹妭鐐广€?锛?锛夌粰鍑哄嚱鏁帮紝瀹炵幇鍒ゆ柇涓や釜鏁版嵁鑺傜偣锛屾槸鍚﹀彲鑳藉悓鏃惰绾垮垝涓紝缁欏嚭鍏蜂綋鐨勪唬鐮併€傦紙2锛夌粰鍑哄嚱鏁帮紝杈撳嚭鎵€鏈変竴鏉$嚎鍙互鍒掍腑鐨勬暟鎹妭鐐瑰簭鍒楋紝 鍙互缁欏嚭浼唬鐮佸疄鐜般€?聽 鎬濊矾锛氾紙1锛夊垽鏂袱涓暟鎵€灞炵殑鍚屼竴灞傛鐨勭浉鍚岀煩褰㈡鐨勪笅涓€灞傛鐭╁舰妗嗘槸姘村钩鎺掑垪鐨勮繕鏄瀭鐩存帓鍒楃殑锛屽瀭鐩存帓鍒楀湪鑳藉湪涓€鏉$嚎涓婏紝姘村钩鎺掑垪鍒欎笉鑳姐€?锛?锛夌敤鍥炴函绠楁硶姹傚嚭鎵€鏈夊湪涓€鏉$洿绾夸笂鐨勫瓧绗︿覆锛岀敤涓ゅ瓧绗︿覆鏄惁鍦ㄥ悓涓€鐩寸嚎涓婅繘琛屽壀鏋濇搷浣溿€?绯荤粺璁捐棰?1銆佺浉淇″ぇ瀹堕兘浣跨敤杩囩櫨搴︽悳绱㈡鐨剆uggestion鍔熻兘锛岀櫨搴︽悳绱㈡涓殑suggestion鎻愮ず鍔熻兘濡備綍瀹炵幇锛熻缁欏嚭瀹炵幇鎬濊矾鍜屼富瑕佺殑鏁版嵁缁撴瀯銆佺畻娉曘€傛湁浠€涔堜紭鍖栨€濊矾鍙互浣垮緱鏃堕棿鍜岀┖闂存晥鐜囨渶楂橈紵 搴旂敤瀛楀吀鏍戞潵姹傚墠缂€鍜孴OP K瀵圭儹璇嶈繘琛岀粺璁℃帓搴?2銆佷袱涓?00G澶у皬鐨勬枃浠禔鍜孊锛孉B鏂囦欢閲屽唴瀹瑰潎涓烘棤搴忕殑涓€琛屼竴涓鏁存暟瀛楋紙涓嶈秴杩?^63锛夛紝璇疯璁℃柟妗堬紝杈撳嚭涓や釜鏂囦欢涓潎鍑虹幇杩囩殑鏁板瓧锛屼娇鐢ㄤ竴鍙板唴瀛樹笉瓒呰繃16G銆佺鐩樺厖瓒崇殑鏈哄櫒銆?鏂规涓寚鏄庝娇鐢╦ava缂栫▼鏃朵娇鐢ㄥ埌鐨勫叧閿伐鍏风被锛屼互鍙婁负浠€涔?

浣滆€咃細Hackbuteer1 鍙戣〃浜?012-5-7 16:21:53聽

鍘熸枃閾炬帴

闃呰锛?92 璇勮锛?聽

鏌ョ湅璇勮

==============================================================================

鏈枃杞嚜琚仐蹇樼殑鍗氬鍥崥瀹紝鍘熸枃閾炬帴锛歨ttp://www.cnblogs.com/rollenholt/articles/2491681.html锛屽闇€杞浇璇疯嚜琛岃仈绯诲師浣滆€?

鑷堪鏂囦欢

闈炲父妫掔殑瀛樺偍搴撳窘鏍?/p>

寰堟鐨刅ue.js 澶浜?涓嶸ue.js鐩稿叧鐨勭簿褰╁唴瀹圭簿閫夋竻鍗?/p>

璧勬簮璧勬簮 瀹樻柟璧勬簮 澶栭儴璧勬簮 宸ヤ綔闂ㄦ埛 绀惧尯 浼氳娲诲姩 鎾 YouTube棰戦亾 瀹樻柟渚嬪瓙 璁茶В 渚嬪瓙 鍥句功 鍗氬鏂囩珷 鍩硅鐝?绾綍鐗?浣跨敤Vue.js鐨勯」鐩?寮€婧愮殑 鍟嗕笟浜у搧 搴旂敤/缃戠珯 浜掑姩浣撻獙 浼佷笟鐢ㄩ€?A11y 缁勪欢鍜屽簱 UI缁勪欢 琛?閫氱煡 瑁呰浇鏈?杩涘害鏉?宸ュ叿鎻愮ず 瑕嗙洊 瑙嗗樊 鍥剧ず 閫夋 鑿滃崟 鍑忓彿鍔犺緭鍏?杞挱 鍥捐〃 鏃堕棿 鏃ュ巻 鍦板浘 闊抽瑙嗛 鏃犻檺婊氬姩 鎷夊埌鍒锋柊 闄嶄环淇冮攢 PDF鏍煎紡 鏍?鍥惧舰 绀句氦鍒嗕韩 浜岀淮鐮?鎼滅储 鏉?鏍囩 褰㈡垚 鐢佃瘽鍙风爜杈撳叆鏍煎紡鍣?瀵嗙爜杈撳叆 閫夋嫨鍣?鍙戠數鏈?鏃ユ湡閫夋嫨鍣?閫夋嫨 婊戞潌 鎷栨斁 鑷姩瀹屾垚 绫诲瀷閫夋嫨 棰滆壊閫夋嫨鍣?寮€鍏?灞忚斀杈撳叆 瀵屾枃鏈紪杈?鍥惧儚澶勭悊 瑙嗛鎿嶇旱 涓婁紶鏂囦欢 涓婁笅鏂囪彍鍗?鏉?宸笀 CSV 璇勮绯荤粺 甯嗗竷 閾炬帴棰勮 娓歌 鐢ㄦ埛鐣岄潰甯冨眬 鏋勬灦 鍙嶅簲鐏垫晱 绉诲姩 缁勪欢闆嗗悎 绠$悊鍛樿寖鏈?鏈嶅姟鍣ㄧ娓叉煋 闈欐€佺綉绔欑敓鎴愬櫒 鍏朵粬 鐢ㄦ埛鐣岄潰瀹炵敤绋嬪簭 浜嬩欢澶勭悊 鍝嶅簲寮忚璁?褰㈡垚 楠岃瘉鏂瑰紡 璋冩暣澶у皬 婊氬姩 璺敱 寤惰繜鍔犺浇 鍒嗛〉 鍔ㄧ敾 鍏冩爣璁?闂ㄦ埛缃戠珯 绛涢€夊櫒 SVG 鏉?WebGL 鍏ㄥ睆 椤甸潰鍙鎬?鍒楀嵃 瀹炵敤宸ュ叿 鎵撳瓧绋?HTTP璇锋眰 i18n 鑷娲诲姩 鍧氭寔涓嶆噲 鍥藉绠$悊 Redux 榛戝府 璁よ瘉/鎺堟潈 Vuex瀹炵敤绋嬪簭 鏍囩涔嬮棿鍚屾 GraphQL 骞跺彂绠$悊 浠g爜椋庢牸 鐨凜SS 璧勪骇绠$悊 椤甸潰瀵艰埅 鏉?缃戠粶宸ヤ綔鑰?JSX 绉绘皯 缃戠粶鎻掑骇 浠樻 鏉$汗 璐濆疂 鏍煎瓙甯?鏁村悎鏂瑰紡 Vue CLI鎻掍欢 璋锋瓕鍒嗘瀽 Yandex Metrika 寮€鍙戝伐鍏?妫€鏌?鏂囦欢 娴嬭瘯 鏃犻渶娴忚鍣ㄧ殑瑕佹眰 婧愪唬鐮佺紪杈?鍘熷瓙 宕囬珮鏂囧瓧 Vim Visual Studio绋嬪紡鐮?瑙嗚宸ヤ綔瀹?鎷彿 鏅鸿兘 鍩冮┈鍏嬫柉 鍑壒 鑴氭墜鏋?瀹㈡埛 鏅亶 鏈嶅姟鍣?鐢靛瓙 閮ㄥ垎 杩愯 鍛戒护琛?缁堢 棰勬覆鏌?璧勬簮璧勬簮 瀹樻柟璧勬簮 瀹樻柟鎸囧崡 API鍙傝€?GitHub鍥炶喘 鍙戣璇存槑 鏃跺皻鎸囧崡 Vue.js鏂伴椈 澶栭儴璧勬簮 Vue.js璧勬枡銇俱仺銈侊紙鏃ヨ锛?@hashrock Vue.js鏂伴椈閫氳-姣忓懆绮鹃€夌殑Vue.js鏂伴椈鍓傞噺 Vue.js缁村熀鐧剧 Vue.js Radar-绮鹃€夌殑鏂伴椈绋垮拰缃戠珯锛屾兜鐩栦簡鏂扮殑Vue.js鐗堟湰/璐$尞銆?Vue鏂伴椈-涓撴敞浜庢渶鏂癡ue.js鏂伴椈鍜屼俊鎭殑绀句氦缃戠珯銆?Vue绮鹃€夎祫婧?鎺ㄨ崘鐨刅ue.js璇剧▼鍜屾暀绋嬨€?Vue瀛︽牎-閫氳繃鏍稿績鎴愬憳鍜岃涓氫笓瀹剁殑瑙嗛璇剧▼瀛︿範Vue.js VueDose銆傛湁鍏崇箒蹇欑殑寮€鍙戜汉鍛樼殑Vue鐢熸€佺郴缁熺殑鎻愮ず鍜屾妧宸с€?Vuelibs銆傚熀浜巃wesome-vue瀛樺偍搴撶殑Vue.js搴撳拰缁勪欢鐨勭畝绾﹀垪琛ㄣ€?Vue.js DEV绀惧尯-DEV.to涓奦ue.js JavaScript妗嗘灦鐨勬寮忔爣绛?Vue.js鍦ㄧ嚎璇剧▼鐩綍-鐢卞湪绾胯绋嬫悳绱㈠紩鎿嶤lasspert绛栧垝鐨勯《绾х數瀛愬涔犲钩鍙颁笂鐨刅ue.js璇剧▼銆?WebTechSurvey.com-浣跨敤Vue.js Javascript妗嗘灦鍒涘缓鐨勭綉绔欑殑骞挎硾鍒楄〃銆?Vue绮鹃€?Vue寮€鍙戜汉鍛樼殑缁堟瀬瀛︿範璧勬簮 Vue 3瑙嗛鎾斁鍒楄〃-鎯婁汉鐨刅ue 3鏁欑▼鍜屽疄楠?Vue.js宸ヤ綔鍧?閫氳繃鏋勫缓3涓簲鐢ㄧ▼搴忓湪娴忚鍣ㄤ腑瀛︿範Vue 2锛屽嵆鐧婚檰椤甸潰锛孴odos搴旂敤绋嬪簭鍜孭odcasts鑱氬悎鍣紙Vue.js锛孷ue-Router锛孷uex锛孷ue-Axios锛孷ue-Apollo锛?宸ヤ綔闂ㄦ埛 Vue.js鑱屼綅-VueJobs-涓€涓猇ue.js鑱屼綅闂ㄦ埛锛屽彲浠ヤ负鎮ㄦ墍鏈夌殑Vue.js鑱屼綅闆囩敤鎴栭泧鐢ㄣ€?Vue.js闈㈣瘯闂-300涓猇ueJS闈㈣瘯闂鍜岀瓟妗堢殑鍒楄〃 Prokarman绠€鍘嗙敓鎴愬櫒-涓€涓厤璐圭殑绠€鍘嗙敓鎴愬櫒锛岀敤浜庝负鎮ㄧ殑姊︽兂宸ヤ綔鍒朵綔绠€鍘嗐€?绀惧尯 鎺ㄧ壒 瀹樻柟璁哄潧 vue-requests-璇锋眰鎮ㄥ笇鏈涘瓨鍦ㄧ殑Vue.js妯″潡鎴栬幏鍙栨湁鍏虫ā鍧楃殑鎯虫硶 VueJS浼婃湕-鐢垫姤棰戦亾鍜岀兢缁勶紙缇ょ粍閾炬帴鍙湪棰戦亾绠€浠嬩腑鎵惧埌锛?vueslack-鍏ㄧ悆2300澶氫釜娉ㄥ唽鐢ㄦ埛 Vue Land-Discord鑱婂ぉ鏈嶅姟鍣?VueJS淇勭綏鏂?Telegram闆嗗洟[淇勮] 瓒婂崡VueJS-Facebook缁?VueJS娉板浗-Facebook闆嗗洟 VueJS宸磋タ-鐢垫姤灏忕粍[钁¤悇鐗欒] VueJS宸磋タ-Facebook椤甸潰[钁¤悇鐗欒] VueJS Brasil-Facebook闆嗗洟[钁¤悇鐗欒] VueJS enespa帽ol-Facebook缁刐瑗跨彮鐗欒] VueJS鍗板害 馃嚠馃嚦 -涓嶅拰璋愯亰澶╂湇鍔″櫒 VueJS Indonesia-鐢垫姤灏忕粍[鍗板凹鏂嘳 VueJS Indonesia-Facebook Group [鍗板凹鏂嘳 VueJS Indonesia-鑱氫細椤甸潰[鍗板凹鏂嘳 VueJS棣欐腐-Facebook缁?VueJS闃挎媺浼?Telegram Group VueJS Vix-鐢垫姤缁刐钁¤悇鐗欒] VueJS Vix-鑱氫細椤甸潰[钁¤悇鐗欒] VueJS鎸▉-鑱氫細 VueJS浠ヨ壊鍒?馃嚠馃嚤 -Facebook椤甸潰 VueJS鑺叞-鑱氫細 VueJS鑺叞-Facebook椤甸潰 Hablemos de Vue.js-鐢垫姤缁刐Castellano] VueBLR-鑱氫細 VueBLR-WhatsApp缁?VueBLR-Facebook闆嗗洟 VueJS USA-鑱氫細 VueJS CZ / SK-Discord缁?VueJS DOM-WhatsApp缁?VueJS DOM-Facebook缁?VueJS涔屽吂鍒厠鏂潶-鐢垫姤灏忕粍[涔屽吂鍒厠] 浼氳娲诲姩 VueConf 浼︽暒Vue.js VueConf缇庡浗 VueConf澶氫鸡澶?Vue.js闃垮鏂壒涓?鎾 Full Stack Radio锛?0锛?1-23-2015锛?JavaScript Jabber锛?87锛?015骞?1鏈?5鏃ワ級 鏇存柊鏃ュ織锛?84锛?1-27-2015锛?杞欢宸ョ▼鏃ユ姤锛?2-29-2015锛?JavaScript绌烘皵016锛?016骞?鏈?0鏃ワ級 Codecasts锛?-Falando Sobre Vuejs e Web Components锛?016-08-19锛塠pt-BR] Full Stack Radio锛?0锛?9-21-2016锛?鍜孷ue.js妗嗘灦鐨勪綔鑰呰亰鑱婂墠绔鏋跺紑鍙戣儗鍚庣殑鏁呬簨[zh-CN] MW S04E08-Vue.js鍜孍van You鍜孲arah Drasner锛?4-27-2017锛?璇锋眰鎻愪氦锛?2-浼楃寮€婧愶紙Vue.js锛夛紙06-15-2017锛?Web骞冲彴鎾132锛歏ue.js锛?7-27-2017锛?JavaScript Jabber锛?76鍜孧aximilianSchwarzm眉ller锛?8-29-2017锛?浣跨敤Sarah Drasner涓篤ueJS鍒朵綔鍔ㄧ敾锛堣蒋浠跺伐绋嬫棩鎶?1-12-2017锛?Vue涓婄殑瑙傜湅娆℃暟锛圴ue涓婄殑姣忓懆鎾寮€濮嬩簬2018骞?鏈?鏃ワ級 閫氳繃QIT Tech Podcast Indexer鐨刅ue鎾鍒楄〃 DNE 138-Vale a pena VueJS锛燂紙01-05-2018锛?鎰や笘瀚変織鐨勫紑鍙戣€咃純99锛?0-15-2018锛?璇硶锛?30锛?3-27-2019锛?娆h祻Vue锛氭柊鐨刅ue.js鎾 YouTube棰戦亾 绾界害甯?VueConf娆х洘 瀹樻柟渚嬪瓙 Vue.js TodoMVC CoffeeScript鐗堟湰 Vue.js HackerNews鍏嬮殕 Vue.js 2.0 HackerNews鍏嬮殕 璁茶В 瀛︿範Vue 2锛氬湪Laracast涓婇€愭瀛︿範 Auth0鍗氬涓婄殑Vuejs 2韬唤楠岃瘉鏁欑▼ 鍦⊿cotch.io涓婁娇鐢╒ue.js鍒涘缓GitHub File Explorer Vegibit涓婄殑Vue.js鏁欑▼ Vuex绠€浠嬭棰?鏉ヨ嚜浼︽暒鐨凧ames Browne Vue.js鑱氫細锛? 娣峰悎搴旂敤瀹炴柦渚嬩笌Laravel鍜孷ue.js钁¤悇鐗欒鐢盄vedovelli Vue.js鍦╫guzhan.in涓婁粙缁嶅湡鑰冲叾璇?JuanAndr茅sN煤帽ez鍦╕ouTube涓婂彂甯冪殑Vue.js VideoTutoral瑗跨彮鐗欒タ鐝墮璇紙3-8-2016锛夌郴鍒?Vue.js鎴睆绯诲垪鍦ㄨタ鐝墮涓奡tyde.net 璁茶ВVue.js瀹樼綉涓枃-鍚唬鐮侊紝鐧惧害浜戯紝youtube鍦╞hnddowinf涓?鍦≒usher涓婁娇鐢╒ueJS锛孍S2015鍜學ebpack鎺㈢储瀹炴椂搴旂敤 sekolahkoding.com涓婂嵃搴﹀凹瑗夸簹璇腑鐨刅ue.js .dev鍦╕ouTube涓婁互淇勮鎾板啓鐨凷cratch绯诲垪涓殑Vue.js Flask锛孯ethinkDB鍜孷ue.js锛屟囥€傂⊙傂残狙€械薪薪褟褋械褉胁褨褋褍写谢褟蟹斜械褉褨谐邪薪薪褟褎邪泄谢褨胁蟹Flask銆?涔屽厠鍏?VueJS 2娉曡鏁欑▼Fran莽aispar Grafikart Jayway Vue.js 2宸ヤ綔鍧娿€備娇鐢╲ue-router锛寁uex鍜寁ue-resource鏋勫缓涓€涓數瀛愬晢鍔$珯鐐?濡備綍浣跨敤Wijmo鎺т欢鍒涘缓鍑鸿壊鐨刅ueJS搴旂敤绋嬪簭 璁茶ВVue.js 2瀹樼綉涓枃-鍚唬鐮侊紝鐧惧害浜戯紝youtube on bhnddowinf 鍍忎娇鐢╒ue.js鍔犺浇鍥剧墖涓€鏍风殑濯掍綋 濡備綍浣跨敤Vuex鍦↙aravel鏄熺伀椤圭洰涓奙etric Loop 濡備綍鍦╒uex涓婅缃ā鍧桵etric Loop 骞朵笌Vue.js 2.0妗嗘灦杩愯鍦⊿itePoint 濡備綍浣緼PI璋冪敤涓嶸uex涓奙etric Loop 濡備綍浣跨敤Vuex锛屽垱寤虹壒鑹蹭笂Metric Loop DevMarketer鍦╕ouTube涓婂彂甯冪殑Vue.js 2.0鍩虹鐭ヨ瘑 Vuex鐨勬棤鐭モ€?Vue搴旂敤绋嬪簭鏁版嵁瀛樺偍涓婄己灏戠殑鍏ラ棬 瀹炴椂缃戞牸缁勪欢Laravel锛孷ue.js锛孷uex鍜孲ocket.io VueJS 2-瀹屾暣鎸囧崡锛堝寘鎷琕uex锛?Udemy鏁欑▼ 寮€鍙慦eb搴旂敤绋嬪簭涓嶸ue.js涓奺gghead.io Vue.js 2-鍏ラ棬 Vue.js 2鍜孷uex锛堝熀鏈級 T眉rk莽eVueJSE臒itimVideolar谋鍦╕ouTube涓婇€氳繃娉曟彁璧獳CET Vue锛?Illya Klymov鍦╕ouTube涓婁互淇勮鍙戝竷鐨凮penLecture 2017.01锛園xanf锛?鑷妇浣跨敤VUE-CLI鎮ㄧ殑绗竴涓猇ue.js鐢宠閫氳繃@afropolymath 閫氳繃@ Detachment浠庡ご寮€濮嬫瀯寤簐ue-hackernews-2.0 浣跨敤vue-kindergarten瀵筕ue.js鍜孨uxt.js搴旂敤绋嬪簭杩涜鍩轰簬瑙掕壊鐨勬巿鏉?瀹屾垚Vue.js搴旂敤鏁欑▼-涓嶸ue鍏徃鍒涘缓涓€涓畝鍗曠殑棰勭畻搴旂敤绋嬪簭閫氳繃@matthiaswh Vue.js鏁欑▼锛氫竴涓覆鏌撳ソ鐨凷EO鍙嬪ソ绀轰緥 Vue.js绠€浠嬶紝渚涗粎浜嗚ВjQuery鐨勪汉浣跨敤 浣跨敤Vue.js鍜孉xios浠庣涓夋柟API鎻愬彇鏁版嵁 Packt鐨凱eter van Meijgaard鐨勩€奦ue 2鏈夎叮鐨勯」鐩€嬶紙瑙嗛锛夈€傦紙2017骞?鏈堬級 Vue JS锛氬湪涓瀷骞冲彴涓婂悓鏃惰繍琛孍xpress鍜學ebpack Dev Server锛屼綔鑰匟enrik Fogelberg 缃戠粶蹇嶈€呭湪YouTube涓婂彂甯僔ue JS 2鏁欑▼ 鍦?鍒嗛挓鍐呭皢鏃犲ごCMS娣诲姞鍒癡ueJs vue鏋舵瀯涓殑Watcher 浣跨敤Vue.js鏋勫缓鎮ㄧ殑绗竴涓簲鐢ㄧ▼搴?5涓涔燰ue.js鐨勫疄鐢ㄧず渚?浠嶬nockoutJS杩佺Щ鍒癡ueJS 閫氳繃@ rap2h浣跨敤Vue.js鍒涘缓娴嬮獙 Vue.js 2鍜孎irebase-鏋勫缓瀹炴椂鍗曢〉Web搴旂敤绋嬪簭 Vue.js 2鍜孷ue-Resource-鍏锋湁澶栭儴API璁块棶鏉冮檺鐨勫疄闄呭簲鐢ㄧ▼搴?闈㈠悜鍒濆鑰呯殑浜や簰寮廣ue.js灞忓箷褰曞儚 YouTube涓婄殑Vue.JS ile NASAAPI'谋n谋Kullanarak Veri脟ekme Packt鐨凮lga Filipova浣跨敤Vue.js 2锛堣棰戯級杩涜Web寮€鍙戙€傦紙2017骞?鏈堬級 浣跨敤VueJS鍜孭usher鏋勫缓瀹炴椂鍥捐〃 Vue绠€浠嬶紝鍓嶇纭曞+璇剧▼鐨勫洖璐?Vue CSS鎶€宸ф寚鍗?鍦╒ueJS搴旂敤涓娇鐢═ypescript ninghao.net涓婄殑Vue.js棰勮 浣跨敤Vue璺敱鍣ㄦ瀯寤篤ue v2 JS搴旂敤 閫氳繃@Atom_Hernandez浣跨敤Vue鏋勫缓鑷繁鐨勮疆鎾?鍗曞厓娴嬭瘯Vue.js缁勪欢涓庡畼鏂筕UE鑰冭瘯宸ュ叿鍜岀帺绗戠殑@alexjoverm 鍒涘缓Vue.js杩囨浮鍜屽姩鐢伙細娲荤敓鐢熺殑瀹炰緥鐢盄udyuxdev 鍒涘缓鑷畾涔塚ue.js鎻掍欢 VueJS绗?閮ㄥ垎涓殑寮傛 VueJS绗?閮ㄥ垎涓殑寮傛 鍦ㄦ病鏈夋彃浠剁殑鎯呭喌涓嬪皢localStorage涓嶸uex瀛樺偍涓€璧蜂娇鐢?浣跨敤props閫氳繃Vue Router璁块棶缁勪欢鍐呯殑URL鍙傛暟 鍦≒m2鍜孨ginx涓婄殑鐢熶骇鐜涓儴缃睼ue.js 鈥?SSR锛圴uetify锛?鍦╨aracast涓婃祴璇昖ue缁勪欢 寤鸿鏈塚ue.js鍜孍xpress.js涓€涓叏鏍圵eb搴旂敤绋嬪簭閫氳繃@CodyLSeibert Vue.js 2鏉¢璋憋紙瑙嗛锛夛紝Packt鐨凱eter van Meijgaard銆傦紙2017骞?鏈堬級 Vue.js鍏ラ棬 Packt鐨凱eter van Meijgaard浣跨敤Vue 2锛堣棰戯級鏋勫缓鎮ㄧ殑绗竴涓珮绾RUD搴旂敤绋嬪簭銆傦紙2017骞?鏈堬級 鞙勴暅Vue.js鞛呺靹?雸?甑?雮?雼?耄?旮?靿?鞖?Vue.js锛堣棰戯級涓奍nflearn鐢辨澘妗ヨ埞闀?鏋勫缓Vue.js鍗氬鍦?浠跺皬鏃跺唴涓婅。涓奡nipcart 鍏ラ棬VueJS 2鐢辫惃閽︾撼鍔犲皵@sachinbee涓奤demy Vuex鍏ラ棬锛氬湪Vue.js涓鐞嗙姸鎬?Sergii Stotskyi浣跨敤CASL鐨刅ue2 ACL 鍦⊿toryblok鍗氬涓婁娇鐢ˋuth0鐨刅uejs 2.5+韬唤楠岃瘉鏁欑▼ GraphCMS瀵煎叆寮曞涓嶸ue鍏徃鐨凣raphCMS Chrome鍜孷S Code涓殑Vue.js璋冭瘯姝ら璋卞睍绀轰簡濡備綍浣跨敤甯︽湁VS Code鐨凜hrome鎵╁睍璋冭瘯鍣ㄦ潵璋冭瘯Vue CLI鐢熸垚鐨刅ue.js搴旂敤绋嬪簭銆?Packt鐨凷achin Bhatnagar鐨刅ue JS 2鍏ラ棬锛堣棰戯級銆傦紙2018骞?鏈堬級 浣跨敤Vue.js鏋勫缓鐢靛奖搴旂敤绋嬪簭鐣岄潰 璁╂垜浠瀯寤轰竴涓嚜瀹氫箟鐨刅ue.js璺敱鍣?浣跨敤ButterCMS鏃犲ご鍚庣鏋勫缓Vue.Js鐢靛瓙鍟嗗姟搴旂敤绋嬪簭 浣跨敤Go鍜孷ue.js鏋勫缓鎶曠エ搴旂敤绋嬪簭 浣跨敤Vue.js鏋勫缓鍗忎綔缁樼敾搴旂敤绋嬪簭 浣跨敤Stripe鏋勫缓瀹炴椂浠樻浠〃鏉?浣跨敤Vue.js鏋勫缓涓€涓姞瀵嗚揣甯佽窡韪櫒 浣跨敤Vue.js鏋勫缓璁捐鍙嶉搴旂敤 浣跨敤Flask鍜孷ue.js寮€鍙戝崟椤靛簲鐢?浣跨敤Stripe锛孷ue.js鍜孎lask鎺ュ彈浠樻 鍦╯erversideup.net涓婁娇鐢↙aravel鍜孷ueJS杩涜API椹卞姩鐨勫紑鍙戯紙鍏嶈垂璇剧▼锛?鍦╒ue.js涓鐞嗙姸鎬?Packt鐨凞aniel Khalil鎾板啓鐨刅ue.js鐨勭湡瀹炰笘鐣岄」鐩€傦紙2018骞?鏈堬級 @ackzell鐨凥eartbeat锛圴ue + NW.js瑙嗛绯诲垪锛夛紙2017-2018锛?甯︽湁Nuxt.js鐨凢irebase鏈嶅姟鍣ㄧRender Vue搴旂敤绋嬪簭锛堝甫鏈塉avaScript妗嗘灦鐨勬湇鍔″櫒绔疪ender锛?Firebase浣跨敤Nuxt.js锛堜娇鐢↗avaScript妗嗘灦鐨勬湇鍔″櫒绔覆鏌擄級璇勪及Vue SSR鎬ц兘 浣跨敤D3鍜孷ue鍒涘缓浜や簰寮忓湴鍥撅紙2018骞?0鏈堬級 缂栧啓閫氱敤鐨勶紝鏀寔SSR鐨刅ue缁勪欢鐨勬寚鍗?Vue.js鍩虹鐭ヨ瘑 鎵€鏈変汉鐨刅uex Vue.js琛ㄥ崟楠岃瘉 Vue.js澶у笀鐝?Vue.js Firebase瀹炴椂鏁版嵁搴?Vue.js Firebase韬唤楠岃瘉 Vue.js鍔ㄦ€佽〃鍗?鑷畾涔塚ue.js鎸囦护 Packt鐨凚art艂omiejPotaczek鎾板啓鐨刅ue.js搴旂敤绋嬪簭寮€鍙戣鐐广€傦紙2018骞?0鏈堬級 Packt鐨凜hristian Hur瀵筕ue.js杩涜鏁呴殰鎺掗櫎銆傦紙2018骞?0鏈堬級 Nuxt.js-鍏充簬绫诲浐閱囩殑Vue.js锛屼綔鑰呴┈鍏嬭タ绫冲埄瀹壜锋柦鐡﹁尐绌嗗嫆锛圡aximilianSchwarzm眉ller锛夛紝甯曞厠 锛?018骞?0鏈堬級 閫氳繃@ hawkeye64浣跨敤Quasar锛堝拰Vue锛夋瀯寤虹數瀛愭枃浠惰祫婧愮鐞嗗櫒銆傦紙2018骞?1鏈堬級 寤虹珛涓嶸ue鍏徃JS 2鐏姏鍦板牎鐨刉eb搴旂敤绋嬪簭涓奤demy鐨勫噣蹇嶈€?Vue鍏徃JS 2 -瀹屽叏鎸囧崡锛堝寘鎷琕ue鐨勮矾鐢卞櫒鍜孷uex锛変笂Udemy鐨勯┈鍏嬭タ绫砈CHWARZMULLER 浣跨敤Vue.js锛孷uex锛孷uetify鍜孎irebase鐨凷PA搴旂敤绋嬪簭锛堢1閮ㄥ垎锛夛紙2018骞?1鏈堬級 浣跨敤Vue.js锛孷uex锛孷uetify鍜孎irebase鐨凷PA搴旂敤绋嬪簭锛堢2閮ㄥ垎锛夛紙2018骞?1鏈堬級 浣跨敤Vue.js锛孷uex锛孷uetify鍜孎irebase鐨凷PA搴旂敤绋嬪簭锛堢3閮ㄥ垎锛夛紙2018骞?1鏈堬級 浣跨敤Vue.js锛孷uex锛孷uetify鍜孎irebase鐨凷PA搴旂敤绋嬪簭锛堢4閮ㄥ垎锛夛紙2018骞?1鏈堬級 灏嗗浗闄呭寲娣诲姞鍒癡ue搴旂敤绋嬪簭涓紙2018骞?1鏈堬級 Packt鐨凧ack Herrington鎾板啓鐨刅ue JS 2瀹炵敤椤圭洰銆傦紙2018骞?2鏈堬級 Vue.js 旮?齑?雼?歆€ 旮?锛堣棰戯級鐢盠essipe Haider Rehman锛孭ackt浣跨敤Vue.js鍜孨ode.js杩涜鍏ㄦ爤Web寮€鍙戙€傦紙2019骞?鏈堬級 鎸塂esign + Code鎻愪緵缁欒璁″笀鐨刅ue锛?019骞?鏈堬級 Vue鍦熻€冲叾璇畝浠?鍦ㄥ湡鑰冲叾璇腑浣跨敤Vue-Resource杩涜鏁版嵁鎻愬彇 浣跨敤鍦熻€冲叾璇殑Vue-router杩涜姘寸枟搴旂敤 鍦ㄥ湡鑰冲叾璇腑浣跨敤Vue-cli鍒涘缓Vue椤圭洰 Vue缁勪欢鍜屽湡鑰冲叾璇箣闂寸殑娑堟伅浼犻€?濡備綍鍦╒ue涓姩鎬佹坊鍔犵被鍚嶄綔鑰咃細Michael Thiessen 浣跨敤ScaffoldHub浣跨敤Vue JS锛孨ode JS鍜孲QL鎴朚ongoDB鏋勫缓Library Web搴旂敤绋嬪簭浣滆€匜elipe Lima @scaffoldhub_io 鏋勫缓涓€涓疄鏃朵綅缃窡韪簲鐢ㄧ▼搴忎笌NativeScript + Vue鍏徃閫氳繃Saibbyweb Vue锛氬叆闂紝鐢盝ohn Papa鍦≒luralsight涓婃挵鍐?Michael Lynch浣跨敤Vue + Nuxt鏋勫缓绠€鍗曠殑棰勬覆鏌揥eb搴旂敤绋嬪簭 鍏锋湁Hasura瑙嗛璇剧▼鐨刅ue鍜孏raphQL RabbitWerks JavaScript鐨勫墠绔拰鍏ㄦ爤VENM鏍堢紪鐮佹暀绋?Nordschool Vue鏁欑▼ Vue閬撳叿楠岃瘉-鏈€浣冲仛娉?Vue Router-瀹屾暣鎸囧崡 涓篘uxt鍜孴ypescript鍚敤VS浠g爜璋冭瘯鍣?浣跨敤Gridsome鍜孷ue鍒涘缓鍗氬 浣跨敤Vue.js鍜屾棤鏈嶅姟鍣ㄦ瀯寤篒mgur鍏嬮殕 鍦ˋWS涓婄殑Vue.js涓瀯寤篐ackerNews鍏嬮殕 Vue.js锛氫娇鐢–hris Dixon寮€鍙戠殑鍏锋湁Firebase锛孷uex鍜岃矾鐢卞櫒鐨勫畬鏁村爢鏍堝簲鐢ㄧ▼搴廩瑙嗛]锛?019骞?0鏈堬級 Vue.js 2瀛﹂櫌锛?Chris Dixon閫愭瀛︿範Vue [瑙嗛]锛?019骞?0鏈堬級 Reed Barger锛孭ackt鐨凣ridsome [Video]鐐界儓蹇€烿ue鍜孏raphQL Rad Devon绾?0鍒嗛挓鏋勫缓鎮ㄧ殑绗竴涓猇ue.js搴旂敤绋嬪簭锛堣棰戯紝2020骞?鏈堬級 濡備綍鍦╒ue JS涓娇缁勪欢鍔ㄦ€佸寲锛?019骞?鏈堬級 Vue JS涓殑鐗囨锛?019骞?2鏈堬級 浣跨敤Vue Composition API鏋勫缓鐢靛奖鎼滅储搴旂敤 Vue娴嬭瘯閫熸垚璇剧▼ 浣跨敤Bit.dev鍦ㄤ簯涓叡浜拰閲嶇敤Vue Mixins锛?019骞?鏈堬級 鍦╒ue JS涓娇鐢ㄨ瀵熺▼搴忥紙2019骞?鏈堬級 浜嗚ВVue JS涓殑杩囨护鍣紙2019骞?鏈堬級 琛ㄥ崟楠岃瘉鍦╒ueJS浣跨敤鐑ㄩ€氳繃Vijit AIL锛?020骞?锛?浣跨敤Vue.js閲嶅啓React鐨勫畼鏂规暀绋婽ic Tac Toe浣滆€匔hanvin Xiao 鎴戜滑鍙互灏哖ython涓嶸ue.js鎴朧ue鍜孌jango鎴朏lask涓€璧蜂娇鐢ㄥ悧锛?MDN-Vue鏁欑▼ 涓哄垵瀛﹁€呭涔燰ue 3- YouTube涓婄殑2020骞村畬鏁存暀绋嬭绋?Vue 3 Composition Api绠€浠?瀹屾暣鏁欑▼ Srushtika Neelakantam锛?020骞?2鏈堬級鏋勫缓涓€涓湪Airtable涓疄鏃跺瓨鍌ㄦ秷鎭殑VueJS鑱婂ぉ搴旂敤绋嬪簭 浣跨敤Srushtika Neelakantam鐨勫叆闂ㄥ浠朵娇鐢╒ueJS杩涜瀹炴椂娴嬮獙锛?020骞?0鏈堬級 渚嬪瓙 @brandonjpierce鐨凬ode Webkit + Vue绀轰緥 Vue鏍锋湰@superlloyd @kazupon浣跨敤vue.js + vue-router鍏嬮殕HackerNews @bradstewart鐨凟lectron + Vue绀轰緥 鍗曢〉搴旂敤瀹炰緥锛圴ue鍏徃+ Vo1E鏃讹級鐢遍矋閲屾柉Okunskiy 寮€濮?鍐欏湪Vue鍏徃+娴佹槑浠诲姟绠$悊鍣⊿PA鐢辨媺鍚堿bishek Vue杩蜂綘搴?Vue鍏徃鐨凷oundCloud鐢眒ul14 鐗瑰緛璇锋眰锛圠aravel + Vue鐨勪簩鍚堜竴锛夌敱haydenbbickerton Vue鐨勯璋憋紙Vue1.0 +蹇€掞級閫氳繃@ yjj5855锛氭紨绀烘湇鍔$殑绗竴鐢婚潰娓叉煋 寮哄ぇ鍦ㄤ竴璧?涓€涓熀浜嶹ebSemantics鐨勭嫭绔嬮」鐩垨鐢ㄤ簬Laravel / Laravel Spark椤圭洰鐨勫崟椤礦ue.js搴旂敤绋嬪簭鏋勫缓鐨勫叆闂ㄩ」鐩紝鐢盬ebSemantics鎻愪緵 vuetest锛氫竴涓箍鍛婄鐞嗙綉绔欙紝鍦╥frame涓叿鏈夌敤鎴疯韩浠介獙璇侊紝寮曞ui锛屼笂浼犲櫒锛屾墍瑙佸嵆鎵€寰楃紪杈戝櫒 Vue -shopping by andylei18 Vue-cnodejs锛?60鐢盄shinygang 姣忔棩澶存潯by hilongjw VueChess-澶氫汉鍦ㄧ嚎鍥介檯璞℃娓告垙 Ngexplorer-vuejs-client -Vue瀹㈡埛绔疦gexplorer Vue鍏徃2048锛圴ue鍏徃+鐨刉ebPack锛夌敱@pengfu锛?048娴佽娓告垙涓€氳繃浣跨敤Vue鍏徃锛岀殑WebPack锛岃惃鏂紝ES6瀹炴柦 Vue绠€鍗昉WA 鑻遍泟涔嬫梾锛圴ue 2.0锛夛細Angular 2.0鑻遍泟涔嬫梾婕旂ず搴旂敤绋嬪簭鐨刅ue 2.0绔彛銆傞噸鐐逛粙缁嶏細ES6 / 7锛屾覆鏌撳姛鑳斤紝JSX锛宺evue锛圴ue鐨凴edux缁戝畾锛塿ue-router锛孉irbnb eslint锛寃ebpack銆傞€氳繃@ aweber1 vue-table- pagination閫氳繃echovic杩涜鍒嗛〉鐨勮〃 Feathers and Vue 2.0鍗氬绠$悊婕旂ず缁撳悎Feathers涓嶸ue 2.0涓€璧蜂娇鐢ㄧ殑婕旂ず銆傚畠鍖呮嫭韬唤楠岃瘉锛寁ue璺敱鍣紝vue鏃犻檺鍔犺浇鍜屽欢杩熻鑹?vue-zhihudaily-2.0 Zhihudaily婕旂ず鏄娇鐢╒ue 2.0锛寁ue-router鍜寁uex浠ュ強鏈嶅姟鍣ㄧ娓叉煋鏋勫缓鐨勩€傜敱cs1707 vue-demo-todolist涓€涓敤Vue 2.0 vue-cli鏋勫缓鐨勭畝鍗晇ue2.0婕旂ず銆傞€氳繃楸?vue-AdminLte鐢眑iujians Vue锛?.0锛? Node.js锛?@ycwalker鎻愪緵鐨勫崥瀹㈠唴瀹圭鐞嗙郴缁燂紙CMS锛?ngexplorer- quasar-Ngexplorer浣跨敤quasar妗嗘灦瀹炵幇 zhihu-daily-vue鐢眒oou鎻愪緵鐨勫熀浜巚ue2.0鐨剒hihu鏃ユ姤 loopback-vue loopback + vue + vue璧勬簮锛宨onic-app锛寁ue椤甸潰鍒嗛〉鍔熻兘锛岃韩浠介獙璇佹潈闄愭帶鍒讹紝璁块棶浠ょ墝鏈哄埗锛屽嚟璇侊紝CI锛宒ocker qxl1231 vue-s3-dropzone Vue.js鎷栨斁缁勪欢灏嗘枃浠舵棤鏈嶅姟鍣ㄤ笂浼犲埌AWS S3 easy-vue涓€涓畝鍗曠殑绀轰緥锛屼娇鐢═IGERB鐨剉ue瀹炵幇浜唙ue 2.0锛寁uex 2.0锛寁ue-router 2.0锛寁ue-infinite-scroll 2.0锛寁ue-progressbar 2.0鐨勭畝鍗曠綉缁?Vuex娲诲姩娑堟伅婕旂ず鐢ㄥ叕鍒跺惊鐜?vue-memo涓€涓畝鍗曠殑婕旂ず鐗堟湰锛屽寘鍚玍ue.js锛? 2.x銆傦級锛寁ue-router锛? 2.x銆傦級锛寁uex锛? 2.x銆傦級锛寁uex-router-sync @ next锛? 3锛夈€?x銆傦級鍜孎irebase锛? 3.6.x锛夐€氳繃akifo 鎭㈠鍩轰簬Vue JSON鐨刅ue JSON锛屽熀浜嶤hangJoo Park鐨勫熀浜嶸ue 2.0鐨勬仮澶?浣跨敤Phoenix Framework锛?Vue鍜孷ue璺敱鍣紙 demo锛夊紑鍙戠殑鍏锋湁JWT韬唤楠岃瘉鐨勫簲鐢ㄧず渚?鍦╒ue鍏徃2.0璺敱鍣ㄦ牱鍝丆RUD搴旂敤閫氳繃@ shershen08 ASP.NET Core Vue.js鏈嶅姟鍣ㄧ鍛堢幇绀轰緥锛園mgyongyosi锛?vuefire-quickstart-宸茶褰曠殑Firebase涓巜ebpack鍜宔slint闆嗘垚锛岀敱@sejr杩涜銆?hello-vue-django Vue.js鍜孌jango闆嗘垚鍏ラ棬椤圭洰锛屽甫鏈夌儹浠g爜閲嶈浇 浣跨敤Phoenix Framework锛?Vue锛?Vue Router鍜孷uex寮€鍙戠殑Real Time Social News App锛堟紨绀猴級 vue-calculator涓€涓敤Vue 2.0鏋勫缓鐨勭畝鍗曡绠楀櫒锛寁ue-cli锛坵ebpack-simple锛夈€?Wikipedia-viewer涓€涓畝鍗曠殑Wikipedia-viewer椤甸潰锛屼娇鐢╲ue2.x锛寁ue-router锛寁ue-cli锛坵ebpack-simple锛夊拰ajax锛坖sonp锛夋瀯寤恒€?vue2.x-douban浣跨敤vue2.x锛寁ue-router鍜宎xios锛堣眴鐡g數褰憋級鏋勫缓璞嗙摚鐢靛奖鐨勭畝鍗曟柟娉曘€傞€氳繃瓒呬汉 vue-laravel-example Vue-Laravel-绀轰緥鏄娇鐢↙aravel璁剧疆Vue鐨勭畝鍗曠ず渚嬨€傞€氳繃鍔犲噺璧?vue-foundation涓€涓紨绀哄簲鐢ㄧ▼搴忥紝浣跨敤Webpack vue-cli f灏哣ueJS涓嶼urb Foundation闆嗘垚鍦ㄤ竴璧?aspnetcore-Vue-starter涓€涓猇ueJS 2鍏ラ棬妯℃澘锛屽畠鏄痑sp.net MVC dotnetcore椤圭洰鐨勪竴閮ㄥ垎銆傝妯℃澘鍖呮嫭VueJS瀹㈡埛绔簲鐢ㄧ▼搴忓拰鍚庣API鎺у埗鍣ㄣ€?vue-reddit-app鐢盫ue 2.X锛?Vue Router 2锛?Vuex鍜宎xios鏋勫缓鐨凴eddit SPA婕旂ず銆備娇鐢ˊ yujiahaol68鐨凪use-UI鍜寁ue-cli Webpack妯℃澘 vue-music-qq涓€涓猶q-music椤圭洰鍩轰簬vue-cli銆傞〉闈㈢畝鍗曟祦鐣?甯︽湁Vue-Redux鍜孭lain VueJSX鐨凬avigationTab甯︽湁绾疺ue JSX鍜孷ue + Redux缁戝畾鐨凬avigation閫夐」鍗?Veggie Map浣跨敤Vuejs + Vue璺敱鍣? Leaflet鍜孎irebase鐨勪氦浜掑紡婕旂ず vuejs-d3绀轰緥浜嗗浣曚娇鐢╠3杩涜鍙鍖栥€?vue-twitter-client浣跨敤Vue 2.X锛孷uex锛宔lectron-vue鍜孍lectron鏋勫缓鐨凾witter瀹㈡埛绔簲鐢ㄧ▼搴?Douban Awesome douban浣跨敤Vue2.x + Vuex + Vue-router + vue-resource鍒涘缓鐨勭ず渚嬨€傜敱jeneser Storyblok vuejs-boilerplate-闆嗘垚Storyblok鐨勭粍浠剁郴缁燂紝鍏佽鍒涘缓鍙紪杈戠殑缃戠珯銆?Vuexpresso-浣跨敤VueX锛孷ue-Router锛孷ue-Apollo锛學ebpack锛孏raphQL锛孉pollo-client锛宔xpress鍜宮ongo鐨勬牱鏉?甯︽湁Sails.js绀轰緥椤圭洰鐨刅ue.js-璇ラ」鐩€傜敤浜庡崟椤靛簲鐢ㄧ▼搴忕殑鏂版墜骞跺笇鏈涢€氳繃瀹為檯绀轰緥瀛︿範銆?Vue.js鍜孭yramid Web妗嗘灦搴旂敤绋嬪簭-浣跨敤Pylons Pyramid Webframework鍚庣鐨勬牱鏉縑uejs webpack2锛寁ue-router锛寉arn锛堟暟鎹寘绠$悊鍣級 vue- feathers-chat浣跨敤鍓嶇鐨刅ue鍜屽悗绔殑Feathers杩涜鐨勫疄鏃惰亰澶╃ず渚嬶紝浣嗕粎浣跨敤Socket.IO-Client杩涜閫氫俊 vue-xplan鐢╒ue鍜宼hree.js鍒涘缓鐨勬棆杞湴鐞冩紨绀洪〉闈?vueSocketChatRoom浣跨敤vue2.x锛寁uex2.x锛寁ue-router2.x锛寁ux2.x锛宻ocket.io鐨勫鎺ュ瓧鑱婂ぉ瀹?VUE -淇勭綏鏂柟鍧楋紙浣跨敤Vue鍏徃锛孷uex锛屼笉鍙敼鍙樹唬鐮佷縿缃楁柉鏂瑰潡锛夌敱@Binaryify锛氫娇鐢╒ue鍏徃锛孷uex锛屼笉鍙敼鍙樹唬鐮佷縿缃楁柉鏂瑰潡銆?璺嚎绛瑰姙-VUE閫氳繃@Kasheftin锛氬浜庢湁澶氫釜鎺掑簭灞傦紝鍙嫋鍔ㄨ矾绾匡紝璋锋瓕鍦板浘涓婄殑鏍囪鍜屽舰鐘讹紝瑙勫垝璺嚎鐨勫伐鍏枫€?MyDiary-Vue浣跨敤Vue 2.X鏋勫缓鐨勬棩璁板簲鐢ㄧ▼搴忥紝瀹冧篃鍏锋湁鑱旂郴浜哄拰寰呭姙浜嬮」鍒楄〃鍔熻兘 Github涓婄殑VueJS绀轰緥椤圭洰 閫氳繃浣跨敤webpack-basic妯℃澘鍦╒ue 2涓婂疄鐜拌嚜鎰跨殑TodoMVC瀹炵幇鐨則odo-mvc-webpack锛岀ず渚嬫樉绀轰簡vuex锛寁ue-router锛屼腑澶簨浠舵€荤嚎鍜孷ueFire銆?Vue 2.0鐨勫浗闄呰薄妫嬫晠浜嬩功绀轰緥 Vue Weather Notifier涓€涓甫鏈塖VG鍜孷uex鐨勫皬鍨嬬ず渚嬪姩鐢诲簲鐢ㄧ▼搴?VueBlog鍗氬绯荤粺锛屾敮鎸侀€氳繃鏈嶅姟绔憟鐜皐mui Cinemateka-鐢╒ue v1鍜孡aravel 5鍒朵綔鐨凷PA鐨勭ず渚嬨€傜數褰卞拰娲诲姩鏃堕棿琛ㄣ€備縿缃楁柉鐨勮瘎璁恒€?vue-2.x-boilerplate-鐢ㄤ簬Vue椤圭洰Vuex + vue-router鐨勭畝鍗曞叆闂ㄥ伐鍏峰寘 vue- minesweeper-鐢眗hapsodyn鎻愪緵鐨剉uejs鑷村懡鐨勭畝鍗曟壂闆锋父鎴?X-Flowchart-Vue-鍏锋湁SVG鍜孷ue鐨勬祦绋嬪浘缂栬緫鍣?koa-vue-notes-web-涓€绉嶅厖瀹炵殑SPA锛屽湪鍚庣浣跨敤Koa 2.3锛屽湪鍓嶇浣跨敤Vue 2.4銆傚寘鎷姛鑳介綈鍏ㄧ殑鐢ㄦ埛韬唤楠岃瘉缁勪欢锛岄拡瀵圭敤鎴风瑪璁扮殑CRUD鎿嶄綔浠ュ強Vuex瀛樺偍妯″潡銆?Vuejs璐墿杞?浣跨敤Vuejs鍜孎irebase鐨勮喘鐗╄溅绀轰緥 PokedexVueJs鐢盄 rchung95 vuefire-auth浣跨敤Firebase杩涜Vuefire Vue2-Auth-Email楠岃瘉 vuefire-realtimedatabase鍏锋湁Firebase鐨刅uefire Vue2-RealtimeDatabaseCRUD vuefire-storage鍏锋湁Firebase鐨刅uefire Vue2-Storage Vue2-PWA-鍗氬@ deepak-singh vue-firebase-auth-vuex Vuex鐨刅ue2 Firebase韬唤楠岃瘉锛屽苟鏀寔娓愯繘寮廤eb搴旂敤绋嬪簭 vue-chart-stater-kit浣跨敤Vue璺敱鍣紝Vue鍥捐〃锛孍lement-UI鐨勫揩閫熷叆闂?浣跨敤mint-ui锛孍lement-UI鐨剉ue2.0-demos锛屽苟鏈変竴浜涙紨绀猴紙閫夋嫨鍩庡競绛夛級 搴峰▉搴峰▉鍦╒ue鐨勭敓鍛芥父鎴忋€?vuex-feature-scoped-structure缁撴瀯鍖栧姛鑳借寖鍥磛uex搴旂敤绋嬪簭缁撴瀯鐨勭ず渚嬪簲鐢ㄧ▼搴?vuex-examples-浣跨敤Vuex鏋勫缓鐪熷疄涓栫晫搴旂敤绋嬪簭鐨勭畝鍗曠ず渚?vue-vuex-todomvc-绀轰緥TodoMVC Vue.js搴旂敤绋嬪簭锛屽叿鏈夐€氳繃REST鐨刅uex瀛樺偍鍜屾湇鍔″櫒鍚庣锛屼互鍙婁娇鐢–ypress.io娴嬭瘯杩愯绋嬪簭杩涜鐨勫叏濂桬2E娴嬭瘯銆?vuejs-sqljs-boilerplate-杩欐槸鍚屾椂浣跨敤Vue.js鍜宻ql.js鐨勬牱鏉?X-WebDesktop- Vue-鍩轰簬Vue鐨刉ebDesktop绯荤粺 vuejs-music- player-涓€涓猇ue.js绮剧畝闊充箰鎾斁鍣?Vue.js鏈€浣冲疄璺电ず渚嬮」鐩?浣跨敤Vue.js + Vue璺敱鍣? Vuex + Vuelidate鐨勬渶浣冲疄璺电ず渚嬮」鐩?Vue.js [ONE]瀹㈡埛绔?鐢╒ue2.5缂栧啓鐨刐ONE]瀹㈡埛绔?甯︽湁vue-cli v3鐨刅ue.js 2.5锛屽寘鎷珼ominik Angerer锛孲toryblok鐨刟uth0韬唤楠岃瘉 楠ㄦ灦Vue + TypeScript -TypeScript锛孷ueJS锛孍lementUI锛孷ue璺敱鍣紝Vuex锛屾潗璐ㄥ浘鏍囷紝BrowserSync锛孌ockerfile PENV Starter-鏈夊叧濡備綍缁撳悎浣跨敤VueJS锛孍xpress鍜孭ostgreSQL鐨勫熀鏈ず渚嬨€?vue-relay-examples-浣跨敤vue-relay鐨勭ず渚嬪簲鐢ㄧ▼搴忕殑闆嗗悎銆?laravel-vue-boilerplate-涓€涓狶aravel 5.5 SPA鏍锋澘锛屽叾鐢ㄦ埛浣跨敤Vue.js 2.5锛孊ootstrap 4锛孴ypeScript锛孲ass锛孭ug鍜孞est杩涜CRUD銆?Vue璁捐绯荤粺-浣跨敤Vue.js鏋勫缓UI璁捐绯荤粺鐨勫紑婧愭牱鏉裤€?Vue Bulma婕旂ず-涓€涓畝鍗曠殑婕旂ず缃戠珯锛屽彲涓€璧锋鏌ulma / Vue JS鍜孍xpress銆?鍑嗗浣跨敤TypeScript锛寁uex锛寁ue-router锛孒MR绛夎繘琛岀敓浜х殑鍏ラ棬搴旂敤绋嬪簭 vue.js涓巐aravel缁撳悎鐨勫墠鍒嗗壊鍒嗙寮€鍙戞ā鏉?laravel鎶ょ収/ Vue.JS鍜孍lement UI鐨勬ā鏉跨綉绔欍€?Packt鐨凴oman Kuba浣跨敤Vue.js杩涜鍔ㄦ墜Web寮€鍙戙€傦紙2018骞?鏈堬級 Vue Online Shopping Mall-鍩轰簬VUE寮€鍙戠殑鍓嶇粏鍒嗗垎绂荤數瀛愬晢鍩庡墠绔」鐩殑鍦ㄧ嚎SPA婕旂ず FUE-甯︽湁Vue.js + Vue璺敱鍣? Vuex + Vuetify + FeathersJS鐨凙dmin SPA瀹㈡埛绔拰鏈嶅姟鍣ㄧ鏍锋澘 Vue + TypeScript椋熻氨-涓€鏈皬鍨嬮璋憋紝娑电洊浜嗕竴浜涗笉澶槑鏄剧殑瑙e喅鏂规锛屼緵浜轰滑寮€濮嬩娇鐢╒ue + TypeScript Vuejs绀轰緥 ASP.NET Core Vue Starter CLI 3.0涓€涓娇鐢╒ue CLI 3.0鍜岃嚜瀹氫箟閰嶇疆锛堥粯璁ypeScript锛孷ue锛孯outer锛孷uex锛孷uetify锛夌殑Vue Starter妯℃澘涓嶡SoftwareAteliers鐨凙SP.NET Core闆嗘垚锛?018骞?鏈堬級 vue-soundcloud Soroush Chehresa鐢╒ue.js 2鏋勫缓鐨凷oundcloud瀹㈡埛绔?vue-cart鐢╲ue锛寁uex鍜寁ue璺敱鍣ㄥ埗鎴愮殑绠€鍗曡喘鐗╄溅銆傜敱crisgon Nuxt + Apollo + Element鍏锋湁Nuxt锛孍lement锛堣嚜瀹氫箟涓婚锛夊拰Vue Apollo鐨刅ue.js SSR鏍锋澘銆?vue-daily- zhihu鐢盬alleeeee浣跨敤Vue 2.0鍜寁ue-router鍜寁uex杩涜鐨勭畝鍗曟紨绀烘瀯寤?鍏锋湁TypeScript鐨勫椤礎SP.NET Core Vue-澶氶〉ASP.NET Core Vue锛孴ypescript锛孷uex锛孷ue璺敱鍣紝Bulma锛孲ass鍜孞est搴旂敤绋嬪簭銆傛湁鍏冲浣曞湪.NET Core MVC涓皢Vue.js鐢ㄤ綔澶氶〉锛堝涓糠浣爏pa锛夊簲鐢ㄧ▼搴忕殑妯℃澘/璧风偣銆?CION - Vue.js鐨勮璁$郴缁熸牱鏉?涓昏涓篤ue.js搴旂敤绋嬪簭璁捐鐨勮璁$郴缁熴€傚畠鍒╃敤璁捐浠ょ墝锛屽甫鏈夐泦鎴愪唬鐮佹搷鍦虹殑鐢熸椿椋庢牸鎸囧崡浠ュ強鐢ㄤ簬甯歌UI浠诲姟鐨勫彲閲嶇敤缁勪欢銆?Vue websockets绀轰緥-浣跨敤Vue.js 2 + Node椤圭洰鐨刉ebsockets浣跨敤鐨勫熀鏈ず渚嬶紝浠ヨ幏鍙栧畬鏁寸殑宸ヤ綔绀轰緥銆?Vue锛?.0锛? Node.js锛?@ FatDong1鐨勫崥瀹?鍩轰簬Vue + Vuex + Vuetify + Vee-Validate鐨剉ue-todo-list ToDo List绀轰緥搴旂敤绋嬪簭 Vue.js鍜孖onic v4绀轰緥-涓€缁勫浣曞湪Vue.js涓娇鐢↖onic v4鐨勭ず渚?浣跨敤Vue锛孷uex鍜孷ue-Router鐨勪釜浜虹綉绔?鐢盡uratcan艦ent眉rk浣跨敤vue锛寁uex鍜寁ue-router鍒朵綔鐨勭畝鍗曠綉绔欑ず渚?瀹㈡埛绔疺ue.js -婕旂ず- Vue.js瀹㈡埛绔繘琛屽井灏忥紝蹇€熻杞斤紝Node.js鐨勶紝杈冨皯鍙楀崟椤靛簲鐢ㄧ▼搴忚淳鏂眬娲?澶у瀷Vue.js搴旂敤绋嬪簭鏍锋澘+ Vuex-閫氳繃浣跨敤Vuex浣滀负鐘舵€佺鐞嗘潵鍚姩澶ц妯★紝鐏垫椿鐨刅ue.js搴旂敤绋嬪簭鐨勬牱鏉?浣滆€匒run Redhu 娌℃湁鐢诲竷鐨刅ue.js涓婄殑铔囨父鎴?浣跨敤CometChat鍦╒ue涓繘琛屼竴瀵逛竴鑱婂ぉ鐨勫簲鐢ㄧ▼搴?Vue Webpack鎵撳瓧绋垮甫鏈塻ass / ts / sfc鐭粧鐨勬牱鏉裤€傚畬鏁寸殑绫诲瀷瀹夊叏鎬э紝鍖呮嫭vuex鍜屽瑙傛紓浜殑vue缁勪欢锛屽甫鏈塿uex-module-decorators锛寁ue-property-decorator Laravel + Nuxt.js鏍锋澘- @acidjazz 浣跨敤CometChat鍜孎irebase鍚戞偍鐨刅ue鑱婂ぉ搴旂敤娣诲姞鎺ㄩ€侀€氱煡 TO-绀句氦濯掍綋搴旂敤绋嬪簭锛屽彲璁╂偍浠呭彂甯冩枃鏈€?All-About-Me-涓€绉嶇ぞ浜ゅ獟浣揥eb搴旂敤绋嬪簭锛屼娇鐢╒ue锛孎irebase锛團irestore / Auth / Storage锛夛紝Element-UI锛孌isqus锛孷uex锛孷ue-Router鍜孲ass鏋勫缓銆傛敮鎸佸浘鍍忎笂浼狅紝涓汉璧勬枡缂栬緫锛屾坊鍔?鍒犻櫎鏈嬪弸鍜岃瘎璁恒€?Vue鏃呰鑰?馃懡澶┖鏃呰-浣跨敤REST API鐨刅ue.js娓告垙鍖朣PA绀轰緥銆傚畠閫氳繃D3.js锛屽姩鐢诲拰Web闊抽鏄剧ず淇℃伅鍥捐〃銆?TodoMVC Vue 3 Composition API - Vue 3 Composition API涓畬鏁寸殑TodoMVC瀹炴柦锛屽寘鎷粍浠讹紝鍟嗗簵锛屽崟鍏僥2e娴嬭瘯鍜屾缁掋€?TodoMVC Vue -Vue 2涓畬鏁寸殑TodoMVC瀹炵幇锛屽寘鎷粍浠讹紝瀛樺偍锛屽崟鍏僥2e娴嬭瘯鍜屾娴嬨€?甯︽湁Composition API鐨勭數褰辨悳绱㈠簲鐢ㄧ▼搴?鍦╒ue 2涓娇鐢–omposition API鎻掍欢瀹炵幇鐨勭數褰辨悳绱㈠簲鐢ㄧ▼搴?閫氳繃OTP杩涜JWT韬唤楠岃瘉鐨凬uxt-鍏锋湁鍩烘湰瀵勫瓨鍣ㄥ拰鍚敤OTP鐨勭櫥褰曞姛鑳界殑Nuxt.js鏍锋澘銆?vuetify锛屽浗闄呭寲锛屾牱鏉?婕旂ず-涓€涓牱鏉夸娇鐢╒uetify锛孷ue鍏徃锛屽浗闄呭寲锛孷uex鍜孷ue鍏徃璺敱鍣ㄧ殑蹇€熷惎鍔ㄩ」鐩殑Vue 浣跨敤Vue + Firestore鐨凣oogle Keep鍏嬮殕-浣跨敤TypeScript缂栧啓鐨勪娇鐢╒ue鍜孎irestore鐨凣oogle Keep鍏嬮殕銆?Go-echo-vuejs-boilerplate-浣跨敤go涓巈cho妗嗘灦浣滀负鍚庣浠ュ強涓虹綉缁滄祦閲忔彁渚涙湇鍔$殑vuejs鐨勬牱鏉裤€?Vue-Next-TicTacToe-鐢╒ue Next鍒朵綔鐨勭畝鍗昑ic Tac Toe娓告垙 涓嶅甫Webpack鐨刅ue 3绀轰緥-涓€涓棤闇€Webpack鎴栦换浣曞叾浠栨瀯寤哄伐鍏风殑鎯呭喌涓嬪浣曚娇鐢╒ue-Router鏋勫缓Vue搴旂敤鐨勭ず渚嬨€傚寘鎷娇鐢╒ue Server Renderer棰勬覆鏌撶粍浠跺拰椤甸潰鐨勫姛鑳姐€?COVID19瀹炴椂鏁版嵁缁勪欢-鏄剧ず鍏ㄧ悆covid19瀹炴椂鏁版嵁鐨勭畝鍗曠粍浠躲€?vue-stack- cesium-涓€涓叿鏈塁esiumJS鍜屾墍鏈変护浜烘暚鐣忕殑vue鍔熻兘鐨勬渶灏忕ず渚嬮厤缃」鐩€傝椤圭洰鍖呭惈璁稿绀轰緥锛屼粙缁嶄簡濡備綍缁勫悎鍜屼娇鐢ㄦ煇浜涜蒋浠跺寘鏉ヤ笂鎵嬨€?Shopify涓婚瀹為獙瀹?浣跨敤Vue锛孷uex鍜孴ailwind CSS鐨凷hopify涓婚寮€鍙戝叆闂?鍥句功 Packt鐨凙lex Kyriakidis鍜孠ostas Maniatis鎾板啓鐨勩€?Vue.js鐨勫▉涓ャ€嬨€傦紙2016骞?1鏈堬級 Packt鐨凮lga Filipova瀛︿範Vue.js 2銆傦紙2016骞?2鏈堬級 Leanpub鐨凙lex Kyriakidis鍜孠ostas Maniatis鎾板啓鐨勩€?Vue.js鐨勫▉涓?銆嬨€傦紙2017骞?鏈堬級 Packt鐨凙ndrea Passaglia鎾板啓鐨刅ue.js 2 Cookbook銆傦紙2017骞?鏈堬級 Erik Hanchett鍜孊enjamin Listwon鎾板啓鐨刅ue.js in Action锛?018鏄ュ锛?Edd Yerburgh鐨刅ue.js搴旂敤绋嬪簭娴嬭瘯锛?018骞村瀛o級 Packt鐨凮lga Filipova鎾板啓鐨刅ue.js 2鍜孊ootstrap 4 Web寮€鍙戙€傦紙2017骞?鏈堬級 Casa doC贸digo鐨凩eonardo Vilarinho鐨勫墠绔痗omVue.js銆傦紙2017骞?1鏈堬級 Vue.js 2涓猈eb寮€鍙戦」鐩紝浣滆€咃細Packt Guillaume Chau銆傦紙2017骞?1鏈堬級 Packt鐨凙nthony Gore鐨勫叏鏍圴ue.js 2鍜孡aravel 5銆傦紙2017骞?2鏈堬級 Packt鐨凪ike Street鎾板啓鐨刅ue.js 2.x绀轰緥銆傦紙2017骞?2鏈堬級 鎺屾彙Oleksandr Kocherhin鐨刅ue.js銆傦紙2018骞?鏈堬級 Fullstack Vue锛?Hassan Djirdeh锛孨ate Murray鍜孉ri Lerner鎾板啓鐨刅ue.js瀹屾暣鎸囧崡銆傦紙2018骞?鏈堬級 Vue.js 2璁捐妯″紡鍜屾渶浣冲疄璺碉紝浣滆€匬aul Halliday锛孭ackt銆傦紙2018骞?鏈堬級 Packt鐨凙ndrea Koutifaris鎾板啓鐨勩€?Vuex蹇€熷叆闂ㄦ寚鍗椼€嬨€傦紙2018骞?鏈堬級 浣跨敤Vue.js鍜孨ode杩涜鍏ㄦ爤Web寮€鍙戯紝浣滆€咃細Aneeta Sharma锛孭ackt銆傦紙2018骞?鏈堬級 Flavio Copes鎾板啓鐨刅ue鎵嬪唽銆傦紙2018骞?鏈堬級 Packt鐨凷tuart Ratcliffe鎻愪緵鐨凙SP.NET Core 2鍜孷ue.js銆傦紙2018骞?鏈堬級 Vue.js锛?Casa doC贸digo鐨凜aio Incau瑙i噴浜唅ncre铆veis銆傦紙2017骞?鏈堬級 Apress鐨凚rett Nelson鐨刅ue.js鍏ラ棬銆傦紙2018骞?鏈堬級 Vue锛氱敱Leanpub鐨凞aniel Schmitz鏋勫缓鍜岄儴缃层€傦紙2018骞?鏈堬級 Packt鐨凧ames J. Ye锛屼娇鐢⊿pring 5鍜孷ue.js 2鏋勫缓搴旂敤绋嬪簭銆傦紙2018骞?0鏈堬級 Packt鐨凙jdin Imsirovic鎻愪緵鐨刅ue.js蹇€熷叆闂ㄦ寚鍗椼€傦紙2018骞?0鏈堬級 Frederik Dietz鐨刅ue.js缁勪欢妯″紡璇剧▼锛?019骞?鏈堬級 Vue.js锛氫簡瑙e叾宸ュ叿鍜岀敓鎬佺郴缁燂紝浣滆€匘ave Berning锛?019骞?1鏈堬級 Marina Mosti浣跨敤Vue.js鏋勫缓琛ㄥ崟锛?019骞?0鏈堬級 Packt鐨凙lex Jover Morales锛孞est鐢↗est娴嬭瘯Vue.js缁勪欢锛?019骞?0鏈堬級 Chris Minnick鍜學ebucator鐨凬at Dunn鎾板啓鐨刅ue.js锛?020骞?鏈堬級 浣跨敤C茅dricExbrayat鐨刅ue 3鎴愪负蹇嶈€咃紙鑻辫鍜屾硶璇増鏈級锛?020骞?鏈堬級 甯︽湁Vue 3鍜孴ypeScript Damiano Fusco鐨勫ぇ鍨嬪簲鐢ㄧ▼搴忥紝Leanpub锛?020骞?鏈堬級 鍗氬鏂囩珷 Vue x Hasura GraphQL 鍦╒ue.js涓娇鐢℅raphQL绐佸彉 浜嗚В濡備綍浣跨敤Vue.JS鏋勫缓鏁版嵁椹卞姩鐨勬悳绱I 浣跨敤GitLab CI / CD灏哣ue.js搴旂敤绋嬪簭鑷姩閮ㄧ讲鍒癆WS S3 Docker鍖朧ue搴旂敤 浣跨敤Docker鍜孏itlab CI灏咶lask and Vue搴旂敤绋嬪簭閮ㄧ讲鍒癏eroku 澶у瀷Vuex搴旂敤绋嬪簭缁撴瀯 鍦╒ue.js涓粍鎴愯绠楀睘鎬?閫氳繃瀹為檯绀轰緥浜嗚В濡備綍閲嶆瀯Vue.js鍗曚釜鏂囦欢缁勪欢 寮€濮嬩娇鐢═ypeScript缂栧啓鍩轰簬绫荤殑Vue.js搴旂敤绋嬪簭 浠ユ墦瀛楃Vue.js鐢辩害缈奥峰笗甯?Vue缁勪欢鍗曞厓娴嬭瘯鎸囧崡 Vue鍜孒asura瀹炴椂鑱婂ぉ搴旂敤 Vue vs React锛氬摢涓鏋舵洿濂斤紵 浣跨敤Vue.js鍜孷uetify鏋勫缓婕備寒鐨勫姩鐢绘柊闂诲簲鐢ㄧ▼搴?姣旇緝Angular鍜孷ue Vue vs. React 鈥撴偍搴旇涓轰笅涓€涓猈eb椤圭洰閫夋嫨鍝釜锛?Paris Nakita Kejser鍦╕ouTube涓婁粠闆跺紑濮嬬殑Vue.js绯诲垪 鍩硅鐝?閫氳繃鏋勫缓鍜岄儴缃睠RUD搴旂敤绋嬪簭瀛︿範Vue-鏈绋嬬潃閲嶄簬閫氳繃浣跨敤娴嬭瘯椹卞姩寮€鍙戯紙TDD锛夋瀯寤哄拰娴嬭瘯Web搴旂敤绋嬪簭鏉ユ暀鎺圴ue鐨勫熀纭€鐭ヨ瘑銆?浠庨浂寮€濮嬬殑楂樼骇Vue.js鍔熻兘-浜嗚В濡備綍浠庨浂寮€濮嬫瀯寤烘洿鏄撹闂殑璺敱锛岀姸鎬佺鐞嗭紝琛ㄥ崟楠岃瘉鍜屽浗闄呭寲搴擄紒 浣跨敤Vue 3鎴愪负蹇嶈€?鏈绋嬫暀鎮ㄥ浣曚娇鐢╒ue CLI锛孴ypeScript鍜孋omposition API閫愭浣跨敤Vue 3鏋勫缓瀹屾暣鐨勫簲鐢ㄧ▼搴忋€傛瘡涓粌涔犻兘闄勫甫璇存槑鍜屾祴璇曪紝浠ユ鏌ユ偍鐨勪唬鐮佺殑100锛呫€?绾綍鐗?Vue.js锛欻oneypot鐨勭邯褰曠墖锛?020骞?鏈堬級 浣跨敤Vue.js鐨勯」鐩?寮€婧愮殑 PageKit-浣跨敤Symfony缁勪欢鍜孷ue.js鏋勫缓鐨勬ā鍧楀寲锛岃交閲忕骇CMS銆?npmcharts.com-姣旇緝npm杞欢鍖呭拰鐜拌揣涓嬭浇瓒嬪娍銆?Koel-鏈夋晥鐨勪釜浜洪煶涔愭祦鏈嶅姟鍣ㄣ€?Raven Reader-浣跨敤鍘熷瓙鐢靛瓙鍜寁ue.js鍒朵綔鐨勭畝鍗昍SS闃呰鍣ㄣ€?Gokotta-鐢辩數瀛愬拰vue鏋勫缓鐨勭畝鍗曢煶涔愭挱鏀惧櫒銆?鍓┚椹?鍩轰簬AdminLTE涓巚ue.js闆嗘垚鐨勭鐞嗛棬鎴枫€?Retrospectify-鍦ㄦ晱鎹峰洟闃熶腑杩涜鍗忎綔鍥為【鐨勭畝鍗曞伐鍏枫€?jade- press-鍩轰簬mongodb锛宯odejs锛宬oa锛寁ue绛夌殑Cms銆?astralapp-杞绘澗缁勭粐GitHub Stars銆?EME-浼橀泤鐨凪arkdown缂栬緫鍣ㄣ€?Github-explorer-涓€涓彲浠ュ府鍔╂偍鏇村ソ鍦版鏌ithub鐨勬按鐤椾腑蹇冦€?閰掑簵-浠庢祻瑙堝櫒鍚姩寮€鍙戞湇鍔″櫒锛屽苟鍦ㄥ嚑绉掗挓鍐呰幏寰楁湰鍦板煙銆?Surfbird-浣跨敤鐜颁唬缃戠粶鎶€鏈紪鍐欑殑Twitter瀹㈡埛绔€?Approach0-涓€绉嶅彲璇嗗埆鏁板鐨勬悳绱㈠紩鎿庛€?Flox-鑷墭绠$數褰憋紝绯诲垪鍜屽姩婕鐪嬪垪琛ㄣ€?JavaScript Guessing Game-涓€涓瘑鍒獼avaScript宸ュ叿鍜屽簱鐨勬父鎴忋€?vue-ghpages-blog -Vue.js 2 + Webpack 2鐨勫熀浜嶨itHub椤甸潰鐨勫崥瀹€?Vuedo-浣跨敤Laravel鍜孷ue.js鏋勫缓鐨勫崥瀹㈠钩鍙般€?vue-music163-涓€涓猇ue.js闊充箰椤圭洰銆?Tomato5-瀹炴椂鍗忎綔宸ュ叿锛屽畠灏哖omodoro鎶€鏈笌鍥㈤槦鐘舵€佸叡浜澘缁撳悎鍦ㄤ竴璧枫€?Web Learn-涓€绉嶆湇鍔★紝鍙交鏉捐闂湁鍏砏eb寮€鍙戝拰缂栫▼鐨勬暟鍗冧釜瑙嗛鏁欑▼銆?ExcelJSON-涓€绉嶅皢CSV锛孴SV涓嶫SON鐩镐簰杞崲鐨勫伐鍏枫€?Materialize-blog-浣跨敤Laravel5.3鍜孷ue2.x鏋勫缓鐨勬潗鏂欏崥瀹€?VueComponentGenerator-鍦ㄦ祻瑙堝櫒涓婄敓鎴恦ue鍗曚釜鏂囦欢缁勪欢銆?SDR鏂伴椈-鏉ヨ嚜澶氫釜鏉ユ簮锛圧eddit锛孒acker News鍜孭rominent Blogs锛夌殑Web璁捐浜哄憳鍜屽紑鍙戜汉鍛樻柊闂汇€?PJ Blog-浣跨敤Laravel鍜孷ue.js鏋勫缓鐨勫紑婧愬崥瀹€?Lulumi娴忚鍣?Lulumi娴忚鍣ㄦ槸浣跨敤Vue.js 2鍜孍lectron缂栫爜鐨勮交閲忕骇娴忚鍣ㄣ€?Vue WordPress鐨凱wa OpenAPI 3鏌ョ湅鍣?娴忚骞舵祴璇昈penAPI 3.0瑙勮寖涓弿杩扮殑REST API Stacer -Linux绯荤粺浼樺寲绋嬪簭鍜岀洃瑙?Distrochooser.de -Linux鍒濆鑰呯殑鍏ラ棬鎸囧崡 Buka-鐢靛瓙涔︾鐞?Docute-涓€绉嶆棤闇€鏋勫缓杩囩▼鍗冲彲缂栧啓鏂囨。鐨勬鏋?pm86 -Node.js搴旂敤绋嬪簭缃戠珯鐨勭敓浜ц繃绋嬬粡鐞?vms -Vue.js 2.0绠$悊绯荤粺 nativescript-vue -NativeScript娓叉煋鍣ㄧ殑Vue.js瀹炵幇銆?piper-鍩轰簬Vue鐨勬嫋鏀惧紡绉诲姩缃戠珯鏋勫缓鍣ㄣ€?mmf-blog-vue2-鍩轰簬Vue2锛圴ue-router锛孷uex锛夊拰Webpack2鐨勫崥瀹€?濯掍綋绠$悊鍣?Web鏂囦欢绠$悊鍣ㄣ€?dyu / bookmarks-涓€涓敱leveldb椹卞姩鐨勮嚜鍖呭惈锛岃嚜鎵樼鐨勪功绛惧簲鐢ㄧ▼搴忥紝鐢盫ue2.1.x鏋勫缓銆?JSON妯″紡缂栬緫鍣?JSON妯″紡鐨勭洿瑙傜紪杈戝櫒銆備娇鐢╒ue.js 2鍜孎irebase寮€鍙戙€?npm-stats -npm杞欢鍖呬笅杞界粺璁′俊鎭华琛ㄦ澘 vue2-admin-lte-涓€涓皢AdminLTE杞崲涓哄彲涓嶸uejs锛坴2.x锛変竴璧蜂娇鐢ㄧ殑椤圭洰銆?Dockeron-涓€涓湪Electron + Vue.js涓婁负妗岄潰Docker鏋勫缓鐨勯」鐩€?Flamme鐨?涓€涓紑婧愮殑鐏妗岄潰瀹㈡埛绔笌鐢靛瓙鍜孷ue.js鏁欒偛鐩殑寤?閲戦奔-浣跨敤VueJS锛孏olang鍜孊ulma CSS鏋勫缓鐨凥ashiCorp Vault UI 鎻愮ず-鐢╒ue.js缂栧啓鐨勬鏋讹紝鐢ㄤ簬鍦╓eb娴忚鍣ㄤ腑鍒涘缓绫讳技鍛戒护琛岀殑鐣岄潰銆?閲庡厰-馃悋 鍩轰簬Vue.js 2.x锛孠oa 2.x锛孍lement-UI鍜孨uxt.js鐨勫簲鐢ㄦ牱鏉?Paper-Dashboard-涓篤ue鍒朵綔鐨凜reative Tim Paper Dashboard AdminLTE-VueJS2-涓€涓湪AdminLTE涓婂疄鐜癡ueJS锛坴2.x锛夌殑寮€婧愰」鐩€?鏉愯川浠〃鏉?涓篤ue鍒朵綔鐨勫垱鎰廡im鏉愯川浠〃鏉?Explore- Github-浣跨敤API鈥嬧€?v3鐨刅ueJS 2 Github Explorer CoreUI Vue绠$悊鍛樻ā鏉?鐢盫ue.js鎻愪緵鏀寔鐨勫紑婧愮鐞嗘ā鏉?鏌ュ厠路璇洪噷鏂?鏌ュ厠路璇洪噷鏂殑绗戣瘽鍙戠敓鍣ㄥ缓鏈塚ueJS + api.chucknorris.io LeafPlayer-涓€涓畝鍗曪紝蹇€燂紝绉佹湁鐨勯煶涔愭祦鏈嶅姟鍣ㄣ€?JSON缂栬緫鍣?涓€绉嶅彲璇嗗埆鏋舵瀯鐨凧SON缂栬緫鍣ㄣ€傜敤Vue2寮€鍙戙€?Voten-浣跨敤Vue2鍜孡aravel鏋勫缓鐨勭被浼糝eddit鐨勫钩鍙般€?News Weaver-浣跨敤VueJS鍜孷uetifyJS鍒朵綔鐨勫熀浜嶹eb鐨凴SS闃呰鍣?鑱氬悎鍣?鍙啋Billie Joe锛?鏍规嵁缁挎棩鐨勬瓕鏇测€滀節鏈堟湯鏃跺敜閱掓垜鈥濊€屽€掕鏃剁殑鍗佹湀浠界綉绔欍€備娇鐢╒ue鍜孎irebase鍒涘缓銆?Astrum-涓€绉嶈交閲忕骇鐨勬ā寮忓簱锛屾棬鍦ㄥ寘鍚湪浠讳綍Web椤圭洰涓€?vue2-pwa-vision-鍏锋湁Vue2 + Vuetify +娓愯繘寮廤eb App鐨勯潰閮ㄦ娴婫oogle Cloud Vision vue2-pwa-rekognition-浣跨敤Vue2 + Vuetify + Progressive Web App杩涜闈㈤儴妫€娴嬬殑Amazon Rekognition AmmoBin.ca-鏈夊叧鍔犳嬁澶у湪绾垮脊鑽环鏍肩殑鍏冩悳绱㈢綉绔?SPA-asp.net-api-vuejs--涓€涓猇ue.js鍗曢〉搴旂敤绋嬪簭锛岀敤浜庝娇鐢ˋSP .NET Webapi 2鍜孲QL Server杩涜鍩烘湰浠诲姟绠$悊鍜屾秷鎭紶閫?鍥句功浜ゆ槗淇变箰閮?涓庢偍鎵€鍦ㄥ湴鍖虹殑鍏朵粬鍥句功闃呰鍣ㄨ繘琛岃锤鏄撴垨鍊熼槄鍥句功銆備娇鐢╪odejs鍜寁uejs2鏋勫缓 vuejs-extension-pack vscode-鎵╁睍packf鎴杤scode锛屽叿鏈夌敤浜嶸ue.js寮€鍙戠殑娴佽VS Code鎵╁睍銆?Wiki.js-鍩轰簬NodeJS锛孏it鍜孧arkdown鏋勫缓鐨勭幇浠o紝杞婚噺绾т笖鍔熻兘寮哄ぇ鐨刉iki搴旂敤绋嬪簭 vue-pwa-speech-鍦╒ue2 + Vuetify + Progressive Web App涓婁娇鐢℅oogle Cloud杩涜鏂囨湰璇煶杞崲 vue-speech-streaming-鍦≒rogressive Web App涓婃墽琛屾祦寮忚闊宠瘑鍒彲瀹炴椂浣跨敤Google Cloud Speech + socket.io瀹炴椂鐢熸垚璇煶鍒版枃鏈?鎴戠殑鍔ㄧ敾鍒楄〃-杞绘澗鑾峰彇CSS鍔ㄧ敾浠g爜鐨勫伐鍏?vue-input-streaming-浣跨敤Pusher杩涜TextInput娴佸疄鏃跺拰鍙屽悜鏁版嵁缁戝畾骞挎挱 TidyTab -Chrome鎵╁睍绋嬪簭锛岀敤浜庢暣鐞嗚繖浜涙爣绛俱€?peregrine- cms-鍩轰簬Vue.js鍜孉pache Sling鐨勫彲閫夊ご閮–MS 浠庢蹇靛埌璇婃墍-鍏锋湁Vue.js鐣岄潰鐨勮偤鐧岄娴嬮」鐩?grid- awesome-浣跨敤css鏄剧ず鐢熸垚鏍锋澘css鐢ㄤ簬缃戞牸甯冨眬銆傚睘鎬с€?Light Bootstrap浠〃鏉?涓篤ue鍒朵綔鐨勫垱鎰廡im Light Bootstrap浠〃鏉?Hubaga-涓哄紑鍙戜汉鍛樺拰鍏朵粬鏁板瓧鍟嗗簵鎻愪緵鐨勫厤璐癸紝杞婚噺绾х殑WordPress鐢靛瓙鍟嗗姟鎻掍欢銆?vue-webpack-buefy-鍏锋湁鍔熻兘榻愬叏鐨刉ebpack鍜孊uefy鐨刅ue.js鍏ラ棬 Coypu-绫讳技鏂囨湰缂栬緫鍣ㄧ殑姣忓懆璁″垝 鏍稿績鏈嶅姟鍣?鍏锋湁闆嗘垚API绯荤粺鍜屽涓珮绾у姛鑳界殑楂樺害鍙墿灞曠殑VueJs妗嗘灦銆?discord- logo-鍩轰簬SVG鐨刅ue.js鍔ㄧ敾discord寰芥爣鐢熸垚鍣ㄣ€傦紙Github椤碉級 node-vue-template-鐢ㄤ簬浣跨敤Node.js锛圓PI锛夊拰Vue.js锛圫PA锛夋瀯寤哄畬鏁村簲鐢ㄧ▼搴忕殑鍏ラ棬妯℃澘锛屽叾涓寘鍚竴浜涢殢闄勭殑杞欢鍖呭拰閰嶇疆锛屼互甯姪蹇€熷紑濮嬪紑鍙戙€?vue-storefront -Vue.js搴楅潰-鐢靛瓙鍟嗗姟鐨凱WA銆?00锛呯绾匡紝涓庡钩鍙版棤鍏筹紝鏃犲ご锛屾敮鎸丮agento2銆?fd-vue -IoT妗嗘灦鐨刅ue.js瀹㈡埛绔?wildfire-鍏朵粬娉ㄩ噴鎻掍欢鐨勬浛浠e搧銆?涔樿溅鏀舵嵁-绠€鍗曠殑鑷姩鍖栨闈㈠簲鐢ㄧ▼搴忥紝鍙粠Uber鍜孡yft涓嬭浇骞舵暣鐞嗘偍鐨勭◣鍔″彂绁ㄣ€?vue-chrome-extension-boilerplate-浣跨敤Vue.js鍜學ebpack杩涜Chrome鎵╁睍鐨勬牱鏉?TimeMark-涓€涓椂闂寸鐞嗗櫒锛屽彲浠ヨ褰曟偍鐨勬椂闂达紝骞跺皢寮€鍙戞洿澶氬姛鑳姐€?Laravel Enso-浣跨敤Bulma锛孷ueJS鍜孡aravel鏋勫缓鐨凷PA绠$悊闈㈡澘锛屽紑绠卞嵆鐢ㄥ湴鎵撳寘浜嗚澶氬姛鑳姐€?浠g爜璇存槑-閫傜敤浜庝娇鐢‥lectron锛哣ue.js鏋勫缓鐨勫紑鍙戜汉鍛樼殑绠€鍗曚唬鐮佹绠$悊鍣ㄣ€?Pomotroid-绠€鍗曪紝缇庤涓斿彲鑷畾涔夌殑Pomodoro璁℃椂鍣ㄣ€?XMR Miner -Cryptocurrency锛圶MR锛夋寲鎺樺簲鐢ㄧ▼搴忥紝浣跨敤Vue.js鏋勫缓骞朵娇鐢―3杩涜鍙鍖?XMR Paper -Monero閽卞寘鐢熸垚鍣紝浣跨敤Vue.js鏋勫缓 JoyProxy -Chrome鎵╁睍绋嬪簭锛岀敤浜庡鐞嗕唬鐞嗚缃?娲诲姩鑷姩鍖?绠$悊鏃ュ父娲诲姩骞跺強鏃惰幏鍙栨姤鍛娿€?jsettlers-web-娴佽鐨勫痉鍥芥鐩樻父鎴忥紝鍒╃敤宸茶禋鍙栫殑璧勬簮鏉ュ缓閫犲叚瑙掑舰锛屽畾灞呯偣锛屽煄甯傦紝閬撹矾 Tamiat CMS -Tamiat鏄潰鍚戝墠绔殑CMS锛屼娇鐢╒ue.JS浣滀负鍓嶇锛屽苟涓嶧irebase闆嗘垚浠ュ疄鐜板悗绔姛鑳姐€?vuegg -vue GUI鐢熸垚鍣細涓€鍙f皵鍒涘缓妯″瀷鍜屼唬鐮侊紒瀹冮€氳繃鍏跺彲瑙嗗寲缂栬緫鍣ㄥ埄鐢ㄩ〉闈紝缁勪欢鍜屾牱寮忕殑鍒涘缓銆備负鎮ㄧ殑涓嬩竴涓獀uejs椤圭洰鐢熸垚鎵€鏈夎剼鎵嬫灦浠g爜銆?Podlove Web Player-鍩轰簬Podcast浼樺寲鐨勫熀浜嶩TML5鐨勯煶棰戞挱鏀惧櫒锛屽叿鏈夌珷鑺傦紝瀛楀箷鍜屽祵鍏ュ姛鑳姐€?Leo Vue-浣跨敤寮€婧怢eo姒傝堪缂栬緫鍣? IDE鍒涘缓甯︽湁宓屽鑿滃崟鐨刉eb搴旂敤绋嬪簭锛屽苟鏀寔鍐呭涓殑Vue缁勪欢銆?Deezer- Vue-浣跨敤Vue \ Vuex鏋勫缓鐨凞eezer瀹㈡埛绔?Vuep.run -Vue鐨勫湪绾縎FC缂栬緫鍣?V路 oogle-Google.com锛屽凡淇 Pomidorus-浣跨敤Vue鍜孌3鏋勫缓Pomodoro鏃堕棿璺熻釜鍣煃?鍝堝媰-馃敪 娴忚GitHub Stars鐨勫巻鍙层€?Vuepress-鏋佺畝Vue渚涚數鐨勯潤鎬佺綉绔欑敓鎴愬櫒 Socialhome-鍏锋湁绀句氦缃戠粶鍔熻兘鐨勮仈鐩熶赴瀵屼釜浜烘。妗堟瀯寤哄櫒 GenVue-鍙墭绠$殑Web搴旂敤绋嬪簭锛屽厑璁告満瀵嗙敤鎴蜂笂浼犲拰鍏变韩鍩轰簬Vue.js锛孷uetifyjs鍜孨etCore WebAPI鍫嗘爤鐨勭鏈夋枃浠?vue-array -Vue涓嬬殑鏁扮粍瀵硅薄鎿嶄綔锛孷ue涓嬬殑鏁扮粍瀵硅薄鎿嶄綔浣跨敤姝ゅ寘鍙搷浣滄暟缁勩€俈ue鍙互鐩戣闃靛垪涓殑鏇存敼 Laqu-l-鍏锋湁Quasar妗嗘灦锛屽甫鏈塐AUTH 2.0韬唤楠岃瘉鐨凣raphQL API鍚庣锛孎irebase灏辩华锛屽璇█鍔熻兘绛夌殑瀹屾暣搴旂敤绋嬪簭鍏ラ棬濂椾欢銆?Protovue-涓€涓師鍨嬬粍浠跺簱锛屽彲甯姪璁捐浜哄憳鍜屽紑鍙戜汉鍛樺揩閫熸惌寤烘娊璞$殑搴旂敤绋嬪簭甯冨眬銆?Chattier-浣跨敤Laravel 5.6锛孷ue.js 2鍜孊ulma锛圔uefy缁勪欢+ Bulmaswatch涓婚锛夋瀯寤虹殑SPA绀句氦缃戠粶銆傝繕浣跨敤JWT韬唤楠岃瘉銆?chrome-ribbon-reminder-浣跨敤Vue鍜孉sync / Await缂栧啓鐨凜hrome鎵╁睍绋嬪簭銆備娇鐢ㄥ脊鍑烘樉绀哄苟鏇存敼寰界珷璁℃暟銆?Faviator-涓€涓畝鍗曟槗鐢ㄧ殑Favicon鐢熸垚鍣ㄣ€?妯″潡鍖栧璋?浣跨敤Laravel 5.7锛孷ue.js 2.5鍜屽悇绉嶇粍浠剁殑瀹惰氨/鏃忚氨绠$悊绯荤粺銆傚伐浣滄鍦ㄨ繘琛屼腑銆?鏈€灏忕瑪璁?浣跨敤Vue.js鏋勫缓Web搴旂敤 鐑?寤哄府鍜栧暋鐖卞ソ鑰呯殑搴旂敤鎵惧埌鑷繁鐨勫挅鍟′竴鏉梺杈癸紝鑰屽涔燣aravel + Vue.js. 鍫嗘爤缂栬緫-娴忚鍣ㄥ唴Markdown缂栬緫鍣?Bael鍗氬妯℃澘-闈欐€佺敓鎴愮殑鍗氬妯℃澘锛岃妯℃澘浣跨敤Netlify CMS浣滀负鍚庣锛屼娇鐢∟etlify浣滀负鎵樼銆傚叿鏈夐噹铔編瀛︼紝妯$硦鎼滅储锛屾棤鏈嶅姟鍣ㄧ數瀛愰偖浠舵敞鍐岀瓑鍔熻兘銆?Buefy鍟嗗簵-绀轰緥鍟嗗簵锛屽紑婧愶紝鍏锋湁Nuxt锛孲tripe锛孎irebase锛孊ulma鍜屾棤鏈嶅姟鍣ㄥ姛鑳姐€?sysmon-鐢ㄤ簬Linux鐨凙B / S妯″紡绯荤粺鐩戣鍣ㄣ€傛偍鍙互鍦ㄤ换浣曞湴鏂归€氳繃Web娴忚鍣ㄨ繙绋嬫煡鐪嬬郴缁熻祫婧愮殑浣跨敤鎯呭喌銆?eth-vue-涓€涓澗闇茬洅锛屾彁渚涙偍蹇€熸瀯寤哄甫鏈塚ue.js韬唤楠岃瘉鍔熻兘鐨勪互澶潑dApp鎵€闇€鐨勪竴鍒囷紝鍖呮嫭鏄撲簬閮ㄧ讲鍒癛opsten缃戠粶鐨勯厤缃€傚畠杩樺叿鏈塆ravatar鍔熻兘銆?Nippon- color-鍙梟ipponcolors dot com鍚彂銆傝繖鏄娇鐢╲ue-cli 3鐨勬棩鏈僵鑹睵WA鐗堟湰銆?Saleina CMS-浣跨敤git浣滀负鍚庣浣跨敤vue鏋勫缓鐨勯潤鎬佺珯鐐瑰唴瀹圭鐞嗙郴缁熴€?Vuido-鐢ㄤ簬鍒涘缓鏈満妗岄潰搴旂敤绋嬪簭鐨勬鏋躲€傚畠鍙互浣跨敤鏈満GUI缁勪欢鍦╓indows锛孫S X鍜孡inux涓婅繍琛屻€?YouGet -YouTube瑙嗛/闊抽/瀛楀箷涓嬭浇鍣?鍓緫鍣?Vue Pug瑙︽帶绗?Vue + Pug +瑙︽帶绗旀牱鏉筐煉?馃惗 馃枌 鍔犲瘑鏂伴椈-鍏佽鎮ㄨ浆鎹㈠姞瀵嗚揣甯侊紝鏌ョ湅姣忎釜ICO鐨勬渶鏂版柊闂诲拰姹囩巼鈥撴眹鎬绘潵鑷姞瀵嗚揣甯佷笘鐣岀殑鎵€鏈夋暟鎹€?Epiboard-鍏锋湁鏉愭枡璁捐鍜屽疄鐢ㄥ姛鑳界殑鏂伴€夐」鍗¢〉闈㈡墿灞曫焼?馃帀 zhudyos / duic-鍒嗗竷寮忛厤缃腑蹇凁焼?Vuemmerce-浣跨敤Vue.js鍜孊ulma妗嗘灦鏋勫缓鐨勫厤璐圭數瀛愬晢鍔℃ā鏉筐焼?Nucleus -Vue鍚姩搴旂敤绋嬪簭妯℃澘锛岃妯℃澘鍦ㄥ悗绔娇鐢ˋSP.NET Core API鍒嗗眰浣撶郴缁撴瀯骞跺熀浜嶫WT杩涜韬唤楠岃瘉 Carpoolear-闃挎牴寤锋嫾杞﹀簲鐢ㄧ▼搴忕殑寮€婧怴ue.js鍓嶇锛堢Щ鍔ㄥ拰Cordova搴旂敤绋嬪簭锛夛細Carpoolear Statusfy锛歋tatusfy鏄竴涓姸鎬侀〉闈㈢郴缁燂紝鏄撲簬浣跨敤涓斿畬鍏ㄥ紑婧愩€?DynamoDb-GUI-Client锛欴ynamoDb鐨勮法骞冲彴GUI瀹㈡埛绔?RosterWebApp-寮€婧愮殑鍚嶅崟鍖朩eb搴旂敤绋嬪簭锛屽厑璁稿鍛樺伐/鍥㈤槦杩涜宸ヤ綔浼氳鍜屽叾浠栧姛鑳界殑鍚嶅崟鍖栥€?Vue E-Store Templet-浣跨敤vue / vuex / vue-router鍜宐ootstrap4鏋勫缓鐨勭數瀛愬晢鍔emplet銆?Twill -Laravel鐨勫紑婧怌MS宸ュ叿鍖咃紝鍙府鍔╁紑鍙戜汉鍛樺揩閫熷垱寤虹洿瑙傦紝寮哄ぇ鍜岀伒娲荤殑鑷畾涔夌鐞嗘帶鍒跺彴銆?MATH_BOT-閫氳繃瀵规満鍣ㄤ汉缂栫▼鏉ュ涔犳暟瀛︺€?Vue Crossword-鍩轰簬Vue.js鐨勫~瀛楁父鎴忔瀯寤哄櫒鍜屽~鍏呭櫒鍓嶇搴旂敤绋嬪簭銆備娇鐢–odeSandbox鏋勫缓銆?Vue缁勭粐缁撴瀯鍥?鍏嶈垂绠$悊鍜屽彂甯冩偍鐨勪氦浜掑紡缁勭粐缁撴瀯鍥撅紙orgchart锛夛紝鏃犻渶Web鏈嶅姟鍣ㄣ€?鍝?甯愭埛瀹夊叏鎵弿鍣ㄥ缓鏈塚ue.js鍜岀瀛? Vue CRUD-鍩轰簬Vue.js鐨凴EST-ful CRUD绯荤粺銆俈ue CRUD鍏佽鎮ㄨ交鏉惧垱寤哄揩閫熷簲鐢ㄧ▼搴忥紝渚嬪CMS鎴朇RM銆?Vue鎬婚儴绠$悊浠〃鏉库€撶敱Vue锛孲ass锛孎irestore鍜孨etlify鏀寔鐨勭幇浠g鐞嗕华琛ㄦ澘銆?MToDo-閫氳繃Vue.js鍜孞SON Server浣滀负鏁版嵁妯″瀷鏋勫缓鐨勫叿鏈夌畝鍗曡韩浠介獙璇佺殑灏忓瀷浠诲姟鍒楄〃銆傞潪甯搁€傚悎浣滀负鍙戠幇鏈夊叧鐪熷疄Vue.js鍙傝€冪殑浠讳綍浜虹殑鍙傝€?FireX Proxy -FireX Proxy鏄敤鎴峰€煎緱淇¤禆鐨凜hrome鍜孎irefox娴忚鍣ㄦ墿灞曠▼搴忥紝瀹冧娇鎮ㄥ彲浠ュ彇娑堥樆姝换浣曠綉绔欏苟绉佸瘑瀹夊叏鍦版祻瑙圵eb銆傪煕?VueSolitaire-鍦╒ue.js涓疄鐜扮殑绾哥墝锛堣湗铔涳紝鍏嬫湕浠e厠锛夈€?鐑噺-涓€绔欏紡鍒拌揪鎵€鏈塆it瀛樺偍搴撱€?QMK Configurator -Vue.js涓殑QMK鍥轰欢閿洏閰嶇疆UI銆?Eplee-浣跨敤Vue.js鍜孍lectron.js鍒朵綔鐨勭敎缇庯紝绠€鍗曠殑epub闃呰鍣ㄣ€?vue-realworld-example- app-绀轰緥鎬у叏鏍圡edium.com鍏嬮殕 姣忔棩-绮鹃€夌殑寮€鍙戜汉鍛樻柊闂诲凡浼犻€佸埌鎮ㄧ殑鏂版爣绛鹃〉 Laravel File Manager-寮哄ぇ鐨凩aravel鏂囦欢绠$悊鍣?Vue鍔犲瘑浠〃鏉?鐢╒ue.js鍒朵綔鐨勫姞瀵嗚揣甯佷华琛ㄦ澘 ETCD Manager-鍩轰簬Electron鍜孷ueJS鐨勭幇浠o紝楂樻晥锛屽厤璐圭殑澶氬钩鍙癊TCD GUI搴旂敤绋嬪簭銆?Idea Re-Vue-绀句氦鏋勬€濆钩鍙帮紝浠ユ湁瓒o紝鐩磋鐨勬柟寮忓垱寤猴紝绠$悊鍜岄泦鎬濆箍鐩娿€備娇鐢‵irebsae浣滀负鍚庣鏋勫缓鍦╒ueJS鍜孷uetify鐨勯《閮?Vue璐圭敤-浣跨敤Vue.js锛孷uetify鍜孉SP.NET Core鍒朵綔鐨勮垂鐢ㄨ窡韪簲鐢ㄧ▼搴?Akaunting-鍩轰簬Laravel鍜孷ueJS鐨勯潰鍚戝皬鍨嬩紒涓氬拰鑷敱鑱屼笟鑰呯殑鍏嶈垂鍦ㄧ嚎浼氳杞欢銆?VueFront-涓嶤MS鏃犲叧鐨凱WA鍜孲PA銆備笉鍒?鍒嗛挓鍗冲彲浣挎偍鐨刉ordpress缃戠珯鐜颁唬鍖?Mockup鏈嶅姟鍣?Mockup鏈嶅姟鍣ㄥ緢瀹规槗浠庢湰鍦扮洰褰曞垱寤烘湇鍔″櫒銆?MQTTX-浣跨敤Vue.js锛孴ypescript鍜孍lectron鏋勫缓鐨勮法骞冲彴MQTT 5.0妗岄潰瀹㈡埛绔€?Pychat-鑷墭绠$殑WebRTC瑙嗛鑱婂ぉ锛堝彲鏇夸唬Slack锛?super.ba-浣跨敤Vue.js锛孷ue鐨凙nt Design锛坅ntdv锛夊拰NodeJS鏋勫缓鐨凴SS鏂伴椈鑱氬悎鍣ㄣ€?Rapido -Rapido鏄埗浣滅綉绔欑殑杞欢銆俁apido蹇€燂紝鏄撲簬浣跨敤涓斿皧閲嶆偍鐨勯殣绉併€?miniPress-鍙︿竴涓潤鎬佺珯鐐圭敓鎴愬櫒 Zeithub-鑷敱鑱屼笟鑰呯殑寮€婧愭椂闂磋窡韪紝鍙戠エ鍜岃垂鐢ㄧ鐞?CodeceptJS UI-绫讳技浜嶤ypress鐨刄I鉁旓笍 CodeceptJS缁撴潫2缁撴潫娴嬭瘯 鉁旓笍銆?Vue Pivottable-鍩轰簬jQuery鐨凱ivotTable.js鐨刅ue绔彛 Vue鏁版嵁鏄犲皠-鍩轰簬JavaScript鐨凞ataMap鐨刅ue绔彛 Marked.cc -馃摑 鍒涘缓骞跺叡浜瑪璁板拰鏁f枃鐨勭簿缇庡浘鍍忋€?LeagueStats-缁熻鏁版嵁鐨勫湪绾挎父鎴忕殑鑻遍泟鑱旂洘鐨勭帺瀹躲€?Veniqa-涓€绉嶇數瀛愬晢鍔¤В鍐虫柟妗堬紝鍖呭惈鐢╒ue缂栧啓鐨勮喘鐗╁鎴风鍜岀鐞嗛潰鏉裤€?tato闊充箰鎾斁鍣?閫傜敤浜庝互Vue鍜孷uetify缂栧啓鐨勯煶涔愯糠鐨勭Щ鍔ㄤ紭鍏堬紝鎵嬪啓锛屽搷搴斿紡缃戠粶搴旂敤绋嬪簭銆?Sheiley Shop -PWA鍙互璺熻釜涓汉璐拱鎯呭喌锛屼笉鍐嶉渶瑕佺焊鍜岄搮绗斿幓瓒呭競馃彫 Vue鍜孷uetify 鍚庝汉-馃寱浣跨敤閭€掑憳鏀惰棌涓殑markdown鍜孒TML鍒涘缓婕備寒鐨勬枃妗c€備娇鐢ㄧ被鏄熶綋妗嗘灦 Greenpress绠$悊闈㈡澘-Greenpress鐨勭鐞嗛潰鏉匡紝杩欐槸涓€涓敤浜庡垱寤哄崥瀹㈠拰鍐呭缃戠珯鐨勫畬鍏ㄥ紑鏀炬簮浠g爜銆?Greenpress Blog-Front - Greenpress鐨勫墠绔簲鐢ㄧ▼搴忔湇鍔★紝Greenpress鏄敤浜庡垱寤哄崥瀹㈠拰鍐呭缃戠珯鐨勫畬鍏ㄥ彲鎿嶄綔鐨勫紑婧愮▼搴忋€?鐢靛奖澶╁爞-鐢盫ue鍜孷uetify鏋勫缓鐨勫搷搴斿紡鐢靛奖棰勮Web搴旂敤 瀵昏矾鍙鍖栧伐鍏稵hreeJS-甯︽湁杩峰鐢熸垚鍜岀涓€浜虹О瑙嗚鐨?D瀵昏矾绠楁硶鐨勫彲瑙嗗寲宸ュ叿 鏁忔嵎璁垮-鐢宠鍛樺伐鐧昏鐨勫簲鐢ㄧ▼搴忥紝鍙互鐢熸垚鎶ュ憡锛屼互鏈€灏忕殑鍔姏楠岃瘉鍜屽瓨鍌ㄧ敤鎴枫€?Pexelry-鍒╃敤pexels API鐨勫簲鐢ㄧ▼搴忥紝浣挎偍鍙互鎵惧埌婕備寒鐨勭収鐗囧拰鍥剧墖銆?karrot-frontend-鐢ㄤ簬缁勭粐鍏ㄧ悆椋熷搧鑺傜害缁勭粐鐨刉eb搴旂敤绋嬪簭銆?瀹炴椂娴嬮獙妗嗘灦-浣跨敤NodeJS锛孷ueJS鍜孉bly鏋勫缓鐨勫叆闂ㄥ伐鍏峰寘锛屾彁渚涘彲鎵╁睍鐨勫熀纭€缃戠粶妗嗘灦鏉ヤ富鎸佸疄鏃舵祴楠?鍟嗕笟浜у搧 Wijmo-鍏锋湁VueJS鏀寔鐨刄I鎺т欢鐨勯泦鍚堛€?ChatWoot-閫氳繃Facebook Messenger杩涜Livechat鍜屼唬鐞嗗崗浣溿€?VueA-鍏锋湁澶氫釜甯冨眬鍜宭aravel鐗堟湰鐨刅ueJS绠$悊妯℃澘銆?Teleo鍏徃-鍥㈤槦鍗忓悓鍚堜綔锛屽簲鐢ㄨ璇濓紝瑙勫垝鍜屽仛涔嬮棿杞绘澗绉诲姩 EducationLink-閫傜敤浜庢暀鑲蹭唬鐞嗗晢鍜屽ぇ瀛︾殑CRM鍜岄攢鍞嚜鍔ㄥ寲銆?瀹炵敤v2.0-浣跨敤Vue.js鍜孍lement鏋勫缓鐨勫搷搴斿紡鍜屽彲閰嶇疆绠$悊妯℃澘銆?Moonitor-鍙板紡鏈虹殑鍔犲瘑璐у竵璺熻釜鍣ㄣ€?Deskree-灏嗘兂娉曪紝浠诲姟鍜岄棶棰橀泦涓湪涓€澶勭殑鍦ㄧ嚎鍗忎綔骞冲彴銆?OSHCExpress -OSHC锛堟捣澶栧鐢熷仴搴蜂繚闄╋級淇濋櫓锛堟境澶у埄浜氬浗闄呭鐢熶繚闄╋級鐨勬瘮杈冨拰鐢靛瓙鍟嗗姟銆?Agiloo -Scrum鍜岀湅鏉跨殑椤圭洰绠$悊搴旂敤绋嬪簭 ScaffoldHub-甯︽湁NodeJS锛孧ongoDB鎴朣QL鐨刅ueJS鍦ㄧ嚎Web App鐢熸垚鍣ㄣ€?鎸囨尌瀹?閲嶆柊鏋勬兂鐨勪簯绠$悊銆備娇鐢╒ue.js鍜孍lectron鏋勫缓鐨勬闈簯绠$悊搴旂敤绋嬪簭銆?Mongster-灏嗘偍鐨凪ongo DB鑺傜偣杩炴帴鍒版帶鍒堕潰鏉垮唴鐨勪竴涓兢闆嗕腑銆?璇峰亣鏃ユ湡-璺熻釜鍛樺伐璇峰亣鐨勫己澶ф柊鏂规硶銆?鏃堕棿闂?鏃堕棿搴忓垪鍒嗘瀽API vREST NG-浣跨敤VueJS鍜孍lement UI鏋勫缓鐨勭敤浜庤嚜鍔ˋPI娴嬭瘯鐨勪紒涓氬簲鐢ㄧ▼搴忋€?ScaleChamp-鍏锋湁Hetzner锛孉WS锛孡inode锛孖BM锛孉zure锛孲caleway锛岄樋閲屼簯锛孌igitalOcean锛孏CP鍜孶pCloud鏀寔鐨勫浜戞墭绠℃暟鎹簱鎻愪緵鍟?Coloban-鍖呭惈鑱婂ぉ锛岀湅鏉匡紝鐢樼壒鍥撅紝閫氳瘽锛屽睆骞曞叡浜瓑鐨勫鍚堜竴椤圭洰绠$悊宸ュ叿銆?搴旂敤/缃戠珯 Laravel Spark 鍓棰?灏忚〃鏍?鎷夋媺鍗℃柉 esa.io 绋€鍦熸帢閲?甯冩媺鏍兼満鍦?鎶曡祫缁勫悎缃戠珯 Statamic 闃茶厫鍓傦紒-浣跨敤缇庡浗鍦拌川璋冩煡灞€鏁版嵁搴撴姤鍛婃按鍧濇按浣嶇殑宸ュ叿銆?TravelMap-鏃呰鑰呭熀浜庡湴鍥惧垱寤哄崥瀹㈢殑绠€鍗曟柟娉曘€?鍚堥€傜殑琛~鍒堕€犲晢-瀹氬埗琛~鍒堕€犲晢銆?椋炲ぉ灏忓コ璀﹀崱閫氱綉缁?vNotes-浣跨敤Vue.js鍜屾湰鍦板瓨鍌ˋPI鐨凪arkdown绠€娲佹紓浜殑璁颁簨鏈€?寮€鏀惧姛鑳借绠楁満 Dermail-鐢╒ue.js缂栧啓鐨勭敤浜嶥ermail鐨刉ebmail瀹㈡埛绔紝Dermail鏄敤node.js缂栧啓鐨勯偖浠剁郴缁熴€?octimine-涓撳埄鎼滅储寮曟搸銆?Draxed-鍩轰簬Web鐨凪ySQL鍜孭ostgreSQL鏁版嵁娴忚鍣ㄥ拰浠〃鏉跨鐞嗗櫒銆?Jobinja-鍦ㄤ紛鏈楄繍钀ョ殑宸ヤ綔濮斿憳浼氬拰鑱屼笟骞冲彴銆?婊氳泲鍚э紒鑾嗙敯绯?鏄剧ず鎵€鏈塒ut鐢板尰闄俊鎭?Livestorm-缃戠粶鐮旇浼?鐜板満娲诲姩搴旂敤绋嬪簭銆?闇嶅皵椤?鍏ㄧ悆鑰冭瘯-璇█鑳藉姏娴嬭瘯鍦ㄧ嚎鍩硅 SlugSurvival-涓€涓彲甯姪瀛︾敓鏇村ソ鍦拌鍒掕绋嬬殑Web搴旂敤绋嬪簭锛堜笟浣欓」鐩紝涓嶅睘浜嶶CSC锛夈€?GitRelease-浣跨敤甯︽湁鐢靛瓙鐨剉ue.js鍦∕ac鑿滃崟鏍忎笂璺熻釜github椤圭洰鐨勬柊鐗堟湰銆?12BAY.VN-鍦ㄧ嚎鐢宠鏈虹エ棰勮銆?PLAYCODE.IO-蹇€熷墠绔疄楠岀殑娓镐箰鍦恒€?铏氱┖鐢靛彴-鍦颁笅瀹ゅ唴闊充箰鍦ㄧ嚎鐢靛彴銆?Bitly Vue-浣跨敤VueJS鍜孊itly API缂╃煭URL銆?Storyblok-浣跨敤VueJS浣滀负鍓嶇鐨勫熀浜嶢PI鐨?瑙h€︾殑CMS銆?WizzAir 杩佺Щ鍒癏TTPS-灏嗕笉鍚屽钩鍙?鎵樼绔欑偣杩佺Щ鍒癏TTPS鐨勬寚鍗?Booknshelf-鍙戠幇鏈夊叧涓嶅悓涓婚鐨勫嚭鑹蹭功绫嶅拰涔︽灦銆?Euronews -Euronews鏄竴绉嶅璇█鏂伴椈濯掍綋鏈嶅姟锛屾€婚儴浣嶄簬娉曞浗閲屾槀銆?Roozame乇賵夭丕賲賴銆? Roozame鏄尝鏂殑鏅鸿兘鏂伴椈濯掍綋鏈嶅姟銆?搴撶﹩灏?NinjaCalc-涓€缁勪笌宓屽叆寮忓伐绋嬬浉鍏崇殑璁$畻鍣紝浣跨敤vue.js鏋勫缓涓哄紑婧愬崟椤靛簲鐢ㄧ▼搴忋€?Vue.js Feed-鏈€鏂扮殑Vue.js鏂伴椈锛屾暀绋嬶紝鎻掍欢绛夈€傜敤Vue.js鍜孡aravel鍒朵綔銆?钂滅摚-鐢╒ue2.0鍜孌ouban API寮€鍙戠殑Web搴旂敤绋嬪簭 鐚滃浜?涓€涓€滅寽鍗曡瘝鈥濇父鎴?鐢╒ue / vuex / vue-router锛堝墠绔級鍜孡aravel / MySQL锛堝悗绔級缂栧啓銆備唬鐮佹槸GitHub涓婄殑寮€婧愪唬鐮侊紙灏界涓嶆槸鍦╧dcinfo涓婅繍琛屾父鎴忕殑瀹炴椂鏂囦欢锛夈€?GRAP-鍟嗕笟閫氳鏈嶅姟 绠€鏄撴ā鎷?mmf-blog-vue2-ssr-浣跨敤Vue 2.0锛寁ue-router鍜寁uex鏋勫缓鐨勫崥瀹紝鍏锋湁鏈嶅姟鍣ㄧ娓叉煋 JSON妯″紡缂栬緫鍣?浣跨敤Vue.js鍜孎irebase鏋勫缓鐨凧SON妯″紡鐨勭洿瑙傜紪杈戝櫒銆?Winsome Trivia-涓€绉嶅崟浜烘垨澶氫汉鐞愪簨娓告垙锛屽叿鏈夌敱Vue.js鏋勫缓骞剁敱Open Trivia鏁版嵁搴撴彁渚涙敮鎸佺殑2,000澶氫釜鐙壒闂銆?鏈堜寒缁勭粐鑰?鍐滃巻鏃ュ巻搴旂敤绋嬪簭 Flash-Vue- 鈥滄湭鏉ョ殑鎶借鍗♀€濆皢瀛︿範鏃犲涓嶅湪馃殌 Kinderbesteck -涓€涓畬鏁寸殑缃戜笂鍟嗗簵SPA涓嶸ue2.0锛孷uex锛孷ue鐨勮矾鐢卞櫒 n2ex -vue ssr锛坣uxt锛夌綉绔欙紝浣跨敤v2ex API Power璇嶅簱-浼楀寘鍦ㄧ嚎璇嶅簱 Chattanosy-鐢辩ぞ鍖烘彁渚涚殑鐢扮撼瑗垮窞鏌ュ鍔姞鏂颁簨鐗╃殑鏁版嵁搴撱€?PAIXIN-姝g増鍥剧墖閿€鍞綉绔?CodeBottle-灏嗙墖娈垫嫋鏀惧埌鎮ㄧ殑椤圭洰涓?1XBET-鑷?007骞村紑濮嬭繍钀ョ殑鍗氬僵鍏徃 MyOwnTV-鐢ㄤ簬鍒涘缓浜掕仈缃戠數瑙嗙殑娴佸獟浣撶綉绔?CrowdCircus-娆ф床鏈€澶х殑浼楃鍜屼紬绛瑰钩鍙?丕亘蹖丕鬲賳丕亘倬丕乇爻蹖-娉㈡柉璇楅泦 Ripplectron - Vue - electron鐨凴ipple锛圔lockchain Coin锛夐挶鍖呮闈㈠鎴风 PingBreak-浣跨敤vuejs杩涜瀹炴椂浠〃鏉跨殑鍏嶈垂锛岀畝鍗曠殑缃戠珯鐩戞帶鏈嶅姟 Todoist Tribute -Todoist鍏嬮殕锛岀敤Rails + Vue缂栧啓 JSON缂栬緫鍣?浣跨敤Vue2鍜宖irebase鏋勫缓鐨勫彲璇嗗埆鏋舵瀯鐨凧SON缂栬緫鍣ㄣ€?Develteam-鐙珛娓告垙寮€鍙戣€呯殑绀句氦缃戠粶銆?Mixsii-涓€涓厤璐圭殑瑙嗛鑱婂ぉ瀹ょ綉绔欙紝闈㈠悜闈掑皯骞达紝鎴愬勾浜猴紝瀹朵汉鍜屾湅鍙嬨€?PipQuest -Vue鍐呯疆鐨勫鍙ょ泭鏅烘父鎴?Matryx-涓€涓幓涓績鍖栫殑鍗忎綔骞冲彴銆?iPrevYou-YouTube鈩㈡挱鏀惧櫒-涓€绉岰hrome搴旂敤绋嬪簭锛岀敤浜庡湪鎮ㄧ殑妗岄潰涓婅鐪媦outube瑙嗛銆?鐗╁搧绠$悊鍣?鐢ㄤ簬涓恒€婂懡杩?銆嬫父鎴忚浆绉荤墿鍝佺殑搴旂敤绋嬪簭銆?鍓嶇澶у笀Vue鍏ラ棬-鍓嶇澶у笀鍏ㄦ棩鍒惰绋?TR-101-榧撳悎鎴愬櫒/闊冲簭鍣ㄣ€?闆嗗競-濯掍綋鍏变韩骞冲彴銆?Vectr-鍏嶈垂鐨勭煝閲忓浘褰㈣蒋浠?鑴戜綅-鐢ㄤ簬Emotiv鑰虫満鐨凱300鍦ㄧ嚎鎷煎啓鏈哄埗 纭竵浠〃鏉?瀹屽叏瀹㈡埛绔姞瀵嗚揣甯佽祫浜т华琛ㄦ澘銆?Habitica-瑙掕壊鎵紨娓告垙褰㈠紡鐨勫湪绾夸换鍔$鐞嗗簲鐢ㄧ▼搴忋€?MadeWithVueJs-鐢╒ue.js鍒朵綔鐨勯」鐩簱锛堢珯鐐规湰韬篃浣跨敤Vue.js锛?CodeDependencyScanner-鏄剧ず.Net姹囩紪浠g爜渚濊禆鎬х殑AC锛僤ektop搴旂敤绋嬪簭浣跨敤Vue锛孨eutronium鍜孌3.js鏋勫缓銆?鍗冧互澶潑涓婚〉-閲嶆柊璁捐涓轰互澶潑DApp鐨勭櫨涓囩編鍏冧富椤点€傚湪Vue.js涓婃瀯寤哄苟寮€婧愩€?Let's Enchance-鍏嶈垂鐨勫湪绾垮浘鍍忓崌绾у拰绁炵粡缃戠粶澧炲己鍔熻兘銆?Pi.TEAM-鍦ㄧ嚎鍙戠エ鍜屼細璁?绠€鍗曟槗鐢ㄧ殑鍦ㄧ嚎浼氳鍜屽彂绁紝鍗曠敤鎴峰拰鑷敱鑱屼笟鑰呭厤璐广€?Vuethwallet-涓€涓畝鍗曠殑搴旂敤绋嬪簭浣跨敤vuejs鐢熸垚浠ュお鍧婇挶鍖呫€?Tipe-涓嬩竴浠PI浼樺厛鐨凜MS銆備娇鐢ㄥ姛鑳藉己澶х殑缂栬緫宸ュ叿鍒涘缓鎮ㄧ殑鍐呭锛屽苟浣跨敤GraphQL鎴朢EST API浠庝换浣曞湴鏂硅闂畠銆傚仠姝㈣CMS鍐冲畾濡備綍鏋勫缓搴旂敤绋嬪簭銆?Vuethexplore-涓€涓畝鍗曠殑搴旂敤绋嬪簭浣跨敤vuejs鎺㈢储浠ュお鍧婂尯鍧楅摼銆?Fintechers-浠intech涓洪噸鐐圭殑宸ヤ綔濮斿憳浼氥€?Devjournal-椤圭洰鍜屾瀯鎯崇殑鍗忎綔寰呭姙浜嬮」鍒楄〃銆?Bubbleflat-鍦ㄧ嚎骞冲彴锛屽彲閫氳繃鎼滅储鍏锋湁鐩镐技鐢熸椿鏂瑰紡锛屽叴瓒f垨瀛︽牎鐨勪汉鏉ュ府鍔╁鐢熷拰骞磋交鐨勪笓涓氫汉鈥嬧€嬪憳鎵惧埌鐞嗘兂鐨勫鍙嬨€侺aravel鍜孷uejs TeaQuinox Tea Co-涓撻棬浠庝簨鏁e彾鑼剁殑鐢靛瓙鍟嗗姟缃戠珯銆?blip-娴嬭瘯缃戠珯鐨勯€熷害锛岀Щ鍔ㄥ弸濂芥€э紝瀹夊叏鎬у拰HTML5鏂囨。绫诲瀷銆傚湪鏌愪釜浣嶇疆鏌ユ壘鍟嗗锛岀劧鍚庢暣浣撴祴璇曞叾缃戠珯锛屾垨鑰呭彧鏄祴璇曟偍鑷繁鐨刄RL銆?sunpos-澶槼浣嶇疆锛岄珮绋嬶紝鏂逛綅瑙掞紝榛勯亾/璧ら亾鍧愭爣鍜屾棩鍑?鏃ヨ惤鏃堕棿锛堟湵鍒╁畨鏃ワ級璁$畻鍜岃浆鎹㈠疄鐢ㄧ▼搴忋€備娇鐢ㄧ函JS锛孷uejs鍜宨18n Vuejs鏈湴鍖栨彃浠跺缃戠珯杩涜缂栫▼銆傚彲瑙嗗寲鏄娇鐢―3.js鍒涘缓鐨勩€?U3xyz-鍩轰簬vue ssr鐨勪釜浜哄崥瀹€?27.ua-涔屽厠鍏扮殑浜掕仈缃戝ぇ鍨嬭秴甯?鍥介檯璞℃瀹堟姢鑰?浠庢偍鑷繁鐨勬父鎴忎腑鍥炵瓟鍥介檯璞℃浣嶇疆闂銆?浜屽崄涓€鐐逛紤鎭?浜屽崄涓€鐐瑰揩閫熸父鎴?GameVix-涓庝粬浜轰氦鎹㈡偍浣跨敤杩囩殑瑙嗛娓告垙鍏夌洏锛屾棤蹇с€傚叿鏈夋潗鏂欒璁$殑PWA銆?VivifyScrum-浜や粯鍥㈤槦鐨勬晱鎹烽」鐩鐞嗗簲鐢ㄧ▼搴忋€傚彲瀹氬埗鐨凷crum鍜岀湅鏉裤€?9GAG-娴佽鐨勫湪绾垮钩鍙板拰绀句氦濯掍綋缃戠珯 鍘ㄦ埧鏁呬簨-鐑归オ骞冲彴 MailRabbit-鍦ㄦ病鏈夊紑鍙戜汉鍛樼殑鎯呭喌涓嬪垱寤猴紝A / B娴嬭瘯鍜岀洃瑙嗕氦鏄撶數瀛愰偖浠躲€?Vue璧勬簮绮鹃€?寰堟鐨刅ue缁勪欢鍒楄〃锛岀被鍒紝鍦ㄧ嚎婕旂ず鍜屾憳瑕?Cronhub-鏃犵棝Cron鐩戞帶宸ュ叿 wrkprty-鑷敱鑱屼笟鑰咃紝杩滅▼宸ヤ綔鑰呭拰鎯崇寮€鍔炲叕瀹ょ殑涓撲笟浜哄+鐨勫脊鍑哄紡鍗忎綔娲诲姩銆?鐢ㄧ埍鍒堕€?鐢ㄧ埍鍒堕€犫潳锔?鍦ㄤ笘鐣岃寖鍥村唴锛屼富鍔ㄨ鍔ㄦ槸搴嗙鐨勮繍鍔?馃帀锛屾帹骞?馃摚 寤虹珛鍝佺墝 馃憫銆傚畠鎻愪緵浜嗘潵鑷悇鍦扮殑鎶€鏈柊闂伙紝璁捐鐏垫劅鍜岃秼鍔筐煉?鏉ユ簮鍖呮嫭Dribbble锛孭roductHunt锛孊ehance鍜孴echcrunch銆?馃挐 浜у搧閫斿緞-鍦ㄥ垱涓氬叕鍙稿拰绉戞妧鍏徃鍙戠幇1000澶氫釜浜у搧宸ヤ綔銆?V路 oogle-Google.com锛屽凡淇銆備竴涓瑧璇濋」鐩€?) 缁忕邯浜虹エ鎹?鈥滄垚涓烘埧鍦颁骇缁忕邯浜虹殑鐮旂┒鈥濔煆?SyncLounge -SyncLounge鏄竴绉嶅伐鍏凤紝鍙互鍦ㄥ涓綅缃殑澶氫釜鎾斁鍣ㄤ箣闂村悓姝lex鍐呭銆?HCE.it-鎰忓ぇ鍒╀唬鐞嗗晢鐨勭綉绔欙紝瀹屽叏鐢盫ue浣跨敤鍩轰簬Laravel鐨勬棤澶碈MS鍒朵綔銆?椤甸潰-缃戦〉璁捐鐏垫劅 Scrumpy-鏁忔嵎鍥㈤槦鐨勭編涓介」鐩鐞嗗伐鍏?Spektrum -Spektrum Media Agency缃戠珯 SPK SPK鐢熸€佺郴缁熺綉绔?鍥介槻閮?鈽笍 閲嶈浜虹被鐨勭綉椤碉紝CMS锛孋RM鍜屾崘璧犱互鍙婃墍鏈夌數瀛愬晢鍔¢〉闈㈢殑鍗忎細鑱斿悎浼氬潎浣跨敤Vue.js锛孷uex鍜岀函JavaScript璁捐 馃檹 閰嶇疆鏂囦欢绠$悊-涓€绉嶇鐞嗛厤缃枃浠剁殑绠€鍗曟柟娉?鐑や竴涓棬鍦ㄥ府鍔╁挅鍟$埍濂借€呭湪浜嗚ВLaravel + Vue.js鐨勫悓鏃舵壘鍒颁笅涓€鏉挅鍟$殑搴旂敤绋嬪簭銆?YBR -闆嗕腑YBS鍏叡eComplaint绠$悊绯荤粺銆傦紙鍏⊿PA锛?姝e垯琛ㄨ揪寮忔彁鐞存墜 Myanpwel-娲诲姩绁ㄥ姟骞冲彴鐨勭綉绔欍€?CryptoArte-浠ュお鍧婅壓鏈敹钘忓搧锛屼笉鍙浛浠g殑浠e竵鍜孌app銆?Muuviez-鍏锋湁鏃跺皻璁捐鐨勭數褰卞彂鐜板拰璺熻釜缃戠珯 NAGA VIRTUAL -NAGA VIRTUAL鏄涓€涓嫭绔嬬殑铏氭嫙鍟嗗搧甯傚満銆?Scroll.in-Scroll.in鏄嫭绔嬬殑鏂伴椈锛屼俊鎭拰濞变箰浼佷笟銆?Akunyi-鎱堝杽缃戠珯 椹厠路椴佹硶娲涗細鍋氫粈涔堬紵-鍩轰簬椹厠路椴佹硶娲涳紙Mark Ruffalo锛夊湪鎴愬姛鑾峰緱鏁扮櫨娆¤瘯闊冲悗澶辫触鐨勬晠浜嬬殑鍔卞織缃戠珯銆?鐧藉叞鍦?鑿滃崟鏍忕殑鍝佺墝璧勪骇缁忕悊銆?NBC Sports -NBC Sports鏄竴瀹朵綋鑲叉柊闂荤綉绔欍€?WITHIN-铏氭嫙鐜板疄涓殑闈炲嚒鏁呬簨銆?plottr.io-瑙勫垝鎮ㄧ殑璺戞鍜岄獞琛岃矾绾?beCamp-鍦ㄥ紬鍚夊凹浜氬窞澶忔礇鑼ㄧ淮灏斾妇琛岀殑绀惧尯缁勭粐鐨勬妧鏈細璁€傜綉绔欎唬鐮佹槸寮€婧愮殑銆?Trustpilot-鍏嶈垂寮€鏀剧粰鎵€鏈夎瘎璁哄钩鍙般€?Lagom-绠€鍗曪紝鐩磋涓斿搷搴旇繀閫熺殑WHMCS涓婚 ScoutMyTrip-Roadtrip Planner-鍗板害鐨勫叕璺梾琛岃鍒掑簲鐢ㄧ▼搴忥紝鍙府鍔╂梾琛岃€呭缓绔嬭绋嬶紝鍙戠幇鍏磋叮鐐癸紝瀵绘壘娌块€旂殑閰掑簵锛屽姞娌圭珯锛岀編椋熻绛夈€?GamersClub-宸磋タ鏈€澶х殑鐢靛瓙绔炴妧绀惧尯鍙戝睍鍏徃 楹荤渷鐞嗗伐瀛﹂櫌-楹荤渷鐞嗗伐瀛﹂櫌鐨勫畼鏂圭綉绔欍€?Elvenar -Elvenar鏄竴娆惧熀浜庢祻瑙堝櫒鐨勫够鎯冲煄甯傚缓閫犺€呮父鎴忋€?淇℃爣-馃挋 涓€椤瑰厑璁告偍鍦ㄥ涓綉绔欎笂鍏变韩鍐呭鐨勬湇鍔°€?Artfinder -Artfinder鏄拱鍗栬壓鏈搧鐨勭綉绔欍€?Rolodromo-鑷村姏浜庢闈PG鐨勮タ鐝墮缃戠珯銆?GitHubExplorer-鐢ㄤ簬娴忚GitHub鐨勭函闈欐€侀〉闈ebapp銆備娇鐢╒uejs鍜孏itHub GraphQL API v4銆?涓婚婕旇-涓嶸ue涓€鍚屼娇鐢ㄣ€?HappyPlants-鐢ㄤ簬缁勭粐妞嶇墿鐨勬笎杩涘紡Web搴旂敤绋嬪簭馃尡銆?鍙h娓呭崟-涓栫晫涓婃渶鍙嬪ソ鐨勫緟鍔炰簨椤瑰垪琛ㄥ簲鐢ㄧ▼搴忋€?Padlet-鍗忎綔鍏憡鏉?Glovo-鎸夐渶浜や粯 MySigMail -MySigMail鏄竴涓厤璐圭殑娴忚鍣ㄧ數瀛愰偖浠剁鍚嶇敓鎴愬櫒锛屾棤闇€鍒涘缓甯愭埛 Wordguru-涓€涓畝鍗曠殑鍙eご娓告垙锛屾偍鍙互鍒嗘垚鍑犱釜灏忕粍锛屽苟灏濊瘯鐚滄祴灏藉彲鑳藉鐨勫叧閿瓧銆?ApiFlash-鍩轰簬Chrome鐨勫睆骞曞揩鐓PI锛屽缓绔嬪湪闈㈠悜寮€鍙戜汉鍛樼殑AWS Lambda涔嬩笂 Kitty Ipsum-鐢熸垚鐢变笉鍚岃瑷€鐨勨€滃柕鈥濈粍鎴愮殑lorem ipsum銆?Git瓒呯骇鏄庢槦-璁$畻鎮ㄧ殑git鏄庢槦鍜岄《绾т粨搴撱€?DECS-鍒嗘暎鐨勫鍚堜竴宸ヤ綔鍖猴紝鐢ㄤ簬绠$悊浠g爜娈靛苟淇濇姢鏁忔劅鏁版嵁銆?Asciiur-浜掕仈缃戠殑ascii鑹烘湳鏀惰棌 Tapestri Designer-鐢ㄤ簬璁捐鐢ㄤ簬鍩哄洜缁勬祴搴忓疄楠岋紙NGS锛夌殑PCR寮曠墿鐨勫厤璐瑰伐鍏?Remote-Access-SSH-浣跨敤node-ssh鐨勫熀浜嶹eb鐨勮繙绋嬩富鏈鸿闂?Map Marker Generator-涓€涓厤璐圭殑鍦ㄧ嚎宸ュ叿锛屽彲鍗虫椂鐢熸垚鑷畾涔夊湴鍥惧浘鏍?Monocle Reader-鍦ㄤ竴涓湴鏂瑰叧娉ㄦ彁瑕侊紝Twitter锛孻ouTube锛屽崥瀹㈠拰鍏朵粬鎵€鏈夊唴瀹广€?鍓嶇珯瀵艰埅-鍓嶇绀惧尯锛屾枃妗f敹褰曘€?Geenes-鐢熸垚璋冭壊鏉垮苟灏嗗叾搴旂敤鍒版偍鐨刄I锛岀劧鍚庡皢鍏跺鍑哄埌鑽夊浘鎴栦唬鐮併€?妯$硦-浣跨敤Vue鍜孍lectron鏋勫缓鐨凪ac / Windows鍔犲瘑鐨凪orning Pages鏃ヨ銆備功鍐欐椂妯$硦锛屽洜姝ゅ彲浠ュ湪鍏叡宸ヤ綔鍖轰腑璁板綍鏃ュ織銆?ExifShot-绮剧編鐨勬憚褰卞唴瀹瑰拰鏂瑰紡銆?Studolog-鐢ㄤ簬瀛︾敓鐨勫湪绾挎枃浠跺叡浜钩鍙帮紝鍖呮嫭娴嬭瘯浜哄憳鍜岃瘎璁恒€傜洰鍓嶅湪鎹峰厠馃嚚馃嚳 鍙銆?sum.cumo 鈥撴暟瀛椾笟鍔℃ā鍨嬶紙浠ue浣滀负鎶€鏈爢鏍堢殑鏍稿績锛夈€?Gamebrary-鐢ㄤ簬缁勭粐瑙嗛娓告垙鏀惰棌鐨勫紑婧愬伐鍏枫€?楂樼骇鎵戝厠宸ュ叿-鎵戝厠鐜╁鐢ㄦ潵瀛︿範鐨勪笢瑗裤€?QMK Configurator-浠庢祻瑙堝櫒閰嶇疆锛屾瀯寤哄拰涓嬭浇鑷畾涔塓MK鍥轰欢銆?Worksome-閫傜敤浜庡悎鏍肩殑IT涓撲笟浜哄憳锛岃嚜鐢辫亴涓氳€呬互鍙婂笇鏈涢泧鐢ㄤ粬浠殑鍏徃鐨勫競鍦?骞冲彴銆?Translator-vuejs-浣跨敤Vuejs锛孻andex API鍜孯esponsiveVoice.js API鏋勫缓鐨勭炕璇戝簲鐢ㄧ▼搴忋€?澶ц鏃跺櫒-鐢ㄤ簬鐮旇浼氾紝浼氳鍜屾紨绀虹殑鍏ㄥ睆鍊掓暟璁℃椂鍣ㄣ€侭ig Timer鍙互甯姪鐮旇浼氫富鎸佷汉锛屼細璁锛岃璁$煭璺戦€夋墜锛屾紨绀鸿€呭拰鏈夋姳璐熺殑娓告垙鑺傜洰涓绘寔浜哄潥鎸佽嚜宸辩殑璁″垝銆?Wirenook-鐢ㄤ簬鏋勫缓鍝嶅簲寮忕綉绔欑嚎妗嗙殑鍏嶈垂鍦ㄧ嚎搴旂敤绋嬪簭銆傞珮淇濈湡鍜屼綆淇濈湡锛岄」鐩叡浜拰svg涓嬭浇銆?Kvalitetskontroll-涓哄缓绛戜笟閲忚韩瀹氬埗鐨勬尓濞佺鐞嗙郴缁熴€?姹犵晹FM-澶嶅彜闊充箰鎾斁鍣?Inoreader.com-鏈€澶х殑RSS闃呰鍣ㄥ拰鏂伴椈鑱氬悎鍣ㄤ箣涓€銆?AwesomeTechStack-缃戠珯鎶€鏈爢鏍堝垎鏋愬櫒 massCode-寮€鍙戜汉鍛樼殑寮€婧愪唬鐮佹绠$悊鍣ㄣ€備娇鐢‥lectron锛孷ue鍜孧onaco缂栬緫鍣ㄨ繘琛屾瀯寤恒€?ClipLeap-鍦ㄩ暱瑙嗛涓彂甯冨拰鍏变韩鏃跺埢鐨勫钩鍙般€?RSVP Keeper-杞绘澗杩涜鍦ㄧ嚎棰勮銆傜珛鍗冲惎鍔ㄦ椿鍔ㄥ苟寮€濮嬭繍琛屻€傜敤Vue and Go鍒舵垚銆?PNGK-涓€瀹跺挩璇㈠叕鍙哥殑瀹樻柟缃戠珯锛岃嚧鍔涗簬涓轰汉閬撲富涔夛紝浜烘潈鍜屽叾浠栧織瓒g浉鎶曠殑缁勭粐瀵绘壘瑙e喅鏂规銆?BMWUSA杞﹁締閰嶇疆鍣?BMWUSA鐨勮溅杈嗛厤缃櫒 Mumbasket-鍏锋湁laravel鍜寁uejs鐨勭數瀛愬晢鍔$綉绔?Fanmio-閫氳繃Fanmio涓婄殑涓汉瑙嗛浣撻獙缁撹瘑鎮ㄦ渶鍠滄鐨勫悕浜?OneConcern 鏉ユ簮 AtomicWallet-澶氳祫浜у姞瀵嗚揣甯侀挶鍖呫€傛闈㈠拰绉诲姩搴旂敤绋嬪簭閮芥槸浣跨敤Vue鏋勫缓鐨勩€?Helpninja-绠€鍗曡€屽揩閫熺殑甯姪鍙?Todo DEV-涓€涓畝鍗曠殑Todo搴旂敤绋嬪簭锛岄€傜敤浜庝娇鐢╒uejs锛孷uetify鍜屽姛鑳藉己澶х殑Firebase鐨勫紑鍙戜汉鍛樸€?36鍍忕礌-娉曞浗浠g悊缃戠珯vue.js鍒朵綔 Vue Spotify-浣跨敤vue.js / vuex鏋勫缓鐨凷potify瀹㈡埛绔?temp - mail.io-涓€娆℃€т复鏃剁數瀛愰偖浠舵湇鍔°€?Best - movies.watch-涓€涓棤闇€娉ㄥ唽鍗冲彲鍏嶈垂鍦ㄧ嚎瑙傜湅鐢靛奖鐨勭綉绔?Tune.pk-Tune.pk鏄渶澶х殑瑙嗛鍏变韩缃戠珯涔嬩竴锛屽叾鍐呭鏉ヨ嚜涓栫晫鍚勫湴銆?Narrandum-浣跨敤Vue.js锛孷uetify鍜孎eathersjs鏋勫缓鐨勫鎴锋梾绋嬫槧灏勫伐鍏?淇濇寔鍏紡-淇濇寔鍏紡鏄竴涓畝鍗曠殑搴旂敤绋嬪簭锛屽彲绠€鍖栨偍鐨勮绠椼€?tato闊充箰鎾斁鍣?閫傜敤浜庝互Vue鍜孷uetify缂栧啓鐨勯煶涔愯糠鐨勭Щ鍔ㄤ紭鍏堬紝鎵嬪啓锛屽搷搴斿紡缃戠粶搴旂敤绋嬪簭銆?ChatterBoxes-鐢ㄤ簬蹇€熺瀵嗚亰澶╀細璇?goonlinetools.com -100锛呭厤璐圭殑鍦ㄧ嚎宸ュ叿缃戠珯銆?CMD Generators鍛戒护琛岀敓鎴愬櫒-閫氳繃鍗曞嚮鎸夐挳鐢熸垚CMD銆傚tar锛宻sh銆傚懡浠よ鍙傛暟澶氫笉鐔熸倝锛熺偣鐐规寜閽氨鑳界敓鎴愬暒锛?缁勫悎绔欑偣-Olaolu Olawuyi锛屽墠绔紑鍙戜汉鍛樺拰UX宸ョ▼甯堢殑缁勫悎绔欑偣銆?Portfolio缃戠珯-David Aji aka Ajiva鏄竴浣嶅墠绔紑鍙戜汉鍛橈紝鍏锋湁浣跨敤Vue鍜孯eact涔嬬被鐨勬鏋舵潵鏋勫缓鈥滅被鈥?Web搴旂敤绋嬪簭鐨勭粡楠屻€?d - patterns.js.org -FOSS Discord妯℃澘鍒楄〃缃戠珯馃挰 linksift.com -LinkSift鍙鎮ㄦ祻瑙堢綉绔欓摼鎺ュ埌鐨勫唴瀹广€?postmake.io-缃戠粶涓婂叕鍙稿拰鍒濆垱鍏徃浣跨敤鐨?00澶氱宸ュ叿鍜岃祫婧愮殑绮鹃€夌洰褰曘€備娇鐢╒ue.js鍜孨uxt鏋勫缓銆?screenshotapi.net-缃戠珯鎴浘API锛屽彲鎹曡幏鍍忕礌瀹岀編鐨勭綉绔欐埅鍥俱€?FontGet-涓嬭浇鍏嶈垂瀛椾綋銆?Travel_Smart-浣跨敤Vue + Vue璺敱鍣? Vuex鐨勫熀浜庢父瑙堢殑Web搴旂敤绋嬪簭銆?鍥界珛鍗敓鐮旂┒闄紙NIH锛夛細FEVS璋冩煡缁撴灉-鍥界珛鍗敓鐮旂┒闄紙NIH锛夌殑鑱旈偊瑙傜偣璋冩煡锛團EVS锛夎皟鏌ョ粨鏋滄暟鎹彲瑙嗗寲銆?U Can Stock-闊╁浗鐨勭編鍥借偂甯備俊鎭钩鍙般€傚畠浣跨敤Vue锛孷uex锛孷uetify锛孨uxt鍜孎irebase鏋勫缓銆?Nipashe- 鈥?Nipashe鈥濇槸鏂摝甯岄噷璇紝鎰忎负鈥滈€氱煡鎴戔€濄€侼ipashe鏄竴涓唴缃簬Vue + Vuex锛堢姸鎬佺鐞嗭級+ Vue-Router锛堝鑸級涓殑缃戠粶搴旂敤绋嬪簭锛屽彲鎻愪緵鏈夊叧褰撳墠鏁翠釜COVID19鎰熸煋鎯呭喌鐨勭粺璁′俊鎭?缁熻淇℃伅涓栫晫鍗敓缁勭粐鐨勪笘鐣?DevSnap.me-涓€涓彲甯姪Web寮€鍙戜汉鍛樻壘鍒板ぇ閲忓厤璐瑰拰寮€婧怘TML锛孋SS鍜孞avaScript璧勪骇鐨勭綉绔欍€?Pexies -Pexies鏄缓绔嬪湪pexels API涓婄殑涓汉鐓х墖搴撱€傛偍鍙互鐪嬪埌绮鹃€夌殑/闅忔満鐨勫浘鐗囷紝骞跺皢鍏舵坊鍔犲埌鏀惰棌澶逛腑銆?Wammes绀肩墿-Wammes绀肩墿鍙互甯姪鎮ㄦ壘鍒版渶瀹岀編鐨勭ぜ鐗┿€?杩斿洖棣栭〉/鍥炲-椋炶鎼滅储寮曟搸锛岀敤浜庡湪COVID-19鏈熼棿浠嶅湪椋炶鐨勪粠涓浗椋炲線娴峰锛堜互鍙婁粠涓浗鍒版捣澶栵級鐨勮埅鐝€?鎴鏃ユ湡-浣跨敤Vue.js鍜宭ocalForage鍒朵綔鐨勭绾匡紝绠€鍗曠殑鎴鏃ユ湡璺熻釜鍣ㄣ€?Scraperbox-鏃犳硶妫€娴嬪埌鐨刉eb鎶撳彇API銆備娇鐢↙aravel鍜孷ue鏋勫缓銆?浜掑姩浣撻獙 YouTube AdBlitz 2016 鍏ㄦ柟浣嶄綋楠?璺槗路瀹夎惃锛堢綉绔欙級 Djeco.com Tolks.io NOIZE鍘熷 TR-101鍚堟垚榧撴満 Bootstrap 4缂栬緫鍣?Subtletab-娴忚鍣ㄦ墿灞?web-riimote-灏嗘偍鐨勬櫤鑳芥墜鏈哄彉鎴?D鎺у埗鍣紙婧愪唬鐮侊級 CSS ColorVars-浜や簰寮忓伐鍏蜂唬鐮佺敓鎴愶紙婧愪唬鐮侊級 鍐茬獊鏈熼棿鐨勫鐏?鎺㈢储鍐茬獊鍥藉鍦ㄥ鍏夎緭鍑烘柟闈㈢殑GIS鏁版嵁銆?鐢ㄦ埛鍙嬪ソ鐨勫徃娉曟暟鎹?娴忚鏉ヨ嚜鎽╂礇鍝ョ殑鍙告硶鏁版嵁銆?浜嬬墿-鐢╒ue鍒朵綔鐨勫懠鍚歌繍鍔ㄥ拰鍐ユ兂缃戠粶搴旂敤绋嬪簭銆?浼佷笟鐢ㄩ€?闃块噷宸村反 鐧惧害 鏂版氮寰崥 灏忕背 Ele.me 浼樺寲鍦?Expedia UCWeb 绾?浠诲ぉ鍫?濉炲皵鐗规媺 濉炴仼鏂集閲岀殑 闃块浄鍏嬫柉 澶х枂鍒涙柊 Octimine GmbH 娴戝姏闆?浜氭悘浣撹偛app 鍏嬭幈闂ㄦ牸BBDO澧ㄥ皵鏈?ZenMate 浠e彿 鏁呬簨鍧?Monito-寤虹珛Booking.com杩涜鍥介檯姹囨 Hypefactors-閽堝鏁版嵁椹卞姩鐨凱R涓撲笟浜哄憳鐨勮蒋浠?鍦熷澂 IBM鍏徃 Cotabox Aromajoin-鍦ㄧ‖浠讹紝杞欢鍜屾潗鏂欐妧鏈殑鍗忚皟鍩虹涓婂紑鍙戞渶濂界殑鏁板瓧姘斿懗浜у搧銆?瀹朵箰绂?鏂彴鏅柉鍔犳嬁澶?甯冨埄 鏇兼潨鍗?A11y Vue A11y椤圭洰-Vue.js绀惧尯椤圭洰锛岀敤浜庢敼鍠刉eb鍙闂€с€?vue-skip-to-甯姪浠呬娇鐢ㄩ敭鐩樼殑浜鸿烦鍒版渶閲嶈鐨勫湴鏂广€?vue-axe -Vue.js搴旂敤绋嬪簭鐨勫彲璁块棶鎬у鏍搞€?vue-announcer -Vue鐨勪竴绉嶇畝鍗曟柟娉曪紝鍙互涓哄睆骞曢槄璇诲櫒瀹e竷浠讳綍鏈夌敤鐨勪俊鎭€?eslint-plugin-vue-a11y-.vue涓厓绱犵殑鍙闂€ц鍒欑殑闈欐€丄ST妫€鏌ュ櫒 vue-focus-lock-杩欐槸涓€涓櫡闃憋紒鐒︾偣閿佸畾銆侫11y util锛岀敤浜庣‘瀹氱劍鐐广€?vue-a11y-calendar-鍙闂殑鍥介檯鍖朧ue鏃ュ巻銆?缁勪欢鍜屽簱 UI缁勪欢 琛?琛?鏁版嵁缃戞牸

vuetable-2-绠€鍖栨暟鎹〃銆?vue-tables-2 -Vue.js 2缃戞牸缁勪欢銆?vue-datasource-涓€涓獀ue.js鏈嶅姟鍣ㄧ缁勪欢锛岀敤浜庡垱寤哄姩鎬佽〃銆?ag-grid-vue-鐢ㄤ簬ag-Grid鐨刅ue閫傞厤鍣ㄣ€?vue-data- tables-鍩轰簬element-ui鐨刅ue2.0 DataTables銆?vue-floatThead-floatThead鐨刅ue 2.0缁勪欢锛宖loatThead鏄竴涓诞鍔ㄧ殑绮樻€ц〃澶存彃浠躲€?vuetiful-datatable-鍏锋湁鎺掑簭锛岃繃婊わ紝鍒嗛〉锛屽垎缁勫拰鑱氬悎鐨勬暟鎹〃缁勪欢銆?vue-materialize-datatable -Materialize CSS鐨刅ueJS鏁版嵁琛?vue-good- table-涓€涓槗浜庝娇鐢ㄧ殑VueJS锛?.x锛夎〃鎻掍欢锛屽叿鏈夋帓搴忥紝鍒楄繃婊わ紝鍒嗛〉绛夊姛鑳姐€?vue-grid -Vue.js鐨勭伒娲荤綉鏍肩粍浠?vue-easytable-鍩轰簬Vue2.x鐨勫姛鑳藉己澶х殑琛ㄧ粍浠?vue2-datatable-component-姘镐笉杩囨椂鐨刅ue.js 2.x鏈€浣虫暟鎹〃 vue-js- grid-鍏锋湁骞虫粦鎺掑簭锛屾嫋鏀惧拰閲嶆柊鎺掑簭鐨刅ue.js 2.x鍝嶅簲寮忕綉鏍肩郴缁?vue-handsontable-official鐢ㄤ簬Handsontable鐢靛瓙琛ㄦ牸缁勪欢鐨刅ue.js鍖呰鍣?vue- grid-鐢ㄤ簬Vue.js 2.x鐨勫姛鑳藉己澶х殑flexbox缃戞牸绯荤粺锛屼娇鐢ㄥ唴鑱旀牱寮忔瀯寤?vue-data-tablee-鍩轰簬vue-good-table锛屼竴涓畝鍗曟紓浜殑琛ㄧ粍浠?vue-scrolling- table-绠€鍗曠殑琛ㄦ牸缁勪欢锛屽叿鏈塮lexbox澶у皬锛屾粴鍔ㄧ殑琛ㄦ牸涓讳綋锛堟按骞冲拰鍨傜洿锛夛紝鐢ㄤ簬鎵€鏈塼r / th / td娓叉煋鐨勬彃妲姐€?el-search-table-pagination-灏咵lement UI鐨凢orm锛孴able鍜孭agination缁勪欢缁勫悎鍦ㄤ竴璧枫€傚熀浜嶸ue 2.x.锛堣缁嗭級 vue-crud-x-浣跨敤Vuetify甯冨眬鐨勫彲鎵╁睍crud缁勪欢锛岄櫎浜嗛€氬父鐨勯〉闈紝鎺掑簭锛岃繃婊ゅ櫒涔嬪锛屽畠杩樺彲浠ユ墽琛屽祵濂楃殑CRUD锛岃嚜瀹氫箟琛ㄥ崟锛岃繃婊ゅ櫒锛屾搷浣溿€?Vue鏁版嵁琛?鍏锋湁Laravel鏈嶅姟鍣ㄧ鍔犺浇鍜孞SON妯℃澘璁剧疆鐨刅ueJS椹卞姩鐨勬暟鎹〃 v2-table-涓€涓熀浜嶸ue 2.x鐨勭畝鍗曡〃缁勪欢銆?vue-cheetah- grid-鍦╒ue.js鐨勭敾甯冧笂宸ヤ綔鐨勯珮鎬ц兘缃戞牸寮曟搸銆?vue-table-component-鐩存帴鎸囧悜瑕佹樉绀鸿〃鐨刅ue缁勪欢銆?@ lossendae / vue-table -Vue.js 2.x鐨勭畝鍗曡〃缁勪欢锛屽叿鏈夊垎椤靛拰鍙帓搴忕殑鍒椼€?el-data- table-鍩轰簬element-ui锛屽緢瀹规槗 DevExtreme Vue缃戞牸-鐢ㄤ簬Bootstrap鐨勫熀浜庢彃浠剁殑楂樻€ц兘Vue鏁版嵁缃戞牸銆?vue-ads-table-tree -vue琛ㄧ粍浠讹紝鍏锋湁杩囨护锛屾帓搴忓拰鍒嗛〉鍔熻兘銆傝鍙互鍏锋湁瀛愯锛屽洜姝ゅ彲浠ユ瀯寤烘爲缁撴瀯銆傚畠杩樻敮鎸佸紓姝ヨ皟鐢ㄤ互浠庡悗绔姞杞借銆傚畠鏄娇鐢–SS妗嗘灦鏋勫缓鐨則ailwindcss @ marketconnect / vue-pivot-table-鏁版嵁閫忚琛ㄧ殑vue缁勪欢 vue-teible-鐢ㄤ簬Web鐨勮交宸х伒娲荤殑琛ㄦ牸缁勪欢鈿?vue-jqxgrid-鍏锋湁杩囨护锛屾帓搴忥紝缂栬緫锛屽垎缁勶紝鏁版嵁瀵煎嚭鍜屽叾浠栧姛鑳界殑Vue鏁版嵁缃戞牸銆?vue-jqxpivotgrid-鍏锋湁鏋㈣酱璁捐鍣ㄧ殑Vue鏋㈣酱鏁版嵁缃戞牸锛岄捇鍙栧崟鍏冩牸锛屾灑杞村姛鑳姐€?toast-ui.vue-grid - TOAST UI Grid鐨刅ue鍖呰鍣ㄣ€?vueye-datatable -Vueye鏁版嵁琛ㄦ槸鍩轰簬Vue.js 2鐨勫搷搴旀暟鎹〃缁勪欢锛屽畠鎸夐〉闈㈢粍缁囨暟鎹互渚夸簬瀵艰埅銆?vue-sorted-table-灏嗚〃杞崲涓烘帓搴忚〃鐨勬彃浠躲€傛敮鎸佸祵濂楃殑瀵硅薄閿紝鑷畾涔夊浘鏍囧拰鍙噸鐢ㄧ粍浠躲€?vue-bootstrap4-table-鍩轰簬Vue 2鍜孊ootstrap 4鐨勯珮绾ф暟鎹〃锛屽叾涓寘鎷鍒楄繃婊わ紝澶氬垪鎺掑簭锛屽垎椤靛拰淇℃伅锛屽閫夋琛屽拰楂樺害鍙畾鍒剁殑鎻掓Ы閫夐」銆?vuejs-smart-table-浣跨敤棣欒崏HTML琛ㄧ粨鏋勭殑鐩存帴琛ㄧ粍浠讹紝鍏锋湁寮€绠卞嵆鐢ㄧ殑鎺掑簭锛岃繃婊わ紝鍒嗛〉鍜岄€夋嫨鍔熻兘銆?@ myena / vue-table-鐢ㄤ簬瀹㈡埛绔?鏈嶅姟鍣ㄦ暟鎹鐞嗙殑琛ㄧ粍浠躲€傜瓫閫夛紝鎺掑簭锛屽垎椤碉紝鍒嗙粍锛屽睍寮€璇︾粏淇℃伅琛屻€傞珮搴﹀彲瀹氬埗鐨勯€氬瓟锛岀敤浜庤繃婊ゅ櫒锛屾爣棰橈紝鍒楋紝鍒嗛〉锛岃缁嗕俊鎭銆?vue-jd-table -Vue 2鐨勯珮绾х伒娲绘暟鎹〃缁勪欢銆傚姛鑳戒赴瀵岋細鎼滅储锛岃繃婊わ紝瀵煎嚭锛屽垎椤碉紙浼犵粺鍜岃櫄鎷熸粴鍔級绛夌瓑锛?iview-table-page-灏唅view UI鐨凾able鍜孭age缁勪欢缁勫悎鍦ㄤ竴璧枫€傚熀浜嶸ue2.x銆傚苟鍚埌浜嗕竴浜涗娇鐢╥view-table-page鐨勭ず渚嬨€?fancy-grid-vue -FancyGrid鐨刅ue閫傞厤鍣ㄣ€?vue-table-dynamic-鍏锋湁鎺掑簭锛岃繃婊わ紝缂栬緫锛屽垎椤碉紝澶氶€夌瓑鍔熻兘鐨勫姩鎬佽〃銆?vue-quintable-鍩轰簬Vue 2.x鍜孊ootstrap 4.x鐨勫搷搴斿紡锛岄珮搴﹀彲閰嶇疆鐨勮〃 Vue缃戞牸鍝嶅簲-鍩轰簬Bootstrap for Vue 2.x鐨勫搷搴旂綉鏍肩郴缁熴€?vue-js-datatable-閫傜敤浜巇atatables.net鐨刅ueJS杞婚噺鍖呰鍣╠atatable缁勪欢 bee-grid-table -BeeGridTable锛屾槸涓€涓熀浜嶸ue.js鐨勯珮搴﹀彲瀹氬埗鐨凾able UI缁勪欢搴撱€傚姛鑳戒赴瀵岋紝鏁堢巼鏇撮珮锛屾槗浜庝娇鐢紒 vue-datagrid -Vue缃戞牸鍖呰鍣紝鐢ㄤ簬寮哄ぇ鐨刉eb缁勪欢revo-grid锛屽叿鏈夎濡備赴瀵岀殑缂栬緫鍜岃涓轰箣绫荤殑excel銆?element-ui-sticky- table-瀵逛簬element-ui琛ㄧ殑绮樻€?閫氱煡 鐑ら潰鍖呮満/灏忓悆搴椻€旈€氳繃鏃犳ā寮忕殑涓存椂灏忓脊鍑虹獥鍙i€氱煡鐢ㄦ埛

vue-notifications -Vue.js涓嶅彲鐭ョ殑闈為樆濉為€氱煡搴撱€?vue-easy-toast -vue / vue2鐨凾oast鎻掍欢銆?vue- toasted-閫傜敤浜嶸ueJS鐨勫搷搴斿紡瑙︽懜鍏煎Toast鎻掍欢銆?vue-notifikation -Vue.js閫氱煡鎻掍欢銆?vue-notification-Velocity鐢ㄤ簬鍔ㄧ敾鐨刅ue.js 2+閫氱煡鎻掍欢銆?vs-notify-寰皬浣嗗姛鑳藉己澶х殑閫氱煡缁勪欢锛屾病鏈変緷璧栭」銆?vue2-notify -Vue.js 2+閫氱煡鎻掍欢銆?vue-notifyjs-鏋佺畝涓讳箟锛?kb鍙€氱煡鎻掍欢 vueup - Vue.js鐨勭畝鍗曪紝杞诲阀鍜屼紭闆呯殑鍏ㄥ眬閫氱煡寮瑰嚭绐楀彛 vuex-flash -Vuex 2.x涓璙ueJS 2.x鐨凢lash娑堟伅缁勪欢銆?vue-snotify -Vue.js 2閫氱煡涓績 vue-notify-me -Vue鐨勫彲鍫嗗彔閫氱煡璀︽姤 vue- noty-鍥寸粫Noty鐨刅ue.js 2鍖呰鍣?vue- notice-浣跨敤鏈満API鍥寸粫Noty.js鐨刅ue.js 2鍖呰鍣?vue-flash-message-绠€鍗曡€岀伒娲荤殑閫氱煡鎻掍欢 @ voerro / vue-notifications-鍏锋湁HTML鍜屾牱寮忔敮鎸佺殑绠€鍗昖ue.js 2閫氱煡鎻掍欢銆?vue-awesome-notifications-鍏锋湁楂樼骇寮傛鏀寔鐨勮交閲忕骇Vue.js閫氱煡搴撱€?vue-izitoast-IziToast鍛ㄥ洿鐨刅ue.js 2鍖呰鍣ㄣ€?vue-toastr-2-鍩轰簬Toastr鏋勫缓鐨刅ue.js鐨勭畝鍗昑oast閫氱煡 vue- snack-鍩轰簬Google Material鐨凷nackbars鐨刅ue.JS鎻掍欢銆?vue-m-message -vue鐨勬秷鎭彃浠躲€?vue-notification- bell-鐢ㄤ簬鏄剧ず閫氱煡鐨刅ue UI缁勪欢銆?v-tostini -Vue.js 2.x鐨勭湡姝g函鍦熷徃閫氱煡鏈哄埗銆備笉鍖呮嫭CSS銆?vue-toast-notification-鍙︿竴涓猇ue.js Toast閫氱煡鎻掍欢銆?VueToastify-涓€涓ぇ鎯婂皬鎬殑鍏嶈垂閫氱煡缁勪欢銆?vue-toastification -Vue杞诲阀锛岀畝鍗曪紝缇庤鐨勫悙鍙?@ smartweb / vue-flash-message-鍚戠敤鎴锋樉绀哄崟涓垨澶氫釜Flash娑堟伅鐨勭粍浠?vue-notification-鍏锋湁Material Design鏍峰紡涓斿甫鏈夐槦鍒楃殑鏁存磥缇庤鐨勯€氱煡绯荤粺馃啎 闈㈠寘妫?馃殌 鐢ㄤ簬鑷畾涔塚ue閫氱煡鐨勭畝鍗曠伒娲荤殑瀹氫綅锛屽爢鍙犲拰瑙f暎API銆?vuetify-toast-snackbar-鍏锋湁闃熷垪鏀寔鐨刅ue.JS Toast鏈嶅姟锛岃鏈嶅姟浣跨敤Vuetify鐨勨€?Snackbar鈥濈粍浠躲€?vue-toaster -Vue 3鐨刅ue.js鍚愬徃閫氱煡鎻掍欢 vue-notification- ui-浣跨敤Vue.js杞绘澗鎺ㄩ€侀€氱煡UI vue-my-toasts-鎻愪緵鎮ㄧ殑缁勪欢锛岃鎴戜滑鐑ら潰鍖呫€?瑁呰浇鏈?鍔犺浇绋嬪簭/寰皟鍣?杩涘害鏉♀€旇鐢ㄦ埛鐭ラ亾姝e湪鍔犺浇鏌愪簺鍐呭

vue-radial-progress -Vue.js鐨勫緞鍚戣繘搴︽爮缁勪欢銆?vue-simple-spinner -Vue.js鐨勭畝鍗曠伒娲荤殑寰皟鍣?vue-wait -Vue / Vuex鍜孨uxt搴旂敤绋嬪簭鐨勫鏉傚姞杞界▼搴忕鐞嗐€?vue-progress- path-鏀寔浠讳綍鑷畾涔塖VG璺緞鐨勫彲鑷畾涔夎繘搴︽寚绀哄櫒鍜屽井璋冨櫒銆?vue-blockui -vue 2鐨凚l鈥嬧€媜ckUI锛岀被浼间簬jquery blockUI锛屽彲鐢ㄤ簬鍔犺浇灞忓箷銆?epic- spinners-鍏锋湁vue.js闆嗘垚鐨勬槗鐢╟ss spinners闆嗗悎銆?svg-progress-bar -Vue.js鐨勭畝鍗曡繘搴︽潯銆?vue-loading-overlay-寰皬鐨勫叏灞忚浇鍏ユ寚绀哄櫒 vue- loaders-鐢ㄤ簬loaders.css鐨剉ue鍖呰鍣?vue-promise-btn-寰瀷涓斿姛鑳藉己澶х殑宸ュ叿锛岀敤浜庡甫鏈夊唴缃唴缃井璋冨櫒鐨勫紓姝ユ寜閽紙鎴栦换浣曞叾浠栨爣绛撅級閿佸畾 VUE-spinkit -馃寛 VueJS鐨凜SS鍔ㄧ敾鍔犺浇鎸囨爣闆嗗悎 vue2-form-loading -VueJS鎸囦护鍙笌琛ㄥ崟涓€璧蜂娇鐢紝浠ュ湪鍔犺浇涓嬩竴椤垫椂绂佺敤鎻愪氦鎸夐挳 Vue鍏冪礌鍔犺浇-鈴?鍦ㄥ鍣ㄤ腑鍔犺浇鎴栧叏灞忔樉绀篤ue.js tb-skeleton -Vue.js鐨勯鏋跺睆骞曞姞杞?鍙扮悆绾?馃挮 Vuejs鐨勫姞杞藉井璋冨櫒缁勪欢闆嗗悎 vue-progress-bar-杩欐槸鍩轰簬vue鐨勭骇鑱旇繘搴︽潯鎻掍欢 VUE鍔犺浇鎸夐挳-馃憞 甯︽湁婊戝叆寮忚杞芥寚绀哄櫒鐨勭畝鍗曟寜閽?鎻愮ず鍔犺浇-馃攧 璇锋眰API鏃跺睆钄介〉闈?vue-preloaders-闅忔椂闅忓湴灏嗘偍鐨刾reloader杞绘澗闄勫姞鍒颁换浣曞厓绱?vue-ellipse-progress-鐏垫椿鐨刅ue.js缁勪欢锛岀敤浜庡垱寤虹簿缇庣殑鍔ㄧ敾鍦嗗舰杩涘害鏉″拰鍔犺浇鍣?vuesence-cloud-sync-button-鍔ㄧ敾鎸夐挳锛屼篃鍙互鐢ㄤ綔浜戝悓姝ヨ繘搴︽爮 vue-ui-preloader-甯︽搷鍦虹殑vue.js椤圭洰鐨勯鍔犺浇鍣ㄧ粍浠躲€?vue- splash-涓€涓畝鍗曡€岄叿鐐殑vue.js鎻掍欢馃挦 vue-ultimate-skeleton-cards -Vue鐨勭粓鏋侊紝瀹屽叏鍙畾鍒剁殑Skeleton Card鎻掍欢馃殌 杩涘害鏉?椤甸潰椤堕儴鐨勭粏闀胯繘搴︽潯

vue-progressbar-鐢ㄤ簬vue鐨勮交閲忕骇杩涘害鏉°€?vue2-loading-bar-鏈€绠€鍗曠殑Youtube锛屽Vue 2鐨勫姞杞芥潯缁勪欢銆?vue-top-progress -Vue.js鐨勫彟涓€涓《绾ц繘搴﹀姞杞芥爮缁勪欢銆?vue-nprogress-杩涘害鏉″熀浜嶸ue鐨刵progress銆?vue-progress-button -Vue.js 2.x鍔ㄧ敾鎸夐挳缁勪欢銆?vue-simple-progress -Vue.js鐨勭畝鍗曪紝鐏垫椿鐨勮繘搴︽爮 vue-component-loading-绠$悊姣忎釜缁勪欢鍐呴儴鐨勫姞杞界姸鎬侊紝骞朵娇鐢ㄨ繘搴︽潯鏄剧ず鍏ㄥ眬鍔犺浇鐘舵€併€?vue-scroll-progress-鐢ㄤ簬椤甸潰婊氬姩杩涘害鏉$殑绠€鍗昖ue.js鎻掍欢 vue-read-progress-椤甸潰椤堕儴鐨勫彲鑷畾涔夎繘搴︽潯锛屾樉绀烘粴鍔ㄨ繘搴?绠€鏄撳惊鐜繘搴?鍏锋湁璁℃暟鏁堟灉鐨勭畝鏄撳惊鐜繘搴︾粍浠?vue-twitter-counter -Vue鍦═witter涓惎鍙戜簡璁℃暟鍣ㄧ粍浠?vue-ins-progress-bar -ins椋庢牸杩涘害鏉$殑Vue缁勪欢鍗曚釜ins椋庢牸鐨剉ue杩涘害鏉$粍浠?宸ュ叿鎻愮ず 宸ュ叿鎻愮ず/寮瑰嚭绐楀彛

v-tooltip -Vue 2.x鐨勭畝鍗曞伐鍏锋彁绀恒€?vue-popper-component -Vue.js鐨凱opper.js鎸囦护銆?vue-directive- tooltip-绠€鍗曪紝鐏垫椿鐨勫伐鍏锋彁绀烘寚浠わ紙鍩轰簬Popper.js锛塚ue.js vue-popperjs -VueJS 2.x popover缁勪欢 vue-tooltipster -VueJS 2.x宸ュ叿鎻愮ず缁勪欢銆傛敮鎸乭tml鍐呭锛屾偓鍋滃拰鎮仠+鍗曞嚮浜嬩欢銆?k- pop-鍩轰簬popper.js鐨勭畝鍗昿opover缁勪欢銆傞珮搴﹀彲瀹氬埗鐨勩€傚甫鏈変富棰樸€傛敮鎸佽嚜瀹氫箟瑙﹀彂鍣紝骞朵笖鍙互鐩戝惉浠讳綍浜嬩欢銆?@ adamdehaven / vue-custom-tooltip -Vue鐨勫彲鑷畾涔夛紝鍙嶅簲寮忓拰鍙噸鐢ㄧ殑宸ュ叿鎻愮ず缁勪欢锛屾敮鎸佸涓敤渚嬶紝鎻掍欢閫夐」鍜岄亾鍏枫€備篃鍙敤浜嶴SR锛堜緥濡俈uePress锛夈€?瑕嗙洊 鍙犲姞/妯℃€?璀︽姤/瀵硅瘽妗?鐏/寮瑰嚭绐楀彛

vuedals-涓€涓猇ueJS锛?.x锛夋彃浠讹紝鐢ㄤ簬鍏锋湁鍗曚釜缁勪欢瀹炰緥鐨勫涓ā鎬佺獥鍙c€?sweet-modal-vue-鏈€鐢滅編鐨勬ā鎬佸簱銆傜幇鍦ㄥ彲鐢ㄤ簬Vue.js銆?vue-js- modal-绠€鍗曟槗鐢紝楂樺害鍙畾鍒讹紝绉诲姩鍙嬪ソ鐨刅ue.js 2.0+妯℃€侊紝鍏锋湁0涓緷璧栭」銆?vudal - vue.js鐨勬ā鎬佺獥鍙?vodal-鍏锋湁鍔ㄧ敾鐨刅ue妯℃€併€?vue-image-lightbox-涓€涓猇ue鍥惧儚鐏/鍥惧簱锛屽彲浠ュ緢濂藉湴鏄剧ず鍥惧儚銆?vue2-simplert -Vue 2绠€鍗曡鎶ョ粍浠讹紙鍙桽weetAlert鍚彂锛夛紝浣滆€咃細Irfan Maulana Vue-Semantic-Modal-涓嶅叿鏈塲Query渚濊禆鍏崇郴鐨刅ue 2 Semantic-UI妯℃€佺粍浠?v-img-鏄撲簬瀹夎鐨勫浘鍍忓簱銆?vue-dialog- drag-鍙嫋鍔ㄥ璇濇 vue-ya-semantic-modal -Vue2鐨勫彟涓€涓涔?ui妯℃€佺粍浠讹紝娌℃湁Jquery浣嗘湁Vue杞崲 vue-pure-lightbox-闈炲父绠€鍗曠殑鐏鎻掍欢锛屾病鏈変换浣曚緷璧栧叧绯?浠匳ue锛侌煐?v-viewer -vue鐨勫浘鍍忔煡鐪嬪櫒缁勪欢锛屽熀浜巚iewer.js鏀寔鏃嬭浆锛岀缉鏀撅紝缂╂斁绛?vue-messagebox -Vue涓婃槗浜庡畾鍒剁殑娑堟伅妗嗙粍浠躲€?vuejs-dialog-涓€涓交閲忕骇鐨勶紝鍩轰簬鎵胯鐨勮鎶ワ紝鎻愮ず鍜岀‘璁ゅ璇濇銆?@ hscmap / vue-window -vue2鐨勭獥鍙I缁勪欢銆?vue-gallery -VueJS鍝嶅簲寮忓拰鍙嚜瀹氫箟鐨勫浘鍍忓拰瑙嗛搴擄紝杞挱鍜岀伅绠憋紝宸查拡瀵圭Щ鍔ㄥ拰妗岄潰Web娴忚鍣ㄨ繘琛屼簡浼樺寲銆傚熀浜巄lueimp-gallery vue-swal-鐢ㄤ簬灏哠weetAlert闆嗘垚鍒癡uejs鐨勫皬鍨嬪寘瑁呭櫒銆傦紙涓嶴SR鍏煎锛?VUE妯℃€佺殑瀵硅瘽妗?鉁?鎵胯鑷繁鐨勫璇濇锛?vue-img-view -Vue.js鐨勬彃浠讹紝鎮ㄥ彲浠ュ湪浠讳綍鍦版柟鎷栧姩/鏌ョ湅/鏃嬭浆鍥剧墖 vue-modaltor-vuejs鐨勬渶鍏堣繘鐨勫彲閰嶇疆妯″紡缁勪欢 v-modal-backdrop -vue鐨勭畝鍗曢€氱敤鑳屾櫙缁勪欢 vue-cute-modal-鐢ㄤ簬Vue搴旂敤绋嬪簭鐨勭畝鍗曟槗鐢ㄧ殑Modal缁勪欢銆?v- dialogs-涓€涓畝鍗曡€屽己澶х殑瀵硅瘽妗嗭紝鍖呮嫭鍩轰簬Vue2.x鐨凪odal锛孉lert锛孧ask鍜孴oast妯″紡 vue-gallery-slideshow -VueJS鐨勫搷搴斿紡鐢诲粖缁勪欢 vue-a11y- dialog-鐢ㄤ簬鍙闂璇濇鐨刅ue.js缁勪欢鍖呰a11y-dialog銆?vue-slideout-panel-VueJS鐨勫彲鍫嗗彔闈㈡澘缁勪欢 v- gallery-鐢ㄤ簬鍦╣allery鎴栦腑鏄剧ず鍥惧儚鐨刅ue2鎻掍欢carousel vue2-image-loader -vue2鐨勫浘鍍弆azyLoad loader缁勪欢 vue-my-photos-鍏锋湁杩囨护鍔熻兘鐨勭畝鍗曟棤渚濊禆鍥惧儚鐏缁勪欢 vue-img-orientation- changer-涓€涓猇ue.js directive锛屽彲鑷姩灏嗘偍璋冩暣img涓烘纭畂rientation銆?vue-topmodal-瀹屽叏鍙畾鍒剁殑锛屾槗浜庝娇鐢ㄧ殑Vue.js妯℃€佺粍浠躲€傦紙鑷€傚簲锛屽彲鍫嗗彔锛屽彲婊氬姩锛屽姩鐢伙級 璇€?馃柤-涓哄涓彲鍒囨崲妯″紡鍐呭杈撳叆瀵硅薄鏁扮粍鎴栧揩閫熷唴鑱旀偍鐨勫唴瀹广€傚畬鍏ㄥ彲瀹氬埗鐨刅ue妯℃€佺粍浠躲€?@ innologica / vue-stackable-modal-鍙互鍫嗗彔鐨勬ā鎬佸璇濇搴撱€傚畬鍏ㄥ彲瀹氬埗涓旈潪甯告槗浜庝娇鐢ㄣ€?vue-sweetalert2-Shoelaert2鐨勫寘瑁呭櫒锛屾敮鎸乀ypeScript锛孨uxt鍜孲SR vue-modality-涓€涓潪甯稿ソ鐨刅ue.js妯℃€佺粍浠?vue-tinybox-灏忓阀锛堝帇缂╁悗鍙湁2.5 KB锛変笖鍏夋粦鐨勭伅绠卞浘搴撱€傞拡瀵瑰彴寮忔満鍜岀Щ鍔ㄨ澶囪繘琛屼簡浼樺寲銆?vue-accessible- modal-鍦ㄧ粍浠朵笂鐨刅ue.js鍙闂ā寮忓寘瑁呭櫒銆?vuetify-dialog-鏄撲簬浣跨敤Vuetify鐨勫璇濇銆?vue-hawesome- modal-鍩轰簬Vuetify鍜孷uex鐨刅ue鎵胯妯℃€佺粍浠舵彃浠躲€?xmodal-VUE -馃殌 涓€涓畝鍗曟槗鐢ㄧ殑鍖呰鍣紝鍙互甯姪鎮ㄤ粠缁勪欢涓垱寤鸿嚜瀹氫箟鍜屽姩鎬佹ā鎬併€?@ kouts / vue-modal-涓€涓彲鑷畾涔夛紝鍙爢鍙犱笖杞婚噺绾х殑妯″紡缁勪欢锛岄伒寰猈3C鐨勨€?WAI-ARIA瀵硅瘽妗嗭紙妯″紡锛夆€濋儴鍒嗕腑璁剧疆鐨勫噯鍒欍€?vue-final-modal灏鹃鍙嬪ソ锛岄珮搴﹀彲瀹氬埗鐨勶紝鍙爢鍙犵殑妯″紡缁勪欢銆?vuesence-modal-window-绠€鍗曠殑Modal绐楀彛Vue.js缁勪欢锛岀敤浜庡鐞嗚鐩栵紝灞呬腑锛屽姩鐢伙紝澶栭儴鍗曞嚮/Escape閿?X-mark鍏抽棴锛屽苟浣挎偍浠呬笓娉ㄤ簬鍏跺唴瀹广€?瑙嗗樊 vue-parallax-浠ユ瘮绐楀彛鎱㈢殑閫熷害婊氬姩鍥惧儚浠ュ垱寤烘暣娲佺殑鍏夊鏁堟灉銆?vue-parallaxy-鐢ㄤ簬瑙嗗樊鍥惧儚婊氬姩鏁堟灉鐨刅ue.js缁勪欢銆?vue-mouse-parallax-涓€涓槗浜庝娇鐢ㄧ殑榧犳爣瑙嗗樊缁勪欢-鐢盫ue.js鍒舵垚 vue-parallax-js-寰皬鐨剉ue缁勪欢锛屼负鍏冪礌涓婄殑瑙嗗樊鏁堟灉娣诲姞浜嗘寚浠ゃ€?vue-parallax-view-鍒涘缓涓€涓鍚堟帶浠讹紝璇ユ帶浠舵樉绀哄榧犳爣绉诲姩鏈夊弽搴旂殑涓嶅悓鍥惧儚浠ュ垱寤烘繁搴︽晥鏋?鍥剧ず vue-awesome -Vue.js鐨凢ont Awesome缁勪欢锛屼娇鐢ㄥ祵鍏ュ紡SVG銆?vue-material-design-icons -SVG Material Design鍥炬爣鐨勯泦鍚堬紝浣滀负鍗曚釜鏂囦欢缁勪欢銆?vue-icon-font -Vuejs鐨刬confont鎻掍欢锛堟敮鎸丗ont-class鍜孲ymbol锛夈€?vue-ionicons-鏉ヨ嚜绂诲瓙鍥㈤槦鐨刅ue鍥炬爣闆嗙粍浠躲€?vue-ico-鍏锋湁宓屽叆寮忔祻瑙堝櫒鏀寔鍜岄€夋嫨鎬ф崋缁戝姛鑳界殑Vue姝荤畝鍗曞浘鏍?mdi-vue -Vuejs鐨勬潗鏂欒璁″浘鏍囩粍浠?vue-fontawesome -Font Awesome 5 Vue缁勪欢 g- icon-鐢ㄤ簬svg鍥炬爣鐨勭畝鍗曞浘鏍囩粍浠讹紙涓庣被浼间簬Font Awesome鐨勫瓧浣撳伐鍏峰寘鍏煎锛?vue-simple-line-icons -Vuejs鐨勭畝鍗曠嚎鍥炬爣缁勪欢 vue-country- flag-鍥藉鏍囪鍥炬爣鐨刅ue缁勪欢 濞佸悍-濞佸悍涓篤UE涓€涓畝鍗昳confont缁勪欢銆?md-svg-vue -Google涓篤ue.js鍜孨uxt.js璁捐鐨凪aterial Design鍥炬爣锛堟湇鍔″櫒绔敮鎸侊紙甯︽湁缂撳瓨锛夛紝鍐呭祵svg娓叉煋锛屽畼鏂瑰浘鏍囧悕绉帮級 vue-lang-code-flags -Vue缁勪欢锛屾樉绀鸿瑷€鏉ユ簮鐨勫浗瀹?鍦板尯鐨勬爣蹇?vue-zondicons-缇庝附鐨刏ondicon svg鍥炬爣鐨刅ue缁勪欢 vue-eva-icons-绠€鍗曟紓浜殑寮€婧恊va鍥炬爣浣滀负Vue缁勪欢銆?vue-unicons-涓嬩竴涓」鐩殑1000+鍍忕礌瀹岀編svg unicon浣滀负Vue缁勪欢銆?vue- fa-绠€鍗曠殑FontAwesome 5 Vue.js 2缁勪欢銆?vue-cryptoicon-缇庝附鐨勫儚绱犲畬缇庣殑400+鍔犲瘑璐у竵鍜?0+鑿蹭簹鐗硅揣甯佸浘鏍囥€?vue-hero- icons-涓€缁勬潵鑷狜 refactoringui / heroicons鐨勯珮璐ㄩ噺SVG鍥炬爣锛屼綔涓篤ue鍔熻兘缁勪欢銆?vue-heroicons -104涓珮绾eroicons UI svg鍥炬爣鐨刅ue缁勪欢 vue-tabler-icons - Tabler Icons SVG鍥炬爣鐨刅ue缁勪欢銆?閫夋 vue-dynamic-marquee-瀛楀箷缁勪欢锛屽畬鍏ㄥ搷搴斿姩鎬佸彉鍖栥€?鑿滃崟 vue-accordion -Vue.js鐨勭畝鍗曟墜椋庣惔瀵艰埅鑿滃崟缁勪欢銆?vue-js-dropdown -Vue.js 2涓嬫媺鑿滃崟缁勪欢銆傝交宸э紝鏄撲簬浣跨敤鍜屾墿灞曪紝鏃犲閮ㄧ己闄枫€?vue-slideout-娴佽鐨勫簱骞荤伅鐗囩殑Vue瀹炵幇 vue-quick- menu-杩欐槸鍩轰簬vue.js2鐨刉eb瀵艰埅缁勪欢銆?@ hscmap / vue-menu - vue2鐨勮彍鍗?涓婁笅鏂囪彍鍗曠粍浠躲€?vue-router-nav-鍛堢幇vue-router璺敱鐨勭畝绾﹀搷搴斿紡瀵艰埅鏍忋€?vue-drawer- layout-涓€涓畝鍗曠殑DrawerLayout缁勪欢锛屼緥濡侫ndroid锛屽叿鏈塚ue.js銆?vue-simple-menu-鍏锋湁涓€缁勫熀鏈姛鑳界殑绠€鍗曡彍鍗曠粍浠讹紝鍦?0锛呯殑鎯呭喌涓嬭冻澶?vue-tree-navigation-鍏锋湁vue-router鏀寔鐨刅ue.js 2鏍戝鑸?bp-vuejs-dropdown -Vuejs => 2涓嬫媺鍒楄〃銆傛槗浜庝娇鐢紝鏃犻渶澶栭儴锛屽彲閫夈€?vue-bulma鎵嬮鐞?绠€鍗曪紝鏄撲簬閰嶇疆鐨勬墜椋庣惔鎴栧彲鎶樺彔鐨勬牱寮忥紝浣跨敤Bulma鑷畾涔夋牱寮忔垨鍐呯疆鐨勫彲鐢ㄥ浘鏍?v- selectmenu-鐢ㄤ簬Vue2鐨勭畝鍗曪紝瀹规槗鍜岄珮搴﹀畾鍒剁殑鑿滃崟瑙e喅鏂规銆?vue-burger-menu-鍏锋湁涓嶅悓CSS鍔ㄧ敾鐨勭敾甯冨杈规爮Menu缁勪欢銆?vue-dynamic-dropdown-楂樺害鍙畾鍒讹紝鏄撲簬浣跨敤鐨勪紭闆呬笅鎷夌粍浠?vue-navigation- bar-鐢ㄤ簬Vue椤圭洰鐨勭畝鍗曪紝婕備寒鐨勫鑸爮銆?vue-simple-search-dropdown-涓€涓病鏈夊閮ㄤ緷璧栧叧绯荤殑绠€鍗曞彲鎼滅储杈撳叆涓嬫媺缁勪欢 @ innologica / vue-dropdown-menu -Vue鐨勪笅鎷夎彍鍗曠粍浠躲€備换浣曞厓绱犻兘鍙互鏄笅鎷夎Е鍙戝櫒锛屼换浣曞唴瀹归兘鍙互涓嬫媺鍐呭銆?vue-menu-aim-鑿滃崟涓夎褰㈤€夋嫨锛屽張鍚嶄簹椹€?vue-stripe-menu-浣跨敤绫讳技Stripe鐨勫姩鐢诲垱寤哄鑸彍鍗?vue-burger- button-鐢ㄤ簬鑿滃崟姹夊牎鎸夐挳鐨勯潪甯哥畝鍗曠殑Vue鍔熻兘缁勪欢銆?@ satmaxt / sidebar-menu-drawer-涓€涓畝鍗曠殑浜や簰寮忚竟鏍忚彍鍗曟娊灞夛紝鏄撲簬瀹炵幇 vue-file-toolbar-menu -Vue搴旂敤绋嬪簭鐨刄I鏂囦欢/宸ュ叿鏍忚彍鍗?v-dropdown-menu -vuejs鐨勫彲鑷畾涔変笅鎷夎彍鍗曟彃浠躲€傛敮鎸丼SR銆?鍑忓彿鍔犺緭鍏?minus-plus- input-甯﹁礋鍙风殑鏁板瓧杈撳叆锛涘寘鍚湪Vue.js v1鍜寁2涓€?vue-integer-plusminus-甯︽湁vue 2澧為噺鍜屽噺閲忔寜閽殑鏁存暟杈撳叆銆?vue-numeric-input-甯︽湁鎺т欢鐨勬暟瀛楄緭鍏ョ粍浠躲€?杞挱 vue-easy-slider -Vue.js鐨勬粦鍧楃粍浠躲€?vue-l-carousel -Vue.js v2.x +鐨勫搷搴斿紡杞挱锛堝嵆婊戝潡鎴栨粦鍔級缁勪欢銆?vue-awesome-swiper-Vue.js锛?.x銆?.x锛夌殑Swiper锛坰lide锛夌粍浠躲€?vue-lory-鍩轰簬lory鐨刅ue婊戝潡缁勪欢銆?vue-slick- Slick杞挱鐨刅ue缁勪欢銆?vue-flickity-Flickity.js鐨刅ue缁勪欢銆?vue-carousel-3d -Vue Carousel 3D-Vue.js缇庤锛岀伒娲讳笖鍙楄Е鎽告敮鎸佺殑3D Carousel銆?vue- carousel-閫傜敤浜嶸ue.js鐨勭伒娲伙紝鍝嶅簲蹇€燂紝瑙︽懜鍙嬪ソ鐨勮疆鎾€?vue-coverflow-涓€涓獀ue2.x Coverflow缁勪欢銆?vue-agile 鈥撳彈Slick鍚彂鐨勮疆鎾粍浠讹紝浠呬互Vue.js鍜寁anilla JS缂栧啓銆?vue-tiny-slider 鈥撶敱ganlanyuan鍒涘缓鐨勮疆鎾粍浠讹紝鐢╒ue.js缂栧啓銆傛病鏈塲Query銆傞€傜敤浜嶪E8 +銆?vue2-text- swimlane-鐢ㄤ簬Vue.js鐨凾ext Swimlane鎻掍欢 vue-picture-swipe-鐢眕hotowipe鏀寔鐨刅ue鍥剧墖婊戝姩搴擄紙鍏锋湁缂╃暐鍥撅紝寤惰繜鍔犺浇鍜屾粦鍔ㄧ殑鍥惧儚搴擄級銆?vue2-siema-闈炲父灏忕殑Siema杞洏/婊戝潡搴撶殑鎻掍欢鍖呰銆?vue-flux-甯︽湁20涓偒閰疯繃娓$殑鍥惧儚婊戝潡銆?vue-glide - Glide.js椤堕儴鐨刅ue婊戝潡鍜岃疆鎾粍浠?vue-owl-carousel-鐚ご楣颁紶閫佸甫2鐨刅ue缁勪欢 vueper-slides-鐢ㄤ簬Vue JS鐨勮Е鎽稿氨缁笖鍝嶅簲鐏垫晱鐨勫够鐏墖鏄剧ず/杞挱銆?Hooper-閽堝Vue浼樺寲鐨勫彲鑷畾涔夌殑鍙闂疆鎾粦鍧?Lingallery -Vue鐨勭畝鍗曞浘鐗囧簱缁勪欢锛屽湪涓嬮潰鏄剧ず甯︽湁缂╃暐鍥剧殑澶у浘鍍?vue-piece-slider-鍔ㄧ敾骞荤伅鐗囩殑澶栬涓嶅畬鏁?vue2-photo-carousel -Vue2鐨勭収鐗囪浆鐩樼粍浠?vue-netflix- slider-鍍廚etflix鐨勬粦鍧椼€?vue-pswipe-鏄撲簬浣跨敤锛屾棤闇€璁剧疆澶у皬锛屾敮鎸佹棆杞紝鍩轰簬photowipe鐨剉ue婊戝姩鎻掍欢 vue-cat-carousel-杞诲阀锛岀畝鍗曚笖鍙拡瀵筕ue Js瀹氬埗 @ egjs / vue-flicking-瀹冩槸Vue.js 2鐨勫彲闈狅紝鐏垫椿鍜屽彲鎵╁睍鐨勮疆鎾€?婊戣婊戝潡-鍥惧儚锛岃棰戞垨缁勪欢鐨勮疆鎾€傛墧鍑犱箮浠讳綍鎮ㄦ兂瑕佺殑涓滆タ銆?vue-slick-carousel-鍏锋湁婊戝姩鍔熻兘鍜孲SR鏀寔鐨勬棆杞湪椹紝鏃ㄥ湪瀹炵幇鏇村揩鐨凩uxstay @ jfm / vue-carousel -Vue杞挱缁勪欢銆?vue-snap-鍩轰簬Scroll Snap CSS鐨勮交閲忕骇杞挱 vuerollr - Vue.js鐨凪ouseover鐢诲粖鎻掍欢銆傛敮鎸佸浘鍍忓拰瑙嗛銆?vue-splide -Splide鏄竴涓厤璐圭殑杞婚噺绾т絾鍔熻兘寮哄ぇ鐨勬粦鍧楀拰杞挱锛屼娇鐢ㄧ函JavaScript缂栧啓锛屾病鏈変换浣曚緷璧栧叧绯汇€傚畠鏀寔缂╃暐鍥炬粦鍧楋紝宓屽骞荤伅鐗囥€?swiper - Swiper 6娣诲姞浜嗗Vue.js鐨勫畼鏂规敮鎸侊紙浠?.x锛夈€?鍥捐〃 vue- morris-鍖呰Morris.js鐨刅ueJS缁勪欢銆?vue-chartjs-Chart.js鐨刅ue.js鍖呰鍣ㄣ€?hchs-vue- charts-鍩轰簬ChartJs鐨刅ue2.0鍖呰鍣ㄣ€?vue-echarts-Vue.js鐨凟Charts缁勪欢銆?vuetrend - Vue.js鐨勭畝娲佷紭闆呯伀鑺辩嚎銆?vue-highcharts -Vue鐨凥ighcharts缁勪欢銆?vue-echarts-v3 -ECharts.js锛坴3.x +锛夌殑Vue.js锛坴2.x +锛夌粍浠跺寘瑁呫€?vue- chartist - Chartist鐨刅ue.js 2.0缁勪欢鍖呰銆?vuebars - Vue.js鐨勭畝鍗曪紝浼橀泤鐨勭伀鑺辨爮銆?vue-d3- network-浣跨敤d3-force缁樺埗缃戠粶鍥剧殑Vue缁勪欢 vue2vis - Vue2鍖呰鐨刅isjs銆?vue-c3 -c3鍥捐〃鐨勫彲閲嶇敤vue缁勪欢 vue-d2b -d2b鍥捐〃鐨刅ue缁勪欢銆傦紙鍖呮嫭杞达紝楗煎浘锛宻ankey鍜屾.浼柉鐗瑰浘锛?VueChart-涓€涓潪甯哥畝鍗曠殑Chart Vue鍖呰鍣ㄣ€?vue-chartkick-鐢ㄤ竴琛孷ue鍒涘缓婕備寒鐨凧avaScript鍥捐〃 d3vue-涓€涓狣3鎻掍欢锛岀敤浜庡湪VueJS涓垱寤哄弽搴旀€ф暟鎹彲瑙嗗寲 vue2-frappe-VueJS鐨凢rappe Charts鐨勭畝鍗曞寘瑁?vue-google-charts -Google Charts lib鐨勫弽搴旀€ue.js鍖呰鍣?vue- graph-鐢ㄤ簬Vue.js涓殑浠〃鏉垮疄鐜扮殑鏁版嵁鍙鍖栧簱 vue.d3.sunburst-鍩轰簬D3.js鐨勫弽搴旀€ф棴鏃ュ舰缁勪欢 v-chart-plugin-涓€涓彲瀹氬埗鐨勭粍浠讹紝鐢ㄤ簬娣诲姞缁戝畾鍒扮粍浠舵暟鎹殑D3鍥捐〃銆?vue-jqxchart-鍏锋湁楗煎浘锛屾皵娉★紝鐢滅敎鍦堬紝绾匡紝鏉★紝鏍忥紝鍒楋紝鍖哄煙锛岀€戝竷锛屾瀬鍦板拰铚樿洓绯诲垪鐨勫埗鍥剧粍浠躲€?toast-ui.vue-chart - TOAST UI Chart鐨刅ue鍖呰鍣ㄣ€?VUE-apexcharts - Vue.js缁勪欢锛岀敤浜嶢pexCharts銆?vue-doughnut-chart -Vue.js鐨勭敎鐢滃湀鍥剧粍浠躲€?v鍨嬪浘琛?鍩轰簬Vue2.x鍜孍charts鐨勫浘琛ㄧ粍浠躲€?vue-css-donut-chart-杞婚噺绾ue缁勪欢锛岀敤浜庣粯鍒剁函CSS鐢滅敎鍦堝浘銆?vue-trend-chart -Vue.js鐨勭畝鍗曡秼鍔垮浘 vueplotlib-澹版槑鎬э紝浜や簰寮忥紝閾炬帴鐨勭粯鍥剧粍浠?vgauge - GaugeJS鐨刅ue鍖呰鍣?鍒涘缓婕備寒鐨勯噺瑙?vue-plotly - plotly.js澹版槑寮忓浘琛ㄥ簱鐨勫寘瑁咃紝鎻愪緵20绉嶅浘琛ㄧ被鍨嬶紝鍖呮嫭3D鍥捐〃锛岀粺璁″浘鍜孲VG鍦板浘銆?vue-funnel-graph-js -Vue.js鐨勬紡鏂楀浘缁樺埗搴撱€傚垱寤哄瀭鐩村拰姘村钩鍔ㄧ敾SVG婕忔枟鍥撅紝骞舵坊鍔犳爣绛撅紝鍊硷紝鍥句緥鍜屽叾浠栦俊鎭€?pure-vue- chart-瀹炵幇鐨勮交閲忕骇vue鍥捐〃锛屾病鏈変换浣曞浘琛ㄥ簱渚濊禆 f2-vue - f2鐨刅ue鍖呰鍣?浼橀泤锛屼氦浜掑紡涓旂伒娲荤殑绉诲姩鍥捐〃搴?ZingChart-Vue -ZingChart鍒朵綔鐨勫叿鏈?5绉嶄互涓婂浘琛ㄧ被鍨嬬殑Vue缁勪欢銆?jscharting-vue -Vue鍥捐〃缁勪欢鎻愪緵浜嗗畬鏁寸殑鍥捐〃绫诲瀷闆嗭紝骞堕€氳繃JSCharting杩涜浜嗘暟鎹彲瑙嗗寲銆?娴佺▼鍥?vue-Vue.js鐨勬祦绋嬪浘鍜屾祦绋嬪浘璁捐鍣ㄧ粍浠躲€?vue-d3-barchart-浣跨敤d3缁樺埗鍥捐〃鐨勫皬缁勪欢銆?vue3-highcharts -Vue 3鐨凥ighcharts.JS鍖呰鍣ㄧ粍浠?echarts-for-vue -Vue 3鍜?鐨凟Charts鍖呰鍣ㄧ粍浠?鏃堕棿 鏄剧ず鏃堕棿/鏃ユ湡/骞撮緞

vue-timeago -Vue鐨勫井灏弔imeago缁勪欢銆?vue-moment-jalaali -Vue.js椤圭洰鐨凧alaali Moment.js杩囨护鍣ㄣ€?vue-countdown-timer-娣诲姞浜嗘椂鍖鸿浆鎹㈡敮鎸併€?vue-analog-clock-range-鏄剧ず鏃跺樊鐨勬ā鎷熸椂閽熻寖鍥淬€?vue-moment- lib-浣跨敤鐩稿悓鐨刴omentjs API鐨勭畝鍗昖ue.js 2.0 MomentJS搴擄紙杩囨护鍣ㄥ拰鍏ㄥ眬鍙橀噺锛夈€?vuejs-countdown -vue js 2.0鐨勭畝鍗曞€掓暟璁℃椂鍣ㄧ粍浠?vue2-flip-countdown -Vue 2.x鍏锋湁鍊掕浆鏁堟灉鐨勫€掓暟璁℃椂鍣?timeline-vuejs -Vue鐨勭畝绾︽椂闂磋〃 vue-awesome-countdown -Vue 2.5.0+鍏锋湁楂樻€ц兘鍜岄珮绮惧害鐨勫€掕鏃舵彃浠躲€傚畼鏂圭綉绔欙細https锛?/vac.js.org vue-clock2-鏄剧ずVue鐨勬椂閽熺粍浠躲€?vuemodoro -Pomodoro璁℃椂鍣ㄤ綔涓哄崟涓枃浠禫ue缁勪欢銆?digital-clock-vue -锔忓湪Vue涓婃瀯寤烘暟瀛楁椂閽熸ā鎷熴€?bs-vue-timeline-澶囩敤鍝嶅簲寮廱oostrap-vue鏃堕棿绾?simple-vue-timeline-涓€涓畝鍗曚絾鍙嚜瀹氫箟鐨勫弽搴旀€ф椂闂寸嚎vue缁勪欢 vue- moment-閫傜敤浜嶸ue.js椤圭洰鐨凥andy Moment.js杩囨护鍣ㄣ€?v- idle-涓€涓猇ue.js鎻掍欢锛岀敤浜庢娴嬬┖闂?闈炴椿鍔ㄧ敤鎴枫€?v-digital-time- picker - Vuetify鐨勬暟瀛楁椂闂撮€夋嫨鍣ㄣ€?vue-horizo鈥嬧€媙tal-timeline-鍙槸涓€涓敱Vue.js鍒朵綔鐨勭畝鍗曟按骞虫椂闂寸嚎缁勪欢銆?鏃ュ巻 鍦ㄦ棩鍘嗕腑鏄剧ず涓嶅彲缂栬緫鐨勪簨浠?/p>

vue-fullcalendar -Vue鏃ュ巻fullCalendar銆傛棤闇€jQuery銆傚畨鎺掍簨浠剁鐞嗐€?vue-event-calendar -Vue2鐨勭畝鍗曚簨浠舵棩鍘嗭紝闄ue2澶栨病鏈夊叾浠栦緷璧栭」銆?vue-calendar-picker-鐢ㄤ簬浜嬩欢鏄剧ず锛屾椂娈甸€夋嫨鍜屾棩鏈熼€夋嫨鍣ㄧ殑杞诲瀷鏃ュ巻缁勪欢銆?vue-lunar-calendar-闃村巻鐨刅ue缁勪欢銆備娇鐢∕oment.js杩涜鏃ユ湡鎿嶄綔銆?vue-simple-calendar-鍩轰簬Flexbox鐨刅ue鏈堝巻鍔熻兘锛涙敮鎸佸鏃ユ椿鍔紝鏈湴鍖栵紝鑺傛棩琛ㄦ儏绗﹀彿锛屾嫋鏀俱€傛病鏈変緷璧栧叧绯汇€?vue2-calendar-涓€涓畝鍗曠殑瀹屾暣鏃ュ巻缁勪欢锛屾棬鍦ㄧ伒娲伙紝杞讳究銆?vue-jlunar-datepicker-涓€涓甫鏈夎妭鏃ュ拰鑺傛皵鏈鐨勪腑鍥藉啘鍘嗘棩鏈熼€夋嫨鍣ㄧ粍浠躲€?vue-full-calendar - Vue 1鍜?鐨勫畬鏁磃ullcalendar.io鍖呰鍣?v-calendar-鏃ュ巻/鏃ユ湡鍔ㄧ敾锛屾樉绀虹畝鍗曟棩鏈熷拰閲嶅鏃ユ湡鐨勫尯鍩燂紝鎸囨爣鍜屾棩鏈熷脊鍑烘銆?vue-infinite-calendar -Vue 2鐨勭畝鍗曟棤闄愭棩鍘嗗疄鐜?vue-calendar -Vue 2.1.5+鐨勭畝鍗曟棩鍘嗙粍浠讹紝鏀寔鑷畾涔夊唴瀹广€傛病鏈変緷璧栧叧绯汇€?vue2-event-calendar -Vue2鐨勪簨浠舵棩鍘嗭紝鏀寔鑷畾涔変簨浠堕」鍜屾棩鍘嗘爣棰樸€?vue2-datePicker-infinite-Vue2鐨勬棤闄恉atePicker锛屾槗浜庝娇鐢ㄤ笖娌℃湁渚濊禆鎬с€?vue2-slot-calendar -vue 2鏃ュ巻锛屾敮鎸佹湀鐞冩垨鏃ユ湡浜嬩欢鐨勬棩鏈熼€夋嫨鍣ㄧ粍浠讹紝寮曞绋嬪簭鏍峰紡銆?quasar-calendar-浣跨敤Quasar妗嗘灦鐨剉ue.js鏃ュ巻锛屽彲瀹炵幇姣忔湀锛屽澶╁拰璁▼瑙嗗浘銆?vue2-datepicker-Vue2鐨勪竴涓紓浜殑datepicker / datetimepicker缁勪欢 VUE-pikaday - VueJS鍖呰鍣ㄧ粍浠禤ikaday鏃ユ湡閫夋嫨 vue-tuicalendar-鐢ㄤ簬tui.calendar鏃ュ巻鐨刅ueJS鍖呰鍣ㄧ粍浠?vue-jqxscheduler -VueJS璋冨害绋嬪簭缁勪欢銆?toast-ui.vue-calendar-鐢ㄤ簬TOAST UI鏃ュ巻鐨刅ue鍖呰鍣ㄣ€?vue-functional-calendar-鍩轰簬Vue鐨勮交閲忕骇楂樻€ц兘鏃ュ巻缁勪欢锛堟棩鏈熼€夋嫨鍣紝鏃ユ湡鑼冨洿锛夈€?vue-cal -Vue JS瀹屾暣鏃ュ巻锛屾棤渚濊禆椤癸紝鏃燘S銆傪煠樸€?vue-material-year-calendar -Vue2鐨勫叏骞达紙姣忛〉12涓湀锛夋棩鍘嗐€備娇鐢╠ayjs銆?vuelendar-鐢╒ueJS缂栧啓鐨勭畝娲佹棩鍘?vue-datepicker-ui -Vue鐨凞atepicker缁勪欢 vue-date- tools-鏈€杞诲阀鐨刅ueJS鏃ユ湡閫夋嫨鍣ㄥ拰鏃ユ湡鑼冨洿閫夋嫨鍣紝浣跨敤date-fns涓旀病鏈夊叾浠栦緷璧栭」 vue-spring-calendar-杩欐槸涓€涓熀浜嶸ue鐨勭粍浠讹紝鎻愪緵浜嗘樉绀烘瘡鏃ヤ簨浠剁殑瀹屾暣鏃ュ巻鐨勫姛鑳姐€傜殑demo銆?vue-jquery-calendar - jQuery UI Datepicker鐨刅ueJS杞婚噺绾у寘瑁呭櫒缁勪欢 vue-schedule-board-涓€涓槗浜庝娇鐢ㄧ殑缁勪欢锛岀敤浜庢樉绀烘煇浜虹殑鏃ョ▼琛ㄥ垪琛紝浠ュ府鍔╅噰璁垮畨鎺掓垨璁块棶瀹夋帓銆?鍦板浘 vue2-google-maps-鍏锋湁2鍚戞暟鎹粦瀹氱殑vue鐨凣oogle鍦板浘缁勪欢銆?vue2-leaflet-浼犲崟鍦板浘鐨刅ue 2缁勪欢銆?vue-mapbox-gl -Mapbox GL JS鐨刅ue 2.x缁勪欢 vue-yandex-maps -Yandex Maps鐨刅ue 2.x缁勪欢 vue-baidu-map-鐧惧害鍦板浘鐨刅ue 2.x缁勪欢銆?vue-choropleth -Vue 2.x缁勪欢浠ユ樉绀轰竴涓猚horopleth璐村浘銆?vuelayers-涓嶰penLayers涓€璧蜂娇鐢ㄧ殑Vue 2缁勪欢銆?vue-googlemaps-鐢ㄤ簬闆嗘垚Google Maps鐨刅ue 2.x缁勪欢銆?vue-static-map -Vue 2.x绠€鍗曠粍浠讹紝鐢ㄤ簬鐢熸垚闈欐€丟oogle鏄犲皠 vue-mapbox -Mapbox GL JS搴撳懆鍥寸殑Vue 2.x鍖呰鍣紝鎻愪緵浜嗕笌鍦板浘浜や簰鐨勯€斿緞銆?vue-cesium-閾殑Vue 2.x缁勪欢銆?vue-async-gmaps-璁╃敤鎴峰喅瀹氬姞杞絞oogle-maps鑴氭湰浠ヨ幏寰楁洿濂界殑闅愮 @ geospoc / v-mapbox-缁撳悎Vue.js鍜孧apbox GL JS鐨勫姛鑳斤紙sal鐨剉ue-mapbox鐨勭淮鎶ゅ垎鍙夛級 @ geospoc / v-mapbox- geocoder-鍑鸿壊鐨凪apbox搴撶殑Geocoder鎺т欢 x5-gmaps-閫傜敤浜嶸ue 2.x鐨勮交閲忕骇Google Maps鎻掍欢 vue2-gmap-custom-marker -vue璋锋瓕鍦板浘鑷畾涔夋爣璁扮粍浠?闊抽瑙嗛 Vue鍏徃锛孉Player -馃嵃 鏄撲簬閰嶇疆鐨刅ue 2.x闊充箰鎾斁鍣ㄣ€?vue-audio-闊抽鏍囩鍖呰鍣紱Vue 2.x鐨勫0闊虫挱鏀惧櫒缁勪欢 vue-dplayer-鍩轰簬DPlayer鐨刅ue 2.x瑙嗛鎾斁鍣ㄧ粍浠躲€?vue-canvasvideo -Vue 2.x缁勪欢锛岀敤浜巌OS / Safari涓婄殑瑙嗛鑳屾櫙鍜岃嚜鍔ㄦ挱鏀捐棰戙€?vue- music-鍩轰簬html5鐨刅ue缁勪欢

鐢佃瘽鍙风爜杈撳叆鏍煎紡鍣?VUE鐢佃瘽鍙风爜杈撳叆-绮剧編鐨勮緭鍏ユ牸寮忓拰甯︽湁鍥藉/鍦板尯浠g爜鐨勬湁鏁堢數璇濆彿鐮侌煍?vue-tel-input-甯ue鐨勫浗闄呯數璇濊緭鍏ャ€?瀵嗙爜杈撳叆 vue-pincode-input-鏅鸿兘瀵嗙爜杈撳叆缁勪欢 閫夋嫨鍣?vue-smooth-picker- Vue 2.x鐨勫钩婊戦€夋嫨鍣ㄧ粍浠讹紝渚嬪iOS鏈満鏃ユ湡鏃堕棿閫夋嫨鍣ㄣ€?vue-scroll-picker- Vue 2.x鐨勬粴鍔ㄩ€夋嫨鍣ㄧ粍浠躲€傛敮鎸侀紶鏍囷紙涔熷彲浠ユ粴杞級鍜岃Е鎽哥殑鎵€鏈夋墜鍔裤€?vue-fontawesome-picker- Vue 2.x鐨勫瓧浣撶湡妫掑浘鏍囬€夋嫨鍣ㄧ粍浠躲€?vue3-scroll-picker- Vue 3鐨勬粴鍔ㄩ€夋嫨鍣ㄧ粍浠躲€?鍙戠數鏈?FormSchema Native-浣跨敤JSON Schema鍜孷ue.js鐢熸垚琛ㄥ崟 vue-generator -Vue椤圭洰鐨勫垵濮嬭矾鐢卞櫒鍜岀粍浠躲€?vue-form- json-浠巎son鐢熸垚鍏锋湁楠岃瘉鍜屽竷灏旈鏍肩殑vue琛ㄥ崟 form- create-鍏锋湁鍔ㄦ€佸憟鐜帮紝鏁版嵁鏀堕泦锛岄獙璇佸拰鎻愪氦鍔熻兘鐨勮〃鍗曟瀯寤哄櫒锛屾敮鎸乯son鏁版嵁 element-form- builder-浣跨敤JSON Schema鏋勫缓element-ui琛ㄥ崟銆?ncform-寮€鍙戣〃鍗曠殑闈炲父濂界殑閰嶇疆鐢熸垚鏂瑰紡 Laraform-鍏锋湁Laravel鏀寔鐨刅ue.js鐨勯珮绾ц〃鍗曠敓鎴愬櫒 vue-ele-form -Vue DataForm锛屽熀浜巈lement-ui vue-otp-2 -Vue OTP杈撳叆2锛岀敤浜嶰TP杈撳叆鐨刅ue缁勪欢 vue-form-generator Vue.js鐨勫熀浜庢灦鏋勭殑琛ㄥ崟鐢熸垚鍣ㄧ粍浠躲€?vue-form- builder-浣跨敤JSON妯″紡鍜岀粍鍚坅pi鏋勫缓鍔熻兘寮哄ぇ鐨剉ue琛ㄥ崟锛屾敮鎸佹祦琛岀殑ui妗嗘灦锛屼緥濡侲lement UI锛孷iew UI锛孉nt Design Vue銆傚湪绾挎紨绀?vue-dynamic- inputs-浠巎son鍦ㄧ嚎婕旂ず浠uefy鍒涘缓鍔ㄦ€佽〃鍗?Vue娴佺▼琛ㄥ崟-浣跨敤Vue.js鍒涘缓浼氳瘽鏉′欢閫昏緫琛ㄥ崟銆傚湪绾挎紨绀?鏃ユ湡閫夋嫨鍣?鏃ユ湡/鏃ユ湡鏃堕棿/鏃堕棿閫夋嫨鍣?/p>

VUE-鏃ユ湡閫夋嫨鍣? [鏃犱汉缁存姢]鏃ュ巻鍜屼笌鏉愭枡璁捐Vue.js.鏃ユ湡閫夋嫨鍣ㄧ粍浠?vue2-timepicker -Vue 2.x鐨勪笅鎷夋椂闂撮€夋嫨鍣紙灏忔椂|鍒嗛挓|绉掞級锛屽叿鏈夌伒娲荤殑鏃堕棿鏍煎紡鏀寔銆傪煏?锛堣繑鍥炲苟鍦?019骞村厖鐢?馃攱锛?vuejs- datepicker-涓€涓畝鍗曠殑Vue.js datepicker缁勪欢銆傛敮鎸佺鐢ㄦ棩鏈燂紝鍐呰仈妯″紡锛岀炕璇戙€?vuedt-鐤媯鐨勮交閲忕骇锛?5kb锛侊級Vuejs鏃ユ湡鍜屾椂闂撮€夋嫨鍣ㄧ粍浠讹紝鍏锋湁i18n鏀寔锛屾紓浜殑鍔ㄧ敾鍜屼笉澶ā绯婄殑鍐呭銆?VUE-flatpickr鎴愬垎涓篤ue.js閮ㄤ欢flatpickr鏃ユ湡鏃堕棿閫夋嫨鍣?vue-jalaali-datepicker-vue.js鐨凧alaali鏃ュ巻鍜屾棩鏈熼€夋嫨鍣?銆?vue鏃ユ湡閫夋嫨鍣?鍙楁潗鏂欒璁″惎鍙戠殑vue鏃ユ湡閫夋嫨鍣ㄧ粍浠?vue-monthly- picker-浠呴€傜敤浜庢湀浠藉拰骞翠唤閫夋嫨鍣ㄧ殑Vue.js缁勪欢 vue-hotel-datepicker-涓€绉嶅搷搴斿紡鏃ユ湡鑼冨洿閫夋嫨鍣紝瀹冩樉绀烘墍閫夌殑澶滄櫄鏁伴噺锛屽厑璁歌嚜瀹氫箟鍏ヤ綇/閫€鎴胯鍒欙紝闃绘鏃ユ湡锛屾湰鍦板寲鏀寔绛夈€?vue2-persian-datepicker- vue鐨勭湡妫掓尝鏂痙atepicker缁勪欢銆傏┴з呝举堎嗁嗀з嗀жㄘж臂屫ㄘ必й屬堐屬堛€?vue-datetime -Vue鐨勭Щ鍔ㄥ弸濂芥棩鏈熸椂闂撮€夋嫨鍣ㄣ€傛敮鎸佹棩鏈燂紝鏃ユ湡鏃堕棿鍜屾椂闂存ā寮忥紝i18n鍜岀鐢ㄦ棩鏈熴€?vue-rangedate-picker-鑼冨洿鏃ユ湡閫夋嫨鍣紝鐢ㄦ硶绠€鍗?v2-datepicker-鍩轰簬Vue 2.x鐨勭畝鍗昫atepicker缁勪欢銆?vue-datepicker-local -Vue2鐨勪竴涓紓浜殑Datepicker缁勪欢銆?vue-airbnb-style-datepicker-鍏锋湁涓庢祦琛岀殑AirBnb datepicker鐩镐技鐨勫瑙傚拰鍔熻兘鐨刅ue datepicker銆傝交宸э紝鍙厤缃笖鑹ソ鐨勬祻瑙堝櫒鏀寔锛?vue-persian-datetime-picker娉㈡柉鏉愭枡datepicker銆傛敮鎸佹棩鏈熸椂闂达紝鏃ユ湡锛屾椂闂达紝骞达紝鏈堛€?VCalendar闈炲父鍙畾鍒朵笖鍔熻兘寮哄ぇ鐨勬棩鍘?鏃ユ湡閫夋嫨鍣ㄧ粍浠讹紝鍏锋湁璁稿鍔熻兘鍜屽畬鍠勭殑鏂囨。銆?@ owumaro / vue-date-range-picker-浣跨敤Bootstrap 4鏍峰紡杩涜鏃ユ湡鑼冨洿閫夋嫨鐨刅ue缁勪欢 vue-datepicker-mobile -vue2鐨勭Щ鍔ㄨ澶囧弸濂芥棩鏈熼€夋嫨鍣ㄣ€傪焽焽?閫夋嫨涓€澶╂垨鏃ユ湡鑼冨洿骞惰嚜瀹氫箟鎵€闇€鐨勬棩鏈熴€?vue-draggable-cal-涓嶆槸鎮ㄧ殑鏅€氭棩鏈熼€夋嫨鍣ㄣ€備竴涓猇uejs鍙嫋鍔ㄧ殑鏃ユ湡閫夋嫨鍣紝鍏锋湁鏂伴鐨勫搷搴斿紡璁捐锛屽彲绉诲姩涓斿叿鏈?涓緷璧栭」锛屽凡鍘嬬缉17kb銆?vue-vanilla-datetime-picker- Vue鐨勬棩鏈熸椂闂撮€夋嫨鍣ㄣ€?vue2-daterange- picker-鍩轰簬bootstrap-daterangepicker鐨刅ue2鏃ユ湡鑼冨洿閫夋嫨鍣紙鏃爅Query渚濊禆鎬э級 vue-timeselector-鐢ㄤ簬Vue.js鐨勫畬鍏ㄧ畝鍗曞彲瀹氬埗鐨勫姛鑳藉己澶х殑鏃堕棿閫夋嫨鍣ㄧ粍浠躲€?vue-date-picker- Vue 2.x鐨勮交閲忕骇datepicker缁勪欢銆?vue-ctk-date-time- picker-涓€涓紓浜殑VueJS缁勪欢锛岀敤浜庨€夋嫨鏃ユ湡鍜屾椂闂达紙甯﹁寖鍥存ā寮忥級馃啎 simple-vue2-datetimepicker-涓€涓畝鍗曟槗鐢ㄧ殑vue.js缁勪欢锛岀敤浜庢棩鏈熷拰鏃堕棿閫夋嫨銆傪焼?vue-business-hours -Vue缁勪欢锛岀敤浜庡湪绠$悊闈㈡澘鎴栦华琛ㄦ澘涓€夋嫨宸ヤ綔鏃堕棿銆?material-vue-daterange-picker- Vuejs 2.x鐨凪aterial Design鏍峰紡鐨勬棩鏈熻寖鍥撮€夋嫨鍣紝涓巚uetify鍏煎骞朵笖瀵圭Щ鍔ㄨ澶囧弸濂姐€?vue- datepicker-鍏锋湁Vuejs 2.x鐨凪aterial Design鏍峰紡鐨勫共鍑€鍝嶅簲寮忔棩鏈熼€夋嫨鍣ㄣ€傦紙鏃ユ湡/鏈?瀛e害鍜岋紗鏃ユ湡鑼冨洿閫夋嫨鍣級馃啎 閫夋嫨 vue- select-涓€涓湰鍦癡ue.js缁勪欢锛屾彁渚涗笌Select2绫讳技鐨勫姛鑳斤紝鑰屾病鏈塲Query鐨勫紑閿€銆?vue- multiselect-Vue.js鐨勯€氱敤閫夋嫨/澶氶噸閫夋嫨/鏍囪缁勪欢銆?stf-vue-select-鏈€鐏垫椿鍜岃嚜瀹氫箟鐨勯€夋嫨Vue2 vue-select-image -Vue 2缁勪欢锛岀敤浜庝粠鍒楄〃涓€夋嫨鍥惧儚 @ riophae / vue-treeselect-鍏锋湁瀵筕ue.js鐨勫祵濂楅€夐」鏀寔鐨勫閫夌粍浠躲€?@ k186 / pd-select-涓€涓Щ鍔║I缁勪欢锛屼緥濡俈ue 2.x鐨処OS閫夋嫨鍣紝鍙互闅忔剰閫夋嫨鎮ㄥ畾涔夌殑瀵硅薄銆?vue-dropdowns-濡傛灉瀵箆ue2.x浣跨敤瀵硅薄锛屽垯鏄竴绉嶆樉绀洪€夋嫨妗嗙殑绠€绾︿笖鍙皟鏁寸殑鏂瑰紡 v-cascade -Vue 2.x鐨勫眰鍙犻€夋嫨鍣ㄧ殑涓€涓彲鐖辩粍浠讹紙鍚屾椂鏀寔PC鍜孧obile锛?vue-multi- select-鐢ㄤ簬瀵筕ue2杩涜閫夋嫨/澶氶噸閫夋嫨鐨勮嚜瀹氫箟缁勪欢銆?v-region-涓€涓畝鍗曠殑鍖哄煙閫夋嫨鍣紝鎻愪緵涓枃琛屾斂鍖哄垝鏁版嵁銆?v-selectpage -Vue2锛屽垎椤靛垪琛ㄦ垨琛ㄦ牸瑙嗗浘鐨勫己澶ч€夋嫨鍣紝浣跨敤鏍囩杩涜澶氶」閫夋嫨锛宨18n鍜屾湇鍔″櫒绔祫婧愭敮鎸併€?vue-cool-select-寮曞绋嬪簭/鏉愯川璁捐涓婚锛屾敮鎸佸箍鍛婁綅锛岃嚜鍔ㄥ畬鎴愬姛鑳斤紝浜嬩欢锛岄獙璇佺瓑銆?@ myena / advanced-select-鍏锋湁鎼滅储鍔熻兘鐨勫崟/澶氶€夋嫨缁勪欢锛岀敤浜庯紙鍙栨秷锛夊叏閫夊拰Bootstrap 3涓婚鐨勬帶浠?@ alfsnd / VUE鐨勮嚜涓鹃€? Vue鍏徃鐗堟湰鐨勮嚜涓鹃€夋嫨銆?@ SamuelTrottier / vue-wheel-select-涓€涓畝鍗曠殑婊氬姩閫夋嫨缁勪欢銆?vue-search-select-鍙悳绱㈢殑閫夋嫨缁勪欢鍜岃涔塙I鐨勪笅鎷夊垪琛ㄥ吋瀹广€?vue-gridmultiselect-绠€鍗曠殑澶氶€夌粍浠讹紝鍦║I绛夎〃鏍间腑鏄剧ず椤圭洰 vue-select-sides -Vue.js鐨勭粍浠讹紝鐢ㄤ簬閫夋嫨鍙岄潰鏁版嵁锛堜袱闈級銆?vue-selectize-鍥寸粫Selectize.js鐨刅ue.js缁勪欢鍖呰鍣紝棣欒崏js閫夋嫨缁勪欢 @ vueform / multiselect-鍏锋湁鍗曢€夛紝澶氶€夊拰鏍囪閫夐」鐨刅ue 3澶氶€夌粍浠躲€?婊戞潌 vue-slider-component -vue1.x鍜寁ue2.x鐨勬粦鍧椼€?vue-circle-slider -vue2.x鐨勨€滃渾褰⑩€濇粦鍧楃粍浠躲€?vue-slide- bar-闈炲父绠€鍗曠殑vue婊戝姩鏉$粍浠躲€?textra -Vue js闄勫姞缁勪欢浠ユ粦鍔ㄦ枃鏈€?vue-knob-control -Vue.js鐨勬棆閽帶浠?iv-slider -vue2.x鐨勬粦鍧楃粍浠躲€?vue-histogram- slider-甯︽湁Vue.js鐩存柟鍥剧殑鑼冨洿婊戝潡 xns-seek-bar -Vue 2.x鐨勫彲鎼滅储杩涘害鎻掍欢銆?鎷栨斁 vuedraggable -Vue缁勪欢锛屽厑璁镐笌View-Model鍚屾杩涜鎷栨斁鎺掑簭銆傚熀浜嶴ortable.js銆?vue-dragula-鎷栨斁闈炲父绠€鍗曪紝寰堢柤銆?vue2-dragula-鐨剉ue-dragula鍒嗗弶Vue2锛屽叿鏈夊緢澶氭敼杩涖€?awe-dnd -Vue鐨勫彲鎺掑簭鍒楄〃鎸囦护銆?vue-draggable-resizable -Vue2缁勪欢锛岀敤浜庡彲鎷栧姩鍜屽彲璋冩暣澶у皬鐨勫厓绱犮€?vddl-鐢ㄤ簬浣跨敤HTML5鎷栨斁API淇敼鍒楄〃鐨刅ue缁勪欢锛屾敮鎸乂ueJs鐗堟湰1鍜?銆?vue-drag-drop -HTML5鎷栨斁API鐨勬渶灏忎笖杞诲阀鐨勫寘瑁呫€?vue- swing-鍙粦鍔ㄧ殑鍗$墖鐣岄潰锛屽Jelly鍜孴inder涔嬬被鐨勫簲鐢ㄧ▼搴忎腑鎵€瑙併€?vue-slicksort-鐢ㄤ簬鍔ㄧ敾锛岃Е鎽稿弸濂斤紝鍙帓搴忓垪琛ㄧ殑鏃犱緷璧栫殑娣峰悎闆?draggable-vue-directive-澶勭悊浠讳綍Vue缁勪欢鐨勬嫋鏀剧殑绠€鍗曟寚浠ゃ€?vue-smooth-dnd -smooth-dnd搴撶殑Vue鍖呰鍣ㄣ€傛嫋鏀撅紝鍙垎绫荤殑搴擄紝閫傜敤浜庤澶氭儏鍐点€?vue-drag-resize-涓€涓棤渚濊禆鐨刅ue缁勪欢锛岀敤浜庡叿鏈夐珮瀹芥瘮锛屽弽搴旀€ч亾鍏风瓑鐨勫彲鎷栧姩鍜屽彲璋冩暣澶у皬鐨勫厓绱?vue-drag-it-dude -Vue2缁勪欢锛屽畠浣挎偍鍙互灏嗗璞℃嫋鍒版墍闇€鐨勪綅缃€?vue-draggable -Vue鎷栨斁搴擄紝娌℃湁浠讳綍渚濊禆鍏崇郴銆傜畝鍗曟槗鐢ㄣ€?vue-nestable-浣滀负vue缁勪欢鐨勭畝鍗曟嫋鏀惧眰娆$粨鏋勫垪琛ㄣ€?vue- tinder-鎷ユ湁鑷繁鐨凾inder鍜孴anTan銆?vue-card-swipe -vue.js鐨勮Е鎽告粦鍧楋紝鏀寔鍚戜换鎰忔柟鍚戞粦鍔ㄤ互鍒囨崲鍗★紝涓嶱C鍜岀Щ鍔ㄨ澶囧吋瀹广€?vue-drag-n-drop-涓€涓畝鍗曠殑鐪嬫澘锛屽彲浠ュ皢椤圭洰浠庡垪琛ㄤ腑鎷栨斁鍒版澘涓娿€?Vue鍗″爢鏍?鍙爢鍙狅紝鍙粦鍔紝鍙皟鏁寸殑Vue鍗$粍浠躲€?鑷姩瀹屾垚 鑷姩寤鸿/鑷姩瀹屾垚/鎻愬墠杈撳叆

vue鍗虫椂-閫氳繃Vue Instant锛屾偍鍙互涓簐ue 2搴旂敤绋嬪簭杞绘澗鍒涘缓甯︽湁鑷姩寤鸿鐨勮嚜瀹氫箟鎼滅储鎺т欢銆?v-autocomplete -Vue.js鐨勮嚜鍔ㄥ畬鎴愮粍浠?vue-auto-complete -Vue2鐨勮嚜鍔ㄥ畬鎴愩€傞€傜敤浜庡璞℃垨api璋冪敤銆?vue-autosuggest -WAI-ARIA瀹屾暣鐨凙utosuggest缁勪欢锛屽娓叉煋鍜屾牱寮忚繘琛屼簡瀹屽叏鑷畾涔夈€?v-autosuggest-涓€涓畝鍗曠殑妯″潡鍖朧uejs缁勪欢锛屽彲浠ヨ嚜鍔ㄥ缓璁潵鑷姩鎬佹垨闈欐€佹暟鎹煡璇㈢殑杈撳叆銆?鑷姩瀹屾垚-Vue.js 2. *鐨勭畝鍗曡嚜鍔ㄥ畬鎴愮粍浠?vue-infinite-autocomplete -Vue.js 2. *鐨刅ue鏃犻檺-鑷姩瀹屾垚鍖呰鍣?vue-simple-suggest -Vue.js鐨勭畝鍗曚絾鍔熻兘涓板瘜鐨勮嚜鍔ㄥ畬鎴愮粍浠?v- suggest-涓€涓猇ue2鎻掍欢锛岀敤浜庤緭鍏ュ唴瀹瑰缓璁紝鏀寔閿洏蹇€熼€夋嫨銆?vue-bootstrap- typeahead-浣跨敤Bootstrap 4 CSS鐨刅ue2鐨則ypeahead / autocomplete缁勪欢銆?vue-email-dropdown-鑷畾涔夌數瀛愰偖浠跺煙鐨勮嚜鍔ㄥ畬鎴愬姛鑳姐€?vue-combo-blocks -Vue鐨勫皬鍨嬶紝鍙闂紝鍙嚜瀹氫箟鍜屸€滄棤娓叉煋鈥濊嚜鍔ㄥ畬鎴愮粍浠躲€?绫诲瀷閫夋嫨 璁╃敤鎴峰湪杈撳叆鏃堕€夋嫨鏍囩/鍏朵粬鍐呭

vue-input-tag -Vue.js 2.0杈撳叆鏍囩缁勪欢銆?v-distpicker涓€涓伒娲伙紝楂樺害鍙敤鐨勫尯鍩熼€夋嫨鍣紝鐢ㄤ簬涓篤ue.js 2.x鎷惧彇涓浗鐨勭渷锛屽競鍜屽湴鍖恒€?vue-img-inputer Vue 2鐨勪紭缇庯紝楂樺害鍙畾鍒剁殑img绫诲瀷杈撳叆 vue-img-preview vue 2涓殑鍥惧儚杈撳叆棰勮缁勪欢 褰卞儚 馃摲 杈撳叆绫诲瀷=鏂囦欢鐨勫井灏忕粍浠讹紙<1kb锛屽凡鍘嬬缉锛?@ voerro / vue-tagsinput涓€涓畝鍗曠殑鏍囩杈撳叆甯︽湁typeahead / autocomplete鐨刅ue.js 2缁勪欢 vue-tag-selector-绫讳技鏍囩鐨勮緭鍏ャ€傝交宸э紝鍙嚜瀹氫箟骞跺鐞哛EGEX楠岃瘉锛?vue-input-text-to-tags-涓€涓緭鍏ョ粍浠讹紝鍙互涓虹粨鏋滄樉绀哄垱寤烘爣绛?棰滆壊閫夋嫨鍣?vue- color-閫傜敤浜嶴ketch锛孭hotoshop锛孋hrome绛夌殑Vue鎷捐壊鍣ㄣ€?Vue鑹叉澘-甯姪鐢ㄦ埛閫夋嫨缇庝附鐨勯鑹诧紒 寰勫悜棰滆壊閫夋嫨鍣?绠€绾︾殑棰滆壊閫夋嫨鍣紝娉ㄩ噸澶у皬锛屽彲璁块棶鎬у拰鎬ц兘銆?vue-color-picker- board-涓轰汉绫昏璁$殑Vue鎷捐壊鍣ㄧ粍浠讹紒 闊﹀皵鐗?涓€涓畬鏁寸殑Vue.js鎷捐壊鍣ㄧ粍浠躲€?寮€鍏?寮€鍏?寮€/鍏冲垏鎹?澶嶉€夋

vue-switches-鍏锋湁涓婚鏀寔鐨刅ue.js鐨勫紑/鍏冲紑鍏崇粍浠躲€?vue- js-鍒囨崲鎸夐挳-Vue.js 2.0+鍒囨崲/鍒囨崲鎸夐挳-绠€鍗曪紝婕備寒锛屽彲鑷畾涔夈€?vue-checkbox-radio-涓€涓猇ue缁勪欢锛屽彲杞绘澗璁剧疆澶嶉€夋鍜屽崟閫夎緭鍏ョ殑鏍峰紡銆?vue-enhanced-check -Vue缁勪欢锛岀敤浜庨噸鏂拌璁?鏍囪澶嶉€夋/鍗曢€夋锛屽寘鎷垏鎹?鍒囨崲鎸夐挳銆?pretty-checkbox-vue - Vue.js 2.2鍙婃洿楂樼増鏈殑婕備寒澶嶉€夋3锛堢敤浜庣編鍖栧閫夋鍜屽崟閫夋寜閽殑绾疌SS搴擄級缁勪欢鐨勫疄鐜般€?vue2-collapse -Vue Collapse鏄竴涓伒娲荤殑鍐呭鍒囨崲鎻掍欢锛岀敤浜庢墜椋庣惔鍒楄〃鎴栦换浣曞叾浠栨湁鏉′欢鐨勫唴瀹瑰憟鐜般€?vue-badger-accordion -Vue.js 2.0+鐨凚adger鎵嬮鐞寸殑鍖呰缁勪欢 vue-loading-checkbox-鍏锋湁鍔犺浇鐘舵€佺殑楂樺害鍙畾鍒剁殑Vue.js澶嶉€夋UI缁勪欢 vue-rocker-switch -Vue.js鐨勫彲瀹氬埗鐨勭繕鏉垮紑鍏崇粍浠躲€?vue-toggle-btn-楂樺害鍙畾鍒剁殑锛屾槗浜庝娇鐢ㄧ殑浼橀泤鍒囨崲/鍒囨崲鎸夐挳缁勪欢 vue-tristate-checkbox-鏀寔琛ㄥ崟鎻愪氦鐨勫惊鐜笁鎬佸閫夋 vue-toggles-楂樺害鍙畾鍒跺拰鍙闂殑鍒囨崲缁勪欢 灞忚斀杈撳叆 vue-masked-input -Vue.js鐨勬帺鐮佽緭鍏ョ粍浠躲€?vue-text-mask -React锛孉ngular锛孍mber锛孷ue鍜岀函JavaScript鐨勮緭鍏ユ帺鐮併€?vue-ip- input-鐢眝uejs瀹炵幇鐨刬p杈撳叆銆?vue-numeric-杈撳叆瀛楁缁勪欢锛岀敤浜庢樉绀哄熀浜嶸ue鐨勮揣甯佸€笺€?awesome- mask-鍩轰簬绾疺anillaJS瀹炵幇鐨凪ask鎸囦护 v- money-璐у竵鐨勫井灏忥紙灏忎簬2k鍘嬬缉锛夎緭鍏?鎸囦护鎺╃爜 vue-autonumeric-鍖呰浜嗗緢妫掔殑AutoNumeric杈撳叆鏍煎紡鍖栫▼搴忓簱鐨刅ue.js缁勪欢 vue-inputmask -Vue.js鎸囦护锛屽皢Robin Herbots鐨刬nputmask搴撴坊鍔犲埌鎮ㄧ殑杈撳叆涓紙棣欒崏javascript锛夈€?vue-input-number -Vue.js 2鐨勮嚜瀹氫箟杈撳叆鏁板瓧缁勪欢銆?v-unicode -Vue鎸囦护閫氳繃unicode鍊奸檺鍒惰緭鍏ャ€?VUE -鍒囧壊-缁勪欢-涓篤ue.js缁勪欢cleave.js vue-ip-鍏锋湁绔彛鍜屾潗鏂欒璁℃敮鎸佺殑IP鍦板潃杈撳叆 vue-r-mask-鍏锋湁绫讳技浜巎avascript姝e垯琛ㄨ揪寮忕殑妯℃澘鐨勬寚浠ゃ€?vue-input- code-鍩轰簬Vue.js 2.0+楠岃瘉鐮佽緭鍏ョ粍浠躲€?label- edit-鍙桾rello鐨勫惎鍙戙€傚崟鍑讳互鏄剧ず鍙紪杈戠殑杈撳叆骞惰繑鍥炲€兼洿鏀广€傝繖鏄疺ue缁勪欢銆?vue-jquery-mask - jQuery Mask鎻掍欢鐨刅ue.js v2.x缁勪欢 vue-the-mask -Vue.js鐨勫井灏忥紙<2k gzip鍘嬬缉锛夊拰鏃犱緷璧栨帺鐮佽緭鍏?vue-currency- input-杞绘澗杈撳叆Vue.js鐨勮揣甯佹牸寮忔暟瀛椼€?vue-restricted- input-鍩轰簬鍙楅檺杈撳叆鐨剉ue.js杈撳叆鎺╃爜搴?vue-input- facade-涓撲负Vue鍒涘缓鐨勮交閲忕骇涓旀棤渚濊禆椤圭殑杈撳叆灞忚斀搴擄紝鏈€鍒濇槸钁楀悕鐨剉ue-text-mask鐨勫垎鏀紝浣嗙粡杩囦富鍔ㄧ淮鎶わ紝涔嬪悗鏈変簡寰堝鏀硅繘銆?瀵屾枃鏈紪杈?vue- quill -editor -Vue2鐨勯箙姣涚瑪缂栬緫鍣ㄧ粍浠躲€?vue-mobiledoc- editor-鐢ㄤ簬Vuejs鐨刴obiledoc缂栬緫鍣ㄧ粍浠跺伐鍏风銆?vue2-medium-editor -Vue 2鐨凪ediumEditor缁勪欢銆?vue-froala-wysiwyg- Froala WYSIWIG HTML缂栬緫鍣ㄧ殑瀹樻柟VueJS鎻掍欢銆?vue-at -Vue鐨凙t.js銆?vue-wysiwyg杞诲阀锛屽揩閫熶笖鍙墿灞曠殑鎵€瑙佸嵆鎵€寰楃紪杈戝櫒 vue-trumbowyg Trumbowyg鎵€瑙佸嵆鎵€寰楃紪杈戝櫒鐨刅ue.js缁勪欢 鐢ㄤ簬Pell WYSIWYG缂栬緫鍣ㄧ殑vue-pell-editor Vue.js缁勪欢 vue-tinymce-editor Vue2鐨凾inymce缂栬緫鍣ㄧ粍浠躲€?vue-mce -VueJS鐨則inymce缂栬緫鍣ㄧ粍浠躲€?Vue2-Editor-浣跨敤Vue.js鍜孮uilljs鐨凥TML缂栬緫鍣?vue-codemirror-Vue2鐨凜odemirror缁勪欢銆?vue-easy-tinymce-涓€涓畝鍗曡€屽己澶х殑杞欢鍖咃紝鐢ㄤ簬鍦╒ue.js椤圭洰涓交鏉句娇鐢╰inymce銆?vue-highlightable-input-杈撳叆鏃剁獊鍑烘樉绀哄拰璁剧疆鏍峰紡 vue-trix -Vue.js鐨勭畝鍗曡交閲忕骇Trix瀵屾枃鏈紪杈戝櫒 tiptap - Vue.js鐨勪笉鍙覆鏌撲笖鍙墿灞曠殑RTF缂栬緫鍣?toast-ui.vue-editor - TOAST UI缂栬緫鍣ㄧ殑Vue鍖呰鍣ㄣ€?ckeditor5-vue - Vue.js鐨勫畼鏂笴KEditor 5 RTF缂栬緫鍣ㄧ粍浠躲€?yimo-vue-editor -Vue2鐨剋angEditor2缁勪欢銆?vue-mathlive Vue.hjs鐨凪athLive鏁板缂栬緫鍣紙mathfield锛?vue-editor-js涓嬩竴浠e潡鏍峰紡缂栬緫鍣ㄣ€傚浜嶸ue.js element-tiptap涓€涓负Vue.js浣跨敤Tiptap鍜孍lement UI鐨刉YSIWYG瀵屾枃鏈紪杈戝櫒 @ mycure / vue-wysiwyg- 34Kb杞婚噺绾ф墍瑙佸嵆鎵€寰楃紪杈戝櫒锛屾病鏈夌3鏂规彃浠躲€?ckeditor4-vue - Vue.js鐨勫畼鏂笴KEditor 4 RTF缂栬緫鍣ㄧ粍浠躲€?鍥惧儚澶勭悊 缂栬緫褰卞儚

vue-core-image- upload-涓€涓獀ue鎻掍欢锛岀敤浜庤鍓拰涓婁紶鍥惧儚銆?vue-croppa -Vue 2.0鐨勪竴娆剧畝鍗曟槗鐢ㄧ殑鍙嚜瀹氫箟杞婚噺绾хЩ鍔ㄥ弸濂藉瀷鍥惧儚瑁佸壀鍣ㄣ€?vue- cropper - vue2.0鐨勫浘鐗囧壀杈戞彃浠?toast-ui.vue-image-editor-鐢ㄤ簬TOAST UI鍥惧儚缂栬緫鍣ㄧ殑Vue鍖呰鍣ㄣ€?vue-quick-cropper -Vue绉诲姩澶村儚涓婁紶瑁佸壀鎻掍欢鍙互閫夋嫨瑁佸壀鍖哄煙鍜岀缉鏀俱€?vue-croppie-鍙︿竴涓浘鍍忚鍓櫒 VUE -瓒呰杽鏍借窡澶?馃拠 Vue 2.x鐨勭畝鍗曚紭闆呯殑绉诲姩鍥惧儚瑁佸壀涓婁紶缁勪欢銆?vue-advanced-cropper-涓€绉嶉珮绾ц鍓櫒锛屼娇鎮ㄦ湁鏈轰細鍒涘缓鍑犱箮鎵€闇€鐨勪换浣曡鍓櫒 vue-anka-cropper-鍥惧儚瑁佸壀鍣ㄥ拰涓婁紶鍣紝鐭╁舰鍜屽渾褰㈣鍓紝鍙畾鍒剁殑CSS Vue鍥剧墖鍓垏-鍥惧儚瑁佸壀鍣細缂╂斁锛岀炕杞紝鏃嬭浆锛岃竟缂樻鏌ワ紝鐭╁舰鍓緫锛屾き鍦嗗壀杈?vue-img- cutter-鐢ㄤ簬鍥惧儚鍒囧壊宸ュ叿鐨剉ue鎻掍欢锛屼娇鐢ㄩ潪甯告柟渚裤€?鏄剧ず褰卞儚

vue-cloudinary -vue锛?.0锛夋彃浠讹紝鎻愪緵浜嗗彲閲嶅浣跨敤鐨勬寚浠わ紝鍙€氳繃鍔ㄦ€佹搷浣滐紙璋冩暣澶у皬/瑁佸壀/鏁堟灉/姘村嵃/缂╂斁/鏍煎紡鍖?鏍煎紡鍖栵級鍜屼紭鍖栵紙webp /锛変粠Cloudinary锛坔ttps://cloudinary.com锛夎幏鍙栧浘鍍弍ng /鑷姩璐ㄩ噺/鑷姩瑙嗙綉鑶滐級銆?img-Vuer-Vue2鐨勭Щ鍔ㄤ紭鍏堝浘鍍忔煡鐪嬪櫒/鍥惧簱 vue-image-loader -Vue鍔犺浇鍣?娓愯繘寮忓浘鍍忔彃浠讹紝渚嬪Medium銆?vue-load-image-鍦ㄥ浘鍍忓姞杞芥湡闂存樉绀哄姞杞藉櫒锛屼互鍙婂湪鍥惧儚鍔犺浇澶辫触鏃舵樉绀烘浛浠e唴瀹广€?Vue鍥惧儚鐢诲-馃檵 Vue 2.x鐨勫浘鍍忛瓟鏈姩鐢荤粯鍥炬晥鏋滅粍浠躲€?VUE-cosha -馃帹 鏄撲簬浣跨敤鐨剉ue鎸囦护锛屽彲鍦ㄤ换浣曞浘鍍忓悗闈㈡斁缃僵鑹查槾褰?vue-image- kit-鍐呯疆浜嗗欢杩熷姞杞藉拰鍝嶅簲寮忓浘鍍忕殑Vue.js鍥惧儚濂椾欢缁勪欢銆?瑙嗛鎿嶇旱 vue-playlist-涓€涓交閲忕骇鐨剉ue锛?.0锛夌粍浠讹紝娌℃湁渚濊禆鍏崇郴锛屽彲鎻愪緵鐪熸鏃犵紳鐨刪tml5瑙嗛鎾斁銆備娇鐢╒anilla JS杩涜鏃犵紳瑙嗛鎾斁鐨勫敮涓€涓斿敮涓€鍙鐨勮В鈥嬧€嬪喅鏂规銆傚畠闇€瑕佷竴绯诲垪瑙嗛骞跺皢瀹冧滑鎷兼帴鍦ㄤ竴璧锋垚涓轰竴涓棰戙€?涓婁紶鏂囦欢 vue-clip -VueJs鐨勭畝鍗曞彲鍏ヤ镜鏂囦欢涓婁紶鍣ㄣ€傛敮鎸乂ue> = 2.1銆?vue-simple-upload -Vue.js鐨勭畝鍗曟枃浠朵笂浼犵粍浠躲€?vue2-multi-uploader-浣跨敤Vue.js v2鍜孉xios鐨勬嫋鏀惧紡澶氭枃浠朵笂浼犲櫒缁勪欢銆備笂杞藉櫒鏄剧ず鏂囦欢鍚嶏紝澶у皬鍜屾坊鍔犳枃浠剁殑鎬诲ぇ灏忋€傚畠杩樺厑璁歌缃墍闇€鐨勬渶灏忔枃浠朵笂浼犳暟閲忋€?vue-dropzone -Dropzone.js鐨刅ue.js锛坴ue2锛夌粍浠?甯︽湁鍥惧儚棰勮鐨勬嫋鏀炬枃浠朵笂浼犲疄鐢ㄧ▼搴忋€?vue-transmit-涓€涓函绮圭殑鍩轰簬Vue 2.0鐨凞ropzone.js鐨刅ue.js鎷栨斁涓婁紶鍣ㄧ粍浠?vue-upload-component -Vue涓婁紶缁勪欢锛屽鏂囦欢涓婁紶锛屼笂浼犵洰褰曪紝鎷栧姩涓婁紶锛屾嫋鍔ㄧ洰褰曘€傛敮鎸乂ue> = 2.0 vue-uploader-涓€涓敱simple-uploader.js椹卞姩鐨刅ue.js涓婁紶缁勪欢 ic-firebase-uploader-鐢ㄤ簬Firebase瀛樺偍鐨勫共鍑€鐨勫鏂囦欢涓婁紶缁勪欢銆?vuejs-uploader-鐢ㄤ簬澶у瀷鏂囦欢涓婁紶鐨勫彲鎭㈠鐨勫垎娈垫枃浠朵笂浼犲櫒銆?vue-filepond-FilePond鐨刅ue.js缁勪欢-涓€涓枃浠朵笂浼犲簱锛屽彲浠ヤ笂浼犳偍鎵旂粰瀹冪殑浠讳綍鍐呭銆?v-uploader-涓€涓猇ue2鎻掍欢锛屼娇涓婁紶鏂囦欢鍙樺緱鏇村姞杞绘澗绠€鍗曪紝鎮ㄥ彲浠ユ嫋鍔ㄦ枃浠舵垨鍦ㄥ璇濇涓€夋嫨鏂囦欢杩涜涓婁紶 vue-file-agent-鍚敤浜嗗叏鍔熻兘鐨勬嫋鏀惧姛鑳斤紝鍏锋湁棰勮鍜屼笂浼犺繘搴︾殑Vue鏂囦欢涓婁紶缁勪欢 涓婁笅鏂囪彍鍗?vue-context-menu -vue js鐨勪笂涓嬫枃鑿滃崟缁勪欢銆?vue-lil-context-menu -Vue鐨勭伒娲荤殑lil涓婁笅鏂囪彍鍗曠粍浠躲€?vue-mouse-menu -vue 2.6+鐨勫脊鍑鸿彍鍗曪紝鏀寔绉诲姩璁惧銆?vue-context-鐢ㄤ簬vue js鐨勭畝鍗曚絾鐏垫椿鐨勪笂涓嬫枃鑿滃崟銆?vue-simple-context-menu-涓篤ue鏋勫缓鐨勭畝鍗曚笂涓嬫枃鑿滃崟缁勪欢銆傚乏閿拰鍙抽敭閮藉彲浠ュ緢濂藉湴宸ヤ綔銆?vue-context-menu-popup -Vue 2鐨勪笂涓嬫枃鑿滃崟寮瑰嚭绐楀彛銆傚彸閿崟鍑诲嵆鍙伐浣滐紝涔熷彲浠ラ€氳繃缂栫▼鏂瑰紡瑙﹀彂銆?@ kiyoaki_w / vue- context-涓篤ue2鏋勫缓鐨勫彲鑷畾涔変笂涓嬫枃鑿滃崟缁勪欢锛屾敮鎸乫ontawesome鍥炬爣銆?@ overcoder / vue-context-menu-鏈€灏忕殑涓婁笅鏂囪彍鍗?鏉?vue-gmaps-浣跨敤Google Maps API鎼滅储鍦扮偣鍜屽湴鍧€銆?vuep-浣跨敤瀹炴椂缂栬緫鍣ㄥ拰棰勮娓叉煋Vue缁勪欢鐨勭粍浠躲€?vue-places -Places缁勪欢鍩轰簬Vue 2.x鐨刾laces.js銆傚皢浠讳綍杈撳叆杞崲涓哄湴鍧€鑷姩瀹屾垚銆?vue-password-strength-meter -vue.js涓熀浜巣xcvbn鐨勫瘑鐮佸己搴﹁銆?vue-float-label -Vue.js鐨勬诞鍔ㄦ爣绛炬ā寮忋€?vue- longpress-涓€涓猇ueJS锛?.x锛夋寜閽粍浠讹紝瑕佹眰鎮ㄦ寜浣忎互纭缁欏畾鐨勬搷浣溿€?vue-google-autocomplete -Google Maps Places API鐨刅ue.js锛?.x锛夎嚜鍔ㄥ缓璁粍浠躲€?vue-default-value -Vue.js 2.x鎸囦护涓哄彲缂栬緫鍏冪礌璁剧疆榛樿鍊硷紝鑰屼笉浼氬奖鍝嶆ā鍨嬬姸鎬?vue-model- autoset-涓€涓猇ue.js鎻掍欢锛屽彲瑙e喅閫氳繃v-model鎸囦护瑙傚療鍔ㄦ€佹坊鍔犵殑灞炴€ф椂Vue鐨勯檺鍒?VUE鎻愪氦-绠€鍗曞疄鐜癓adda锛堢殑1锛?涓庢病鏈変緷璧栨€у皬浜?0琛岀殑浠g爜锛夈€?vue-rate -Vue鐨勮垂鐜囬儴鍒?vuetify-google-autocomplete-閫傜敤浜嶨oogle Maps Places API鐨刅uetify灏辩华Vue.js锛?.x锛夎嚜鍔ㄥ缓璁粍浠躲€?vue-ripple-directive-浣滀负Vue鎸囦护鐨勬潗鏂欑汗娉㈡晥鏋溿€?vue-fab -Vue娴姩鎿嶄綔鎸夐挳銆?vue-complexify-鏉ヨ嚜jquery.complexify.js鐨刅uejs绉绘搴?vue-mc -Vue.js鐨勬ā鍨嬪拰闆嗗悎 vue-stars-楂樺害鍙畾鍒剁殑绛夌骇鎺у埗锛堜娇鐢ㄦ槦鍙锋垨鍏朵粬瀛楃锛?vue-confirmation-button-鍙畾鍒剁殑纭鎸夐挳锛岃姹傜敤鎴峰湪鎵ц鎿嶄綔涔嬪墠鍏堥槄璇绘秷鎭?vue- poll-鐢ㄤ簬鎶曠エ鐨刅ue.js缁勪欢 vue-diagrams -vue.js鐨勫浘琛ㄧ粍浠讹紝鍙梤eact-diagrams鍚彂 vue-easy- polls-涓€涓猇ue.js缁勪欢锛岀敤浜庡垱寤烘皯鎰忔祴楠岋紝鎶曠エ鍜屾樉绀虹粨鏋溿€傚畠鏄撲簬瀹炵幇涓旀槗浜庡畾鍒躲€?vue-m-button - vue鐨勬紓浜寜閽粍浠躲€?vue-long-click - vue鐨勯暱鎸夛紙闀挎寜锛夋寚浠ゅ簱锛屾敮鎸佺Щ鍔ㄥ拰妗岄潰銆?vue-ui-predicate-瑙勫垯缂栬緫鍣紝閫氱敤杩囨护UI锛孷ue JS鐨勮皳璇嶇粍浠躲€?vue-mobile-detection -Vue.js鍘熷瀷鍑芥暟this.$isMobile()锛屾牴鎹敤鎴锋槸鍚︿娇鐢ㄦ墜鏈烘祻瑙堣繑鍥炲竷灏斿€笺€?vue-input-contenteditable-contenteditable鍏锋湁閫氬父鎵€闇€鐨勬墍鏈夊姛鑳界殑Vue缁勪欢鍖呰銆備笉鍙楅檺鍒跺湴杩涜婕備寒鐨勮緭鍏nput[type='text']銆?@ utlime / vue-zoom -Vue缂╂斁缁勪欢銆?vue-credit- card-鐢ㄤ簬淇$敤鍗¤緭鍏ワ紝閬僵鍜岄瑙堢殑Vue缁勪欢 vue-simple-password-meter-杞婚噺绾у瘑鐮佸己搴﹁锛屼笉渚濊禆 vue-autosizer-鍐呯疆

vue-waterfall -Vue.js鐨勭€戝竷甯冨眬缁勪欢銆?vueisotope-鐢ㄤ簬鍚屼綅绱犺繃婊ゅ櫒鍜屽垎绫婚瓟鏈竷灞€鐨刅ue缁勪欢銆?vue-grid-layout -Vue.js鐨勫彲鎷栧姩鍜屽彲璋冩暣澶у皬鐨勭綉鏍煎竷灞€銆?vue-drag-zone -Vue.js锛?.x锛夌殑鎷栧姩鍖哄煙缁勪欢銆?vue- masonry-鐢ㄤ簬鐮屽潡甯冨眬鐨刅ue.js鎸囦护銆?vue-fraction- grid-鐢ㄤ簬Vue.js鐨勫熀浜嶧lexbox鐨勫搷搴斿紡鍒嗘暟缃戞牸绯荤粺銆?vue-virtual-scroll-list -vue锛?.x锛夌粍浠堕€氳繃浣跨敤铏氭嫙婊氬姩鍒楄〃鏀寔澶ф暟鎹€?vue-virtual-scroller-鏈夋晥婊氬姩澶ч噺鍏冪礌鐨勭粍浠讹紙Vue 2.x锛夈€?vue-virtualscroll-铏氭嫙婊氬姩鍐呭鐨刐Vue 2.x]缁勪欢銆?vue-inview- [Vue 2.x]瑙嗗彛锛屽湪杈撳叆鎴栫寮€DOM鍏冪礌鏃惰幏鍙栭€氱煡銆?dnd- grid-鍏锋湁鍙嫋鍔ㄥ拰鍙皟鏁村ぇ灏忕殑妗嗙殑vuejs缃戞牸 vue-extend- layout-鎵╁睍榛樿甯冨眬鎴栦负Vue.js SPA鐨勯〉闈㈠垱寤鸿嚜瀹氫箟甯冨眬 vue-masonry- css-鐢盋SS鏀寔鐨刅ue.js Masonry甯冨眬缁勪欢锛屾棤渚濊禆銆?vue-fullpage.js-Vue.js鐨勫畼鏂筬ullPage.js缁勪欢銆?vue-virtual-collection -Vue缁勪欢锛岀敤浜庢湁鏁堝湴鍛堢幇澶у瀷闆嗗悎鏁版嵁銆?autosensitive-vue -Vue鐨勮嚜鍔ㄥ搷搴斿紡缃戞牸甯冨眬搴撱€?VueFlex -Flexbox缃戞牸绯荤粺銆?v-chacheli-涓€涓猇ue.js缁勪欢锛岀敤浜庡垱寤哄拰鏄剧ず绫讳技浜庝华琛ㄦ澘鐨勮嚜瀹氫箟缃戞牸甯冨眬銆?vue-grid-styled-浠嶳eact鐨凣rid-styled绉绘鐨勮交閲忕骇鍔熻兘鎬х綉鏍肩粍浠堕泦 simple- grid-鐢ㄤ簬缃戞牸甯冨眬鐨刅ue缁勪欢锛屾敮鎸乫lex銆?vue-container- component-鍙桞ootstrap Container鍚彂鐨勭畝鍗曞鍣ㄧ粍浠?vue-colcade-鐢ㄤ簬灏咰olcade缃戞牸甯冨眬闆嗘垚鍒癡uejs鐨勫皬鍨嬪寘瑁呭櫒銆?vue-ads-layout -Vue缁勪欢鐨勫皬鍨嬪簱锛屽彲蹇€熺敓鎴愬叿鏈夊伐鍏锋爮锛屽乏/鍙虫娊灞夊拰椤佃剼鐨勮嚜閫傚簲Web搴旂敤绋嬪簭甯冨眬銆傛墍鏈夌粍浠堕兘鍙互鍥哄畾鎴栫浉瀵规斁缃€?vue-magic-grid -Vue.js鐨凪agic Grid鐨勪竴涓緢灏忕殑绔彛2銆?vue-splitter- pane-涓€涓猇uejs缁勪欢锛屼互鍙皟鏁寸殑鎷嗗垎鏂瑰紡锛堝瀭鐩存垨姘村钩锛夊憟鐜颁袱涓彃妲姐€?splitpanes -Vue JS鍙潬锛岀畝鍗曚笖鍙Е鎽哥殑绐楁牸鍒嗙鍣?缂╂斁鍣ㄣ€?vue-mock-layout-杞绘澗妯℃嫙Vue搴旂敤绋嬪簭鐨勫竷灞€銆?vue-simple-drawer-涓€涓緢灏忕殑鎶藉眽闈㈡澘锛屽叿鏈夎烦鍔ㄧ殑鍔ㄧ敾锛屾敮鎸佸祵濂楀拰鑷畾涔変富棰樸€傛柟鍚戯細宸?鍙?涓?涓?vue- grd-鐢ㄤ簬缃戞牸甯冨眬鐨勭畝鍗曪紝杞诲阀鍜岀伒娲荤殑Vue.js缁勪欢銆?vue-masonry-component-涓€涓寘瑁呯爾鐭冲竷灞€搴撶殑Vue.js缁勪欢銆?vue-smart- widget-鏅鸿兘灏忛儴浠舵槸Vue.js 2.x鐨勭伒娲讳笖鍙墿灞曠殑鍐呭瀹瑰櫒缁勪欢銆?vue-colrow-鍝嶅簲寮忕綉鏍煎竷灞€缁勪欢锛氳锛屽垪銆傚熀浜巆ss flexbox銆傛敮鎸丼SR锛屽浐瀹氬搴︽垨鍒嗘暟瀹藉害锛岃嚜鍔ㄥ闀緾ol銆?vue-diagonal-鐢ㄤ簬鍒涘缓瀵硅绾垮厓绱犵殑绠€鍗曡交閲忕骇缁勪欢銆?vue-sensitive- dash-浣跨敤vue鍜屾墦瀛楃鍒朵綔鐨勮嚜閫傚簲锛屽彲鎷栧姩鍜屽彲璋冩暣澶у皬鐨勪华琛ㄦ澘锛堢綉鏍硷級銆?vue-masonry- wall-绾补鐨剉ue鍝嶅簲寮忕爩浣撳竷灞€锛屾棤闇€鐩存帴杩涜dom鎿嶇旱锛宻sr鍙嬪ソ鍜屽欢杩熷姞杞姐€?vue-horizo鈥嬧€媙tal- list-鍏锋湁ssr鏀寔锛岀Щ鍔ㄥ拰瑙︽懜鍙嬪ソ鐨勭函vue鍝嶅簲寮忔按骞冲垪琛ㄥ竷灞€銆?鏋勬灦 鍙嶅簲鐏垫晱 缁勪欢闆?鍝嶅簲寮忓竷灞€绯荤粺

鎷熸鏋?绫绘槦浣撴鏋躲€備娇鐢╒ueJs浣跨敤鐩稿悓鐨勪唬鐮佹瀯寤哄搷搴斿紡缃戠珯锛屾贩鍚堢Щ鍔ㄥ簲鐢ㄧ▼搴忓拰Electron搴旂敤绋嬪簭銆?vue-material -Vue.js鐨勬潗鏂欒璁°€?vuetify - Vue.js鐨勬潗鏂欑粍浠舵鏋?銆?muse-ui -Vue.js鐨勬潗鏂欑粍浠跺簱2銆?buefy-鍩轰簬甯冨皵鐜涙鏋剁殑缁勪欢銆?element- ui-鐢ㄤ簬Web鐨刅ue.js 2.0 UI宸ュ叿鍖呫€?vue-bulma-components-瀵箆ue缁勪欢杞绘澗浣跨敤bulma绫昏娉曘€?iview- ui-鐢ㄤ簬Web鐨刅ue.js 2.0 UI妗嗘灦銆?AT-UI-涓撻棬鐢ㄤ簬妗岄潰搴旂敤绋嬪簭鐨勫叏鏂版墎骞砋I-Kit锛屼娇鐢ㄢ櫏 閫氳繃Vue.js 2.0 v-semantic - Vue鐨勮涔塙I鐨勫疄鐜?BootstrapVue -Vue.js鐨凚ootstrap v4缁勪欢鍜岀綉鏍肩郴缁熴€?fish- ui-鐢ㄤ簬Web鐨刅ue.js 2.0 UI宸ュ叿鍖?zircle-ui-寮€鍙戝彲缂╂斁鐢ㄦ埛鐣岄潰鐨勫墠绔簱銆?鏉愭枡闆朵欢鐨刅ue -鍥寸粫鍖呰鏉愭枡缁勪欢鐨刉eb涓篤ue.js VueFace-鐢ㄤ簬Web鐨刅ue.js 2.0 UI缁勪欢搴?vuecidity -Vue.js 2.0鐨刄I缁勪欢妗嗘灦 ant-design-vue-鍩轰簬Ant Design鍜孷ue 2.5.0鐨勪紒涓氱骇UI缁勪欢 heyui-锛坔ttps://www.heyui.top/zh-锛?鐢ㄤ簬Web鐨刅ue.js 2.0 UI宸ュ叿鍖呫€?Carvue.js -IBM鐨刅ue.js纰宠璁$郴缁?BalmUI-鍩轰簬Material Design鍜孷ue 3.0鐨勬ā鍧楀寲涓斿彲鑷畾涔夌殑UI搴?Osiris鐢ㄦ埛鐣岄潰-馃帹 Vue.js 2.0閫氱敤鍝嶅簲寮廢I缁勪欢搴?N3缁勪欢-鐢╒ue 2鏋勫缓鐨勬紓浜甒eb缁勪欢 纰庣墖Vue鍏徃-鉁?鍩轰簬Bootstrap 4妗嗘灦鐨勬椂灏氬拰UI缁勪欢搴撱€?鍩虹Vue-鍩轰簬SAP Fiori鍩虹鐨勭粍浠躲€?Framevuerk -馃殌 蹇€燂紝鍝嶅簲杩呴€燂紝鏃犱緷璧栧叧绯伙紝鍩轰簬Vue.js鐨勬柟鍚戞敮鎸佸拰鍙厤缃甎I妗嗘灦銆?@ Carbon / vue- @carbon鍥㈤槦鐨凜arbon璁捐绯荤粺缁勪欢銆?Inkline -Inkline鏄疺ue.js鐨勭幇浠I / UX妗嗘灦锛屾棬鍦ㄥ垱寤哄畬缇庣殑鍝嶅簲寮廤eb搴旂敤绋嬪簭銆?vue-awesome-mui -Web鐨刅ue.js 2.0 MUI缁勪欢 MDBootstrap-寮哄ぇ鐨刄I宸ュ叿鍖咃紝鍩轰簬鏈€鏂扮殑Bootstrap 4鍜孷ue 2.6.10锛屾彁渚涗簡涓€缁勬祦鐣呯殑锛屽搷搴斿紡椤甸潰妯℃澘锛屽竷灞€锛岀粍浠跺拰灏忛儴浠讹紝鍙揩閫熸瀯寤哄搷搴斿紡锛岀Щ鍔ㄤ紭鍏堢殑缃戠珯鍜屽簲鐢ㄧ▼搴忋€?vue-material-adapter -Vue.js鐨勬潗鏂欑粍浠剁殑闆嗘垚锛岄伒寰狦oogle鎺ㄨ崘鐨勬渶浣冲疄璺碉細浣跨敤鍩虹鍜岄€傞厤鍣?PrimeVue -Vue鐨勬渶瀹屾暣鐨刄I缁勪欢搴?CoreUI for Vue.js -CoreUI for Vue.js鏄竴涓猆I缁勪欢搴擄紝鎻愪緵浜嗚澶氳法娴忚鍣紝鍝嶅簲寮忓拰杞婚噺绾х殑Vue.js UI缁勪欢銆?DaoStyle-鍩轰簬Vue.js鏋勫缓鐨勯珮璐ㄩ噺缁勪欢搴撱€?鑴夎疆UI Vue鍏徃-鈿?杞诲阀涓斿彲鑷畾涔夌殑缁勪欢搴擄紝鍙府鍔╂偍蹇€熸瀯寤哄彲璁块棶鐨刅ue搴旂敤绋嬪簭鍜岀珯鐐广€?vue- canvas-鐢ㄤ簬vuc-identify鐨刅ue鐢诲竷缁勪欢 oruga-娌℃湁CSS妗嗘灦渚濊禆鎬х殑Vue.js鐨刄I缁勪欢銆?Wave UI -Vue.js鐨勬柊鍏碪I妗嗘灦锛屽彧鏈夊厜鏄庣殑涓€闈€傗榾锔?vectre-鍩轰簬Spectre CSS鐨勮交閲忕骇锛岀畝鍗曚笖鍝嶅簲杩呴€熺殑缁勪欢妗嗘灦 element3-鐢ㄤ簬Web鐨刅ue.js 3.0 UI宸ュ叿鍖呭熀浜巈lement-ui superBVue -Web鐨刅ue 3 UI缁勪欢鍩轰簬boostrap v5 Qui -Web鐨刅ue 2.x璁捐绯荤粺 绉诲姩 绉诲姩鐗圲I妗嗘灦

Framework7-Vue-浣跨敤Framework7锛哣ue鏋勫缓鍔熻兘鍏ㄩ潰鐨刬OS鍜孉ndroid搴旂敤绋嬪簭銆?vux- [涓枃]鍩轰簬WeUI鐨刅ue UI缁勪欢銆?vue-onsenui-浣跨敤HTML5鍜孞avaScript鐨勭Щ鍔ㄥ簲鐢ㄧ▼搴忓紑鍙戞鏋跺拰SDK銆傚垱寤虹編瑙傦紝楂樻€ц兘鐨勮法骞冲彴绉诲姩搴旂敤绋嬪簭銆傚熀浜嶹eb缁勪欢锛屽苟鎻愪緵Angular 1銆?锛孯eact鍜孷ue.js鐨勭粦瀹氥€?Weex -Weex鎻愪緵浜嗚法骞冲彴鍙戝竷鐨勫姛鑳斤紝鍥犳Web锛孉ndroid鍜孖OS搴旂敤绋嬪簭鍙互浣跨敤鐩稿悓鐨凙PI寮€鍙戝姛鑳姐€?weex-eros- [涓枃] Eros鏄熀浜嶹eex鍜孷ue鐨勫簲鐢ㄧ▼搴忚В鍐虫柟妗堬紝浣挎偍鍙互浣跨敤Vue鐨凙PI锛岀畝鍗曞揩閫熷湴寮€鍙戜腑灏忓瀷搴旂敤绋嬪簭銆?绉诲姩缁勪欢闆?/p>

mint-ui -Vue.js鐨勭Щ鍔║I鍏冪礌銆?VANT -鐢睼ue.js 2.0绉诲姩UI浠嶻ouZan銆?cube-ui -Vue.js缂栧啓鐨勫嚭鑹茬殑绉诲姩ui lib瀹炵幇2銆?mand- mobile-鍩轰簬Vue.js 2鐨勭Щ鍔║I宸ュ叿鍖咃紝涓撲负閲戣瀺鍦烘櫙鑰岃璁°€?NutUI-鐢ㄤ簬绉诲姩Web鐨刅ue.js 2.0 UI宸ュ叿鍖?缁勪欢闆嗗悎 缁勪欢闆嗭紝涓嶅甫甯冨眬绯荤粺

vue-mdc-Vue.js鐨勬潗鏂欑粍浠剁綉绔欍€?keen-ui-鐢盫ue缂栧啓骞跺彈Material Design鍚彂鐨勫熀鏈琔I缁勪欢鐨勮交閲忕骇闆嗗悎銆?vue-admin -Vue绠$悊闈㈡澘妗嗘灦锛岀敱Vue 2.0鍜孊ulma 0.3鎻愪緵鏀寔銆?vuikit-鍏锋湁Vue鎵€鏈夊姛鑳界殑UIkit銆?uiv-鐢盫ue2瀹炵幇鐨凚ootstrap3缁勪欢銆?wffranco / vue- strap-浣跨敤Vue.js 2鏋勫缓鐨凚ootstrap 3缁勪欢 jsmod-vue-pc-閫傜敤浜巚ue 2.0鐨勯珮搴﹀彲鎵╁睍鐨刉eb缁勪欢 guilhermewaess / SemVue-鐢╒ue 2瀹炵幇鐨勮涔塙I妯″潡 office-ui-fabric-vue -Vue.js鐨凮ffice UI Fabric瀹炵幇 vuestic-admin-鍏锋湁鑷畾涔夌粍浠堕泦鍚堢殑Vue Admin浠〃鏉裤€傚唴缃甐ue 2鍜孊ootstrap 4 璇箟UI Vue - Vue鐨勮涔塙I闆嗘垚 vuesax - Vue.js鐨勫墠绔痸ue缁勪欢銆?閫傜敤浜嶸ue鐨凟ssential JS 2-鍔熻兘榻愬叏鐨?5+ Vue.js缁勪欢锛屽叾涓寘鎷暟鎹綉鏍硷紝鍥捐〃锛岃鍒掔▼搴忓拰鍥捐〃缁勪欢绛夈€?Banshee-鍑犱箮娌℃湁娓叉煋鐨刅ue UI缁勪欢鍜屽疄鐢ㄧ▼搴忔鏋讹紝娌℃湁CSS銆?vue-atlas-缇庝附鐨刅ue缁勪欢搴撱€?DevExtreme Vue缁勪欢-65涓互涓婂搷搴旈€熷害蹇笖鍔熻兘榻愬叏鐨刅ue UI缁勪欢锛屽叿鏈夊彲鑷畾涔夌殑Material Design鍜孊ootstrap鍏煎涓婚銆?jqwidgets-鍏锋湁Material Design涓婚鐨?0澶氫釜Vue.js 2.0 UI缁勪欢銆?vue-uix-Vue.js涓綉椤靛疄鐜扮殑UI闆嗗悎 vuedarkmode - Vue.js鐨勬瀬绠€鏆楄璁$郴缁燄煄?Kendo Vue鐨刄I 鈥撶敤浜庝笟鍔″簲鐢ㄧ▼搴忕殑70澶氫釜UI缁勪欢锛屽寘鎷綉鏍笺€傚澶氱璁捐璇█锛堝寘鎷潗鏂欒璁″拰Bootstrap锛夌殑鏀寔瀹屽叏鍝嶅簲銆?Vuent-瀹炵幇Microsoft Fluent Design鐨刅ue.js缁勪欢 bpit / vue-涓撴敞浜庢晥鏋滅殑Vue缁勪欢搴?vue-tailwind-鍏锋湁鍙嚜瀹氫箟绫荤殑Vue缁勪欢鍙敤浜嶵ailwindCSS锛屼絾涓庝换浣曟鏋跺吋瀹广€?鐩哥瓑鐨刄I-鍩轰簬TypeScript鐨刅ue UI濂椾欢馃К slim- ui-鍩轰簬Vue.js鐨勬渶灏廢I缁勪欢 Vue缁勪欢寮€鍙戝浠?鏃犳牱寮忥紝缁忚繃楂樺害娴嬭瘯鍜岀伒娲荤殑Vue缁勪欢/娣峰悎/鎻掍欢銆?绠$悊鍛樿寖鏈?涓€濂楃鐞嗘ā鏉?/p>

iView Vue Admin -iView Vue Admin /鍩轰簬iView 2.x鍦ㄧ嚎婕旂ず鐨勭鐞嗛棬鎴锋ā鏉?element Vue Admin -element Vue Admin /鍩轰簬Element UI 2.x鐨勭鐞嗛棬鎴锋ā鏉?vue-element-admin-鍩轰簬Element UI 2.x鍦ㄧ嚎婕旂ず鐨勭濂噕ue绠$悊鍛?D2 Admin-鐢眝ue Online Demo鏋勫缓鐨勪紭闆呯殑鍚庡彴妯℃澘 rest-admin-鍩轰簬Vue鍜孊ootstrap 4鍦ㄧ嚎婕旂ず鐨凴estful绠$悊闈㈡澘 纰庣墖浠〃鏉跨簿绠€鐗圴ue鍏徃-鉁ㄥ叿鏈夎澶氳嚜瀹氫箟缁勪欢鍜屾ā鏉跨殑鐜颁唬绠$悊妯℃澘銆傚湪绾挎紨绀?Vue Material Admin - Vue鏉愭枡璁捐绠$悊妯℃澘鍦ㄧ嚎婕旂ず element-admin-浣跨敤Vue CLI 3鍜宔lement-ui鐨勭畝鍗曚絾鍔熻兘寮哄ぇ鐨剉ue绠$悊鍛樸€傚湪绾挎紨绀?浠〃鏉?鍩轰簬鐢眝uejs / vue-cli 4.x鍒涘缓鐨剉ue.js鐨勪华琛ㄦ澘鏀灦銆傚湪绾挎紨绀?vue-admin-next-鍏锋湁澶氭ā鍧楄璁★紝Vue Composition API鍜屽弸濂界殑鐢ㄦ埛鐣岄潰鐨勪笓涓氫紒涓氬簲鐢ㄧ▼搴忋€傚湪绾挎紨绀?vue-pro-sidebar锛氬叿鏈夌敓鎬佺郴缁熼厤缃殑鑷€傚簲妯℃澘鍚姩鍣紙vue-router锛寁uex锛夛紝璇ユ牱鏉垮彲璁╂偍閫夋嫨鎵€闇€鐨勯鑹层€傜幇鍦烘紨绀?浣跨敤Bootstrap-Vue鍒涘缓鐨凷tellar Admin Boilerplate Boilerplate Admin妯℃澘銆傜幇鍦烘紨绀?鏈嶅姟鍣ㄧ娓叉煋 Nuxt.js-閫氱敤鐨刅ue.js妗嗘灦銆?Ream-鐢ㄤ簬鏋勫缓鏈嶅姟鍣ㄥ憟鐜板拰闈欐€佺綉绔欑殑绠€绾︽鏋躲€?閫氱敤Vue-Vue CLI鎻掍欢鍙交鏉惧垱寤洪€氱敤Vue搴旂敤绋嬪簭 Factor Platform-鎵╁睍椹卞姩鐨刅ueJS骞冲彴锛團actor.dev鈫扗ocs锛?Vapper-鍩轰簬Vue鐨勬湇鍔″櫒绔覆鏌撴鏋躲€?闈欐€佺綉绔欑敓鎴愬櫒 VuePress-鐢盫ue椹卞姩鐨勭畝绾﹂潤鎬佺珯鐐圭敓鎴愬櫒銆?Peco-浜虹被鐨勯潤鎬佺綉绔欑敓鎴愬櫒銆傛湭缁存姢 鍐涘垁-闈欐€佺綉绔欑敓鎴愪笌Vue.js.寤鸿閫熷害鏋佸揩缃戠珯 Gridsome-浣跨敤Vue.js鏋勫缓瓒呭揩閫燂紝鐜颁唬鍖栫殑缃戠珯 Servue-鏈嶅姟鍣ㄧ娓叉煋寮曟搸锛屽彲灏唙ue鏂囦欢娓叉煋涓篽tml瀛楃涓层€?鍏朵粬 搴旂敤绋嬪簭妗嗘灦-鍏锋湁HTML鍜孞avaScript鐨処OS鍜孉ndroid搴旂敤绋嬪簭-寮€鍙戯紝鏋勫缓鍜岄儴缃?鍏嶈垂鍜屽紑婧愩€?Myfirebase-涓€涓凡瑙h€︾殑鍗曢〉搴旂敤绋嬪簭妗嗘灦锛屼笌Google firebase楂樺害鍏煎銆?鍩轰簬Vue-Access-Control鐨勫墠绔闂帶鍒舵鏋禫ue.js 2銆?Basys宸ュ叿绠憋紝鐢ㄤ簬鏋勫缓鍏ㄦ爤Vue.js搴旂敤 CabloyJS鍩轰簬KoaJS锛咵ggJS锛哣ueJS锛咶ramework7鐨勭粓鏋丯odeJS鍏ㄦ爤涓氬姟寮€鍙戝钩鍙?vue-service-model -Vue.js搴擄紝鐢ㄤ簬澶勭悊鍏锋湁缂撳瓨锛岃仛鍚堝拰妯″瀷瀹氫箟鐨凴EST鏈嶅姟璇锋眰銆?DataFormsJS-浣跨敤Vue浣滀负妯℃澘寮曟搸鐨勬渶灏忚矾鐢卞拰Web鏈嶅姟妗嗘灦銆?V- Craft-浣跨敤Vue.js鏋勫缓鍙墿灞曢〉闈㈡瀯寤哄櫒鐨勫伐鍏烽泦銆?Vue-Low- Code-鍙粠Quant-UX鍘熷瀷鐢熸垚VUE搴旂敤绋嬪簭鐨勪綆浠g爜宸ュ叿鍖?Figma-Low- Code-灏嗘偍鐨凢igma璁捐杞崲涓篤UE搴旂敤绋嬪簭銆?vue-姒傚康-闈炲畼鏂圭殑姒傚康娓叉煋鍣?浣跨敤姒傚康浣滀负Vue鐨凜MS锛堜緥濡侼uxt锛?鐢ㄦ埛鐣岄潰瀹炵敤绋嬪簭 浜嬩欢澶勭悊 澶勭悊鐢ㄦ埛浜嬩欢锛堟粴鍔紝鍗曞嚮锛屽嚮閿瓑锛?/p>

vue-shortkey -Vue-ShortKey-Vue.js鐨勬彃浠躲€?vue-throttle- event-鍩轰簬requestAnimationFrame鐨勬补闂ㄤ簨浠躲€?vue-waypoint -Vue鐨刉aypoint缁勪欢锛岃繖鏄粴鍔ㄦ椂瑙﹀彂鍔熻兘鐨勬渶绠€鍗曟柟娉曘€?vue-clickaway-鍙噸鐢ㄧ殑Vue.js缁勪欢鐨勫彲閲嶇敤clickaway鎸囦护銆?vue-scrollfire-鍦ㄧ壒瀹氱殑婊氬姩浣嶇疆涓婅Е鍙戜簨浠躲€?vue-resize-directive -Vue鎸囦护锛岀敤浜庢娴嬪叿鏈夊幓鎶栧拰闄愬埗鍔熻兘鐨勮皟鏁村ぇ灏忎簨浠躲€?v-click-outside -Vue鎸囦护锛屽鍏冪礌澶栭儴鐨勫崟鍑诲仛鍑哄弽搴旓紝鑰屼笉浼氬仠姝簨浠朵紶鎾€?vue-outside-events -Vue 2.x鎸囦护鍙府鍔╂寚瀹氬厓绱犱睛鍚彂鐢熷湪鑷韩涔嬪鐨勭壒瀹氫簨浠躲€?vue-selectable -Vue 1.x / 2.x鎸囦护锛屽彲閫氳繃榧犳爣閫夋嫨椤圭洰銆?vue-click-helper -Vue2.x鎸囦护锛岀敤浜庡鐞嗗悓涓€鍏冪礌涓婄殑click浜嬩欢鍜宒blclick浜嬩欢銆?v-hotkey -Vue 2.x鎸囦护锛岀敤浜庡皢鐑敭缁戝畾鍒扮粍浠躲€?vue-resize -Vue 2.x缁勪欢锛岀敤浜庢娴婦OM鍏冪礌鐨勫ぇ灏忚皟鏁达紙鍩轰簬浜嬩欢/鏃爓indow.onresize锛?vue-observe-visibility-浣跨敤Intersection Observer API鐨刅ue 2.x鎸囦护锛岀敤浜庢娴嬪厓绱犳槸鍚﹀彲瑙侊紙鍦ㄨ鍙d腑骞朵笖鏈CSS闅愯棌锛夈€?v- dragged-鐢ㄤ簬鎷栧姩浜嬩欢妫€娴嬬殑Vue 2.x鎸囦护鎻掍欢銆?vue-esc -Vue.js鎸囦护锛岀敤浜庡湪杞箟閿洏涓婃坊鍔犳枃妗d簨浠朵睛鍚櫒銆?vue-global-events 鈥撲娇鐢╒ue鐨勪簨浠朵慨楗扮澶勭悊鍏ㄥ眬浜嬩欢锛堝蹇嵎鏂瑰紡锛夌殑缁勪欢 vue-edge-check 鈥撴鏌ユ祻瑙堝櫒杈圭紭锛屼互闃叉鍦ㄤ娇鐢ㄦ粦鍔ㄨ竟缂樻椂濂囨€湴瑙﹀彂杩囨浮鏁堟灉vue-router vue-mutation-observer 鈥撲娇鐢∕utationObserver API瑙傚療DOM涓彉鍖栫殑绠€鍗曡€屽井灏忕殑鎸囦护 vue-scroll-show 鈥撳湪婊氬姩鍚庣敤鎴峰埌杈炬椂鏄剧ず鍏冪礌 vue-tabevents 鈥撳叾浠栨墦寮€鐨勬爣绛句箣闂寸殑杞绘澗閫氫俊 Vue鍙鎬цЕ鍙?馃憖 婊氬姩鍒拌鍥炬椂浠ュ0鏄庢柟寮忚Е鍙戞柟娉?v-click-outside-x -Vue V2鎸囦护锛屽鍏冪礌澶栭儴鐨勫崟鍑伙紝瑙︽懜锛屾寚閽堟垨澶氫釜浜嬩欢浣滃嚭鍙嶅簲銆?vue- keypress-Vue.js搴旂敤绋嬪簭鐨勫叏灞€keypress浜嬩欢澶勭悊绋嬪簭缁勪欢銆?铏氭嫙浼獥鍙?馃懟 鍦╒ue妯℃澘涓0鏄庢€у湴杩炴帴绐楀彛/鏂囨。鐨勭粍浠?鍝嶅簲寮忚璁?vue-viewports-瀹氫箟鎮ㄧ殑鑷畾涔夎鍙e苟鍦ㄧ粍浠朵腑浣跨敤瀹冧滑銆?vue鍝嶅簲锛歏ue.js锛?.x锛夋寚浠ゅ彲闅愯棌/鏄剧ず鍏锋湁Bootstrap 4銆?鎴栬嚜瀹氫箟鏂偣鐨凥TML鍏冪礌銆?vue-match-media -Vue 2.x鍏煎鎻掍欢锛屾彁渚涗竴鑷寸殑璇箟鏂规硶鏉ヤ娇缁勪欢鍏锋湁濯掍綋鏌ヨ鎰忚瘑銆?vue-media-query-mixin -Vue 2濯掍綋鏌ヨmixin锛屽彲鍦ㄧ粍浠秊s鍜岀粍浠舵ā鏉夸腑浣跨敤銆備笌寮曞绋嬪簭鍜屽彲瑙嗗寲瑙嗗彛鍏煎銆倃XS濡傛灉灞忓箷瀹藉害涓簒s锛屽垯wSM杩斿洖锛涘鏋滃睆骞曞搴︿负sm锛屽垯杩斿洖true锛岀瓑绛夈€?vue-breakpoints -Vue 2鏈€灏忕粍浠讹紝鐢ㄤ簬鍩轰簬鏂偣鏄剧ず鍜岄殣钘忓厓绱犮€傚彈鍒癆irbnb鐨勫惎鍙戙€?vue-mq-鎻愪緵涓€浜涙湁鐢ㄧ殑宸ュ叿锛屼互璇箟鍜岀Щ鍔ㄤ紭鍏堢殑API锛圴ue 2.x锛夊揩閫熻缃搷搴斿紡璁捐 VueResizeSensor-鏀寔璋冩暣澶у皬浜嬩欢鐨勫鍣ㄣ€?vue-breakpoint-component-鐢ㄤ簬缁勬垚CSS鏂偣鐘舵€佺殑鏃犳覆鏌撶粍浠躲€?fine-mq-涓€涓緢濂界殑API锛屽彲浠ヨ交鏉惧湴鍜屼笌VueJS浣滀负鎻掍欢鐨勪竴娴侀泦鎴愭潵绠$悊JS涓殑濯掍綋鏌ヨ銆?vue-sensitive- components-浣跨敤鍒涘缓鍝嶅簲缁勪欢ResizeObserver銆?vue-screen-size-杞绘澗锛岃鍔ㄥ湴璁块棶灞忓箷鐨勫搴﹀拰楂樺害銆?vue-container-query-2-鏅鸿兘vue鎻掍欢锛岀敤浜庡鐞咰SS瀹瑰櫒鏌ヨ銆?vue-component-media-queries -Vue鐨凪atchMedia缁勪欢搴撱€?褰㈡垚 VUE-formly -涓篤ue.js. JavaScript鐨勪緵鐢靛舰寮?vue- focus-鍙噸鐢ㄧ殑Vue.js缁勪欢鐨勫彲閲嶇敤Focus鎸囦护銆?vue-form-generator -Vue.js鐨勫熀浜庢灦鏋勭殑琛ㄥ崟鐢熸垚鍣ㄧ粍浠躲€?FormSchema Native-浣跨敤JSON Schema鍜孷ue.js鐢熸垚琛ㄥ崟 ic-formly-鐢眝ue-formly鎻愪緵鏀寔鐨勭畝鍗曡〃鍗曠粍浠躲€?琛ㄥ崟鏋勫缓鍣?鍩轰簬Json妯℃澘鐨勮〃鍗曟瀯寤哄櫒锛屽熀浜嶸ue鍜孡aravel銆?vue-autofocus-directive -Vue鑷姩鑱氱劍鎸囦护銆?vue-awesome- form-涓€涓儚json-editor涓€鏍风殑vue.js缁勪欢 vue-form-components-甯︽湁楠岃瘉鐨勫共鍑€涓旀渶灏戠殑vue琛ㄥ崟鍏冪礌 v-ajax-form -vue.js缁勪欢鎻掍欢锛屼娇Form鏍囩涓巃jax璇锋眰鍏煎 Vue鍏紡鍖?浣跨敤Vue鏋勫缓琛ㄥ崟鐨勬渶绠€鍗曟柟娉曘€傞獙璇侊紝閿欒澶勭悊锛岃〃鍗曠敓鎴愶紝鍏ㄩ潰鐨勬枃妗g瓑銆?楠岃瘉鏂瑰紡 vee-validate-绠€鍗曠殑Vue.js杈撳叆楠岃瘉鎻掍欢銆?vue-rawmodel -Vue.js v2鐨凴awModel.js鎻掍欢銆傝〃鍗曢獙璇佷粠鏈姝ょ畝鍗曘€?vuelidate-瀵筕ue.js鐨勭畝鍗曪紝杞婚噺绾у熀浜庢ā鍨嬬殑楠岃瘉銆?simple-vue-validator-涓€涓畝鍗曡€岀伒娲荤殑vue.js楠岃瘉鍣ㄥ簱銆?vue-vform -Vue.js 2琛ㄥ崟缁勪欢锛岄泦鎴愪簡jQuery Validation鍜孉xios銆?vue-form -Vue.js鐨勫叏闈㈣〃鍗曢獙璇併€?vuelidation-绠€鍗曪紝鍔熻兘寮哄ぇ鐨剉uejs楠岃瘉銆?laravel-vue-validator-鏄剧ず鏉ヨ嚜laravel楠岃瘉瑙勫垯鐨勯敊璇?vue-daval-瓒呯骇vue鏁版嵁楠岃瘉鍣ㄣ€傜畝渚匡紝绠€鍗曪紝鍑嗙‘銆?willvalidate - Vue.js鐨勯獙璇佽〃鍗曘€?vue-m-validator-鐢ㄤ簬VueJ鐨勬ā鍨嬫暟鎹獙璇佸簱銆?vue-isyourpasswordsafe-鐢╒ue缂栧啓鐨勪竴涓皬鍨嬪疄鐢ㄧ▼搴忥紝鐢ㄤ簬妫€鏌ユ槸鍚﹀凡閽堝鈥滄垜宸茶鎷ユ湁鈥?API娉勬紡浜嗙粰瀹氱殑瀵嗙爜銆?vue-form-send -Vue.js鎸囦护锛岀敤浜庝粠琛ㄥ崟鍜屽師濮嬮獙璇佸彂閫佹暟鎹?FormVuelar-鑰冭檻鏈嶅姟鍣ㄧ楠岃瘉鐨刅ue琛ㄥ崟缁勪欢 vue-final-validate-鍩轰簬鎴戠殑寮€鍙戠粡楠岀殑Vue楠岃瘉瑙e喅鏂规锛屾敮鎸佸祵濂楋紝寮傛銆?vform-鍦╒ue涓鐞哃aravel鍚庣楠岃瘉鐨勭畝鍗曟柟娉曘€?vue-form-container-涓€涓狿rovider Component灏佽琛ㄥ崟骞跺鐞嗗叾鐘舵€佸拰楠岃瘉鐨凙銆?ps-validation-涓€涓猇ue鎻掍欢锛屾彁渚涗簡鐜版垚鐨勬暟鎹獙璇佽鍒欙紝杩欏緢澶х▼搴︿笂鍙桳aravel楠岃瘉绯荤粺鐨勫惎鍙戙€?vue-laravel-errors-涓€涓猇ue.JS鎻掍欢锛屽畠娣诲姞浜嗕竴涓叏灞€mixin锛屽彲鐢ㄤ簬濉厖laravel閿欒鍝嶅簲涓殑閿欒鍙橀噺骞跺皢鍏舵樉绀轰负瀵硅薄鎴栨暟缁勶紝涔熷彲浠ョ敤浣滄湰鍦癿ixin銆?璋冩暣澶у皬 vue-not-visible -Vue鎸囦护锛岀敤浜庝粠灞忓箷涓婂皬浜庢柇鐐圭殑dom锛堝v-if锛夊厓绱犱腑鍒犻櫎銆?vue-window-size-鎻愪緵鍙嶅簲鎬х獥鍙eぇ灏忓睘鎬с€?璇煶鍝嶅簲鏂囨湰-鈫?鐩稿浜庡叾鐖惰妭鐐圭殑瀹藉害缂╂斁鍏跺瓙鑺傜偣鐨勭粍浠?婊氬姩 璁剧疆绐楀彛婊氬姩浣嶇疆

vue-chat-scroll -Vue.js 2.0鐨勮嚜鍔ㄦ粴鍔ㄥ埌搴曢儴鎸囦护銆?vue-scrollto-娣诲姞鎸囦护浠ヤ睛鍚崟鍑讳簨浠跺苟婊氬姩鍒板厓绱犮€?vue-next-level-scroll-涓€绉嶅熀浜庣粍浠朵笖鏀寔SSR鐨勬柟娉曪紝鍙娇鐢ㄧ幇浠g殑Scroll Behavior API骞虫粦婊氬姩 vue-scroll-sync-鍚屾瀹瑰櫒婊氬姩浣嶇疆鐨勭粍浠?v-scroll- lock-鐢ㄤ簬涓讳綋婊氬姩閿佸畾鑰屼笉涓柇鐩爣鍏冪礌婊氬姩鐨刅ue.js鎸囦护 vue2-perfect-scrollbar -PerfectScrollbar绠€绾﹀寘瑁呭櫒 vue-scroll-to-娣诲姞鎸囦护浠ヤ睛鍚崟鍑讳簨浠跺苟婊氬姩鍒板厓绱犮€?vue-scroll-progressbar-涓€涓彲鑷畾涔夌殑缁勪欢锛屾寚绀鸿繘搴︽潯涓粴鍔ㄧ殑鐩稿浣嶇疆銆?vue-backtotop-Vue.js鐨凚ack-to-top缁勪欢锛屽崟鍑诲悗鍙皢椤甸潰婊氬姩鍒伴《閮ㄣ€?铏氭嫙婊氬姩鏉?/p>

VBar -Vue.js 2x鐨勮櫄鎷熷搷搴旇法娴忚鍣ㄦ粴鍔ㄦ潯缁勪欢銆?Vuebar-浣跨敤鏈湴婊氬姩琛屼负鐨勮嚜瀹氫箟婊氬姩鏉$殑Vue 2鎸囦护銆傝交宸э紝楂樻€ц兘锛屽彲瀹氬埗涓旀棤渚濊禆鎬с€?vue-detached-scrollbar-涓€涓畝鍗曠殑婊氬姩鏉★紝鍙互浠庢鍦ㄦ粴鍔ㄧ殑瀹瑰櫒涓垎绂诲嚭鏉ャ€?vuescroll-鍩轰簬Vue.js鐨勬粴鍔ㄦ彃浠讹紝鐢ㄤ簬缁熶竴PC鍜岀Щ鍔ㄨ澶囦腑鐨勬粴鍔ㄣ€?vue- simplebar - Simplebar鎻掍欢鐨刅ue.js鍖呰鍣ㄣ€?smooth-vuebar-骞虫粦婊氬姩鏉$殑Vue鎸囦护鍖呰 妫€娴嬬粍浠朵綍鏃惰繘鍏ヨ鍙?/p>

vue-scrollview-鍒╃敤浣滅敤鍩熸彃妲芥娴媣ue缁勪欢浣曟椂杩涘叆鍜岀寮€瑙嗗彛鐨勭粍浠躲€?vue-scrollactive-鍩轰簬瑙嗗彛涓殑褰撳墠閮ㄥ垎鍦ㄨ彍鍗曢」涓坊鍔犳椿鍔ㄧ被锛屽崟鍑昏彍鍗曢」鏃朵篃浼氭粴鍔ㄥ埌璇ラ儴鍒嗐€?vue-intersect-灏哣ue缁勪欢娣诲姞鍒癡ue缁勪欢鎴朒TML鍏冪礌鐨刅ue缁勪欢銆?vue-scrollmonitor-涓€涓猇ue鎻掍欢锛岄€氳繃鏀寔澶氱娴忚鍣ㄦ潵鐩戣瑙嗗彛鍐呭厓绱犵殑鍙鎬х姸鎬侊紙浣跨敤provide / inject锛屽洜姝ゅ吋瀹箆ue@2.2.x锛?vue-stroll -Vue.js 2.x鐨勪竴涓緢妫掔殑CSS3鍒楄〃婊氬姩鏁堟灉缁勪欢銆?navscroll-js-婊氬姩鏃剁獊鍑烘樉绀鸿彍鍗曢」锛屽苟涓斿崟鍑昏彍鍗曢」鏃惰繕浼氭粴鍔ㄥ埌鏌愪釜閮ㄥ垎銆傜敤浣渧ue缁勪欢锛寁ue鎸囦护鎴栦笌vanilla js涓€璧蜂娇鐢ㄣ€?vue-scrollwatch-涓€涓交宸х殑鎻掍欢锛屽彲妫€娴嬫粴鍔ㄤ簨浠讹紝鍦ㄥ厓绱犺繘鍏ヨ鍙f椂鑷畾涔夊洖璋冿紝浣跨敤'vue鎸囦护'鏆撮湶'scrollTo'API婊氬姩鑷崇壒瀹氬厓绱犮€?vue-check-view-涓€涓鏌ュ厓绱犳槸鍚﹀湪瑙嗗彛涓殑鎻掍欢銆傚揩閫燂紝灏忓瀷锛屾棤渚濊禆鎬э紝瀹炴椂婕旂ず銆?vue-stickto-鏀寔澶氫釜DOM鑺傜偣鐨剉ue鎸囦护浼氳嚜鍔ㄧ矘璐村埌椤堕儴 vue2-scrollspy-涓€涓猻crollspy鎻掍欢鍜屽姩鐢绘粴鍔ㄥ埌銆?vue-trip-wire-褰撳厓绱犲埌杈捐鍙d腑鐨勬寚瀹氱偣鏃剁敤浜庤Е鍙戝姛鑳界殑鑷畾涔夋寚浠わ紝鍙互閫夋嫨瀵煎叆鍏锋湁鍏ㄥ眬鍙闂姛鑳界殑妯″潡銆?v-intersect -Vue鎸囦护鍜岀粍浠讹紝鍙湪瑙嗗彛涓彲瑙佹垨闅愯棌鍏冪礌鏃舵娴嬭鍏冪礌 鑷畾涔夋粴鍔ㄨ涓?/p>

vue-scroll-behavior-鑷畾涔夎矾绾垮鑸腑鐨勬粴鍔ㄨ涓恒€傜壒鍒槸鍝堝笇妯″紡銆?vue-scroll-stop-鍒拌揪杈圭紭鏃跺仠姝紶鎾粴鍔ㄣ€?鏃犵紳婊氬姩

vue-seamless-scroll -Vue.js鐨勭畝鍗曟棤缂濃€嬧€嬫粴鍔ㄣ€?璺敱 vue-router -Vue.js鐨勫畼鏂硅矾鐢卞櫒銆?vue-router-storage -Vue.js 2鍜寁ue-router 2鐨勮矾鐢卞櫒瀛樺偍鍜岃В鍐虫柟妗?vue-tidyroutes-鍒嗘暎鐨剉ue-router璺敱瀹氫箟 vue-routisan -Vue Router鐨勪紭闆咃紝娴佺晠鐨勮矾绾垮畾涔夛紝鍙桳aravel鍚彂銆?vue-error-page-鎻愪緵璺敱鍣ㄨ鍥剧殑鍖呰锛屼娇鎮ㄥ彲浠ユ樉绀洪敊璇〉闈㈣€屼笉鏇存敼URL vue-router- sitemap-閫氳繃vue-router閰嶇疆鐢熸垚sitemap.xml vue-smart- route-鏅鸿兘璺敱鎸囦护锛屽彲浣跨敤Vue.js鍒朵綔鍏锋湁鏅鸿兘澶栬鐨勫簲鐢ㄧ▼搴忋€?vue-router-lite -Vue.js 2鐨勫熀浜庣粍浠剁殑澹版槑鎬ц矾鐢卞櫒銆?vue-route-props-鑷姩灏唙ue-router鏌ヨ缁戝畾鍒皏m锛孉PI涓嶸ue閬撳叿鍩烘湰鐩稿悓銆?vue- pilot-鍩轰簬Trie鐨剉ue璺敱鍣紝鍏锋湁绠$悊history.state鐨勮兘鍔涖€?vue-lang- router-鍏锋湁锛堝彲閫夛級URL鏈湴鍖栫殑Vue.js璇█璺敱銆?vue-router-compositions -Vue-Router鍜孷ue Composition API鐨勫疄鐢ㄧ▼搴忓寘銆?vue-middleware -Vue涓棿浠躲€?寤惰繜鍔犺浇 vue-lazyload-涓€涓猇ue.js鎻掍欢锛岀敤浜庡皢鍥惧儚鎴栫粍浠跺欢杩熷姞杞藉埌搴旂敤绋嬪簭涓€?vue-lazy-background-images -Vue 2鐨勫欢杩熷姞杞借儗鏅浘鍍忋€?vue-progressive-image -Vue娓愯繘鍥惧儚鍔犺浇鎻掍欢銆?vue-l-lazyload -Vue.js v2.x +鐨刲azyload鎻掍欢銆?vue-lazyload-img-鐗瑰埆閽堝绉诲姩娴忚鍣ㄨ繘琛屼簡浼樺寲銆傛敮鎸乂2鍜寁1銆?vue-lazy-images -Vue 2.x鐨刲azyload鍥惧儚鎻掍欢銆?v-lazy-img -Tiny锛?0.6kb锛夋寚浠わ紝鐢ㄤ簬Vue 2鐨勬笎杩涘紡鍥惧儚鍔犺浇銆?vue-clazy-load-浣跨敤IntersecionObserver for Vue鐨勮交閲忕骇鍙浆鎹㈠浘鍍忓欢杩熷姞杞界粍浠躲€?vue-lazy- this-浣跨敤Intersection Observer API鐨勫欢杩熷姞杞界粍浠躲€?v2-lazy-list-涓€涓熀浜嶸ue 2.x鐨勭畝鍗曠殑寤惰繜鍔犺浇鍒楄〃缁勪欢 pimg-鐢ㄤ簬寤惰繜鍔犺浇鍥惧儚鐨勭畝鍗曟笎杩涘浘鍍忕粍浠躲€?vue-tiny-lazyload- img-鐢ㄤ簬寤惰繜鍔犺浇鍥惧儚鐨勫皬灏哄Vue.js v.2 +鎸囦护 vue-lazy-youtube- video-涓€涓畝鍗曠殑Vue.js缁勪欢锛岀敤浜庡欢杩熷姞杞結ouTube瑙嗛銆?lazyload-vue-棣欒崏lazyload鐨刅ue鎻掍欢銆?vue-lazy- loading-涓€涓獀ue鎻掍欢锛屽彲浠ユ洿濂藉湴鏀寔鍥惧儚鍜宨frame鐨勬湰鏈哄欢杩熷姞杞姐€?v-lazy-component -Vue缁勪欢鍦ㄥ彲瑙佹椂鍛堢幇銆備娇鐢ㄨ矾鍙h瀵熻€匒PI銆?vue- lazy-鍩轰簬Intersection API鐨勮交閲忕骇鍥惧儚/鍥剧墖寤惰繜鍔犺浇 鍒嗛〉 vue-paginate-涓€涓畝鍗曠殑vue.js鎻掍欢锛屽彲瀵规暟鎹繘琛屽垎椤点€?vue-pagination-2 -Vue.js 2鍒嗛〉缁勪欢銆?vuejs-uib-pagination-Vue.js鐨勬渶浣冲拰瀹屾暣鐨勫垎椤垫彃浠躲€傚彈瑙掑紩瀵煎垎椤靛惎鍙戙€?vuejs-paginate-鐢ㄤ簬鍒涘缓鍒嗛〉鐨刅ue.js锛坴2.x +锛夌粍浠躲€?vue-pagination-bootstrap-涓€涓猇ue.js锛?.x鍜?.x锛夋湇鍔″櫒绔垎椤电粍浠讹紝甯︽湁鍩轰簬Bootstrap鐨勬ā鏉?laravel-vue-semantic-ui-pagination-涓嶭aravel鍜孲emantic-UI涓€璧蜂娇鐢ㄧ殑Vue.js 2.x鍒嗛〉銆?vue-paginate-al -Vue杩涜鍒嗛〉骞惰繑鍥炴偍鐨勬暟鎹€?vue-tiny-pagination-鐢ㄤ簬鍒涘缓寰皬鍒嗛〉鐨刅ue缁勪欢銆?laravel-vue-pagination-鐢ㄤ簬Laravel鍒嗛〉鍣ㄧ殑Vue.js鍒嗛〉缁勪欢锛屽彲涓嶣ootstrap涓€璧蜂娇鐢ㄣ€?vue-lpage-浣庣骇Vue鍒嗛〉缁勪欢銆?v椤?鍩轰簬Vue2.x鐨勭畝鍗曞垎椤垫爮锛屽寘鎷暱搴﹁彍鍗曪紝i18n鏀寔銆?vue-smart-pagination-鍏锋湁璁稿涓嶉敊璁剧疆鐨勪换浣曟暟鎹殑鏅鸿兘鍒嗛〉銆?vue-paginatron-浣跨敤浣滅敤鍩熸彃妲介亾鍏锋瀯寤虹殑鍒嗛〉缁勪欢锛屼互瀹炵幇鏈€澶х殑鐏垫椿鎬с€?vue-ads-pagination-浣跨敤css妗嗘灦鏋勫缓鐨剉ue鍒嗛〉缁勪欢tailwindcss v-pagy -Vue鐨勮交閲忕骇鍜屽彲鑷畾涔夌殑Bootstrap鍒嗛〉銆?鍔ㄧ敾 vue2-animate -Animate.css鐨刅ue.js 2.0绔彛銆備笌Vue鐨勫唴缃浆鎹竴璧蜂娇鐢ㄣ€?animation - vue-涓€涓猇ue.js 2.x鎻掍欢锛屽彲浠ヨ交鏉惧湴灏咥nimate.css鍔ㄧ敾鐢ㄤ綔杩囨浮銆備竴鏍风畝鍗?animated-tada>锛?vue-lottie-涓€涓猇ue.js 2.x鎻掍欢锛岀敤浜庡熀浜巄odymovin娓叉煋After Effects鍔ㄧ敾 Vueg-浣縱ue-router鍏锋湁杩囨浮鏁堟灉/涓簑ebApp鎻愪緵杞満鐗规晥鐨勫紑婧怴ue鎻掍欢 v-animate- css-鏈€瀹规槗瀹炵幇Animate.css鐨刅ue 2鎸囦护 vue-mixin-tween -Mixin宸ュ巶锛屽皢琛ラ棿鍊兼坊鍔犲埌鍔ㄧ敾鐨勭粍浠朵笂涓嬫枃涓?閲岀▼琛?杞绘澗骞虫粦鍦拌繃娓℃暟瀛椼€備娇鐢ㄦ搴撳彲涓烘偍鐨勫簲鐢ㄧ▼搴忔彁渚涘钩婊戠殑鍔ㄧ敾锛屼粎閫傜敤浜庢暟瀛椼€?vue2杞崲 鉁?鍙噸澶嶄娇鐢ㄧ殑Vue 2杩囨浮缁勪欢 vue-overdrive Vue搴旂敤绋嬪簭鐨勮秴绾ц交鏉鹃瓟鏈繃娓○煄?animation -number-vue鍔ㄧ敾鏁板瓧鐨勮秴绾х畝鍗曟柟娉曘€?vue-typed-js涓嶵yped.js闆嗘垚锛屽彲杞绘澗鍒涘缓鎵撳瓧鍔ㄧ敾銆?vue-parent-change-transition浣垮瓙缁勪欢鍦ㄦ洿鏀圭埗缁勪欢鏃跺彲浠ヨ缃姩鐢汇€?vue-smooth-reflow鍝嶅簲鏁版嵁鍙樺寲鑰岃繃娓″厓绱犻噸鎺掋€?VueTween鍏佽缁勪欢琛ラ棿鍏跺睘鎬с€?vue-slide-up-down-down绫讳技浜巎Query鐨剆lideUp/ slideDown锛屼絾閫傜敤浜嶸ue锛?vue-animejsanime.js Vue鐨勭畝鍗曟寚浠ゃ€?Eagle.js Eagle.js鏄疺ue.js鐨勫熀浜嶹eb鐨勫够鐏墖妗嗘灦銆?vue-slide-up-down-component杩欐槸涓€涓畝鍗曠殑鐣岄潰锛屼絾鏄浜嶸ue锛屽疄鐜颁簡闈炲父鐏垫椿鑰屽己澶х殑骞荤伅鐗囧姩鐢伙紒 femtoTween鍏锋湁涓€娴乂ue鏀寔鐨勭畝绾︼紙闆舵繁搴︼紝灏忎簬1k锛夎ˉ闂村簱 vue-sequential-entrance鎻掍欢锛岀敤浜庡垱寤哄甫鏈夐〉闈㈠厓绱犲垪琛ㄧ殑浼橀泤鐨勮繛缁姩鐢诲叆鍙c€傞浂鍔姏銆傜畝鍗曡交宸?vue-animate-scroll涓€绉嶈秴绾ц交閲忕骇鈥嬧€嬬殑鏂规硶锛屽彲鍦ㄥ厓绱犳粴鍔ㄥ埌瑙嗗浘涓椂鍚戝叾娣诲姞CSS鍔ㄧ敾銆?vue-svg-transition鍒涘缓2鐘舵€侊紝SVG椹卞姩鐨勮繃娓?vue-page-transition Vue.js鐨勮交鏉捐矾鐢?椤甸潰杞崲 Vuenime閫傜敤浜嶢nimejs鐨勭伒娲籚ue鍖呰鍣?vue-flipper-涓€绉嶅叿鏈夎壇濂借繃娓℃晥鏋滅殑缈昏浆瀛╁瓙鐨勭粍浠躲€?v-number Vue.js鐨勫姩鐢绘暟瀛楄浆鎹㈠簱 vue-kinesis涓€缁勭敤浜庡垱寤轰氦浜掑紡鍔ㄧ敾鐨勭粍浠?vue-digital-transform涓€涓獀ue缁勪欢锛屽彲瀹炵幇鏇村ソ鐨勬暟瀛楄浆鎹㈠姩鐢?鍏冩爣璁?鍦ㄦ枃妗eご涓鐞嗗厓淇℃伅

vue-head-閫氳繃绠€鍗曠殑鏂规硶绠$悊head鏍囩鐨勫厓淇℃伅銆?vue-meta-鍦╒ue 2.0缁勪欢涓鐞嗛〉闈㈠厓淇℃伅銆傛敮鎸丼SR +娴佸獟浣撱€?vue-headful-

浠庤鍥惧唴璁剧疆鏂囨。鍜屽厓鏍囪銆?vue-simple-headful-浣跨敤vue.js杞绘澗璁剧疆鍏冩爣璁?vue-headful鍏锋湁TypeScript鏀寔鐨勬洿绠€鍗曟浛浠f柟娉曘€?闂ㄦ埛缃戠珯 灏咲OM鑺傜偣绉昏嚦鐩爣DOM鑺傜偣

vue-dom-portal -Vue.js缁勪欢涓璂OM鍏冪礌鐨勮浆涔夊彛銆?portal-vue-涓€涓猇ue鎻掍欢锛岀敤浜庡湪DOM涓殑浠讳綍浣嶇疆鍛堢幇缁勪欢鐨勬ā鏉匡紙鍦╲irtualDOM绾у埆涓婃湁鏁堬紝涓嶄細鍦―OM涓Щ鍔ㄨ妭鐐癸級 绛涢€夊櫒 vue2-filters-閫傜敤浜嶸ue 2._鐨勬爣鍑嗚繃婊ゅ櫒Vue 1._鐨勯泦鍚堛€?vue-morphling- Vue 2鐨勬爣鍑嗗拰鑷畾涔夎繃婊ゅ櫒鐨勯泦鍚堛€?vue-currency-filter-杞诲阀鍜屽彲鑷畾涔夌殑Vue 2璐у竵杩囨护鍣ㄣ€?vue-trans-涓€绉嶇畝鍗曠殑杩囨护鍣紝鍙彁渚涗笌Symfony trans鐩镐技鐨勭炕璇戞柟寮忋€?vue-string-filter-杞婚噺绾ue 2瀛楃涓插鐞嗚繃婊ゅ櫒銆?vue-units-鍦╒ue 2涓娇鐢ㄧ殑鏂逛究鐨勫崟浣嶈浆鎹㈣繃婊ゅ櫒鐨勯泦鍚堛€?vue-numeral- filter-杩囨护鍣ㄧ殑闆嗗悎锛屽厑璁稿湪缁勪欢鐨勬ā鏉块儴鍒嗗唴鑱斾娇鐢∟umeral.js銆?vue-filter-date-format -Vue 2鐨勭畝鍗曟棩鏈熸椂闂磋繃婊ゅ櫒銆?vue-filter-pluralize -Vue 2鐨勭畝鍗曞鏁拌繃婊ゅ櫒銆?vue-filter-date-parse -Vue 2鐨勭畝鍗曡В鏋愭棩鏈熸椂闂磋繃婊ゅ櫒銆?SVG vue-svgicon-鍒涘缓svg鍥炬爣缁勪欢鐨勫伐鍏枫€傦紙鐗堟湰2.x锛夈€?vue-content-loading -Vue缁勪欢锛屽彲杞绘澗鏋勫缓锛堟垨浣跨敤棰勮锛塅acebook涔嬬被鐨凷VG鍔犺浇鍗°€?VUE-娉ㄩ噴-浣跨敤浠讳綍SVG鍏冪礌娉ㄩ噴椤甸潰锛坮ect锛宲olygon锛屽拰鏇村鐨勪汉锛岀敋鑷虫槸HTML鍏冪礌涓€鏍穋anvas锛屽鏋滃寘瑁筬oreignObject锛?vue-svg-sprite-绠€鍗曞湴浣跨敤SVG sprite锛坴ue 3.x锛寁ue 2.x锛夌殑鎻掍欢锛岀粍浠舵垨鎸囦护銆?vue-svg- filler-鐢ㄤ簬鑷畾涔塻vg鏂囦欢鐨刅ue缁勪欢馃枍 馃帹 锛堢増鏈?.x锛夈€?vue-inline-svg -Vue缁勪欢鍔ㄦ€佷笖鍐呰仈鍦板姞杞絊VG婧愶紝

vue-underscore-瀹炵幇涓嬪垝绾跨殑绠€鍗晇ue鎻掍欢 vue-lazy-calc-涓€涓畝鍗曠殑浠azy &&閾炬帴鏂瑰紡鐨勮绠楁彃浠讹紝鍏锋湁寮虹被鍨嬨€?vue-loadable-涓€涓彃浠讹紝鍙互浣跨敤闈炲父绠€鍗曠殑鏂规硶锛岃楗板櫒鍜屽姪鎵嬫潵鏀瑰杽鍔犺浇鐘舵€佹帶鍒躲€?vueuse-鍩烘湰鐨刅ue Composition API瀹炵敤绋嬪簭鐨勯泦鍚堥€傜敤浜嶸ue 2.x鍜?.x銆?vue-composable -Vue composition-api鍙粍鍚堢粍浠躲€俰18n锛岄獙璇侊紝鍒嗛〉锛屾彁鍙栫瓑銆?30涓彲鍙樼殑鍙粍鍚堝嚱鏁般€?瑙傚療鏉′欢瑙傚療鑰?馃暥 Vue Composition API锛岀敤浜庡湪鏉′欢鍙戠敓鏇存敼鏃惰嚜鍔ㄨ幏鍙栨暟鎹€?Vue浣跨敤-浣跨敤榄旀湳Vue Composition API鎻愪緵澶ч噺鍙噸鐢ㄧ殑閫昏緫锛屼緥濡傝〃鍗曪紝琛ㄦ牸鍜屽姞杞界瓑銆?vue-concurrency-鐢ㄤ簬灏佽寮傛鎿嶄綔浠ュ強绠$悊Vue鍜孋omposition API鐨勫苟鍙戞€х殑搴撱€?vue-ics -Vue.js鎻掍欢锛岀敤浜庣敓鎴怚Calendar锛?ics锛夋枃浠躲€?VUE浣跨敤鐨勫紑鍏筹紝鍦板浘-馃懡 RxJS switchMap杩愮畻绗︾殑鍔熻兘娉ㄥ叆浜哣ue鍚堟垚涓栫晫銆?鏃犻檺浣跨敤鏃犻檺婊氬姩-鈾撅笍 Vue鍚堟垚鍔熻兘锛屼娇鏃犻檺婊氬姩鍙樺緱杞昏€屾槗涓俱€?vue-with- wrapper-鐢ㄤ簬浠ヤ笅瀵硅薄鐨勮В鏋則emplate 鑸瑰彧鍖?鉀?涓€涓笌Vue.js鏃犵紳鍗忎綔鐨凧avaScript IoC瀹瑰櫒銆?vue-context-composition-鍦ㄧ粍浠朵箣闂村叡浜娇鐢╟omposition API鍒涘缓鐨勭姸鎬侊紝绫讳技浜巙seContextReact Hooks 鎵撳瓧绋?vue绫诲瀷鐨?涓€缁凟CMAScript / Typescript瑁呴グ鍣紝鍙府鍔╂偍杞绘澗缂栧啓Vue缁勪欢銆?vue- typescript-鎵撳瓧绋胯楗板櫒锛屼娇vue鏇村叿鎵撳瓧绋挎劅銆?vue-property-decorator -Vue.js鍜孭roperty Decorator銆?vue-typescript-component-瑁呴グ鑰呭彲浠ュ皢TypeScript绫荤敤浣淰ue.js 2.0缁勪欢銆?vue-typescript-import-dts -TypeScript澹版槑鏂囦欢锛岃鏂囦欢鍏佽灏?import'涓?vue鏂囦欢涓€璧蜂娇鐢ㄣ€?vue-ts- loader-鍦╲ue-loader涓鑴氭湰杩涜绫诲瀷妫€鏌ャ€?vue-mixin-decorator-鐢ㄤ簬寮虹被鍨嬫贩鍚堢殑Typescript瑁呴グ鍣ㄣ€?vue-ts-component-generator-鐢ㄤ簬鐢熸垚vue鎵撳瓧绋跨粍浠剁殑绠€鍗昪li宸ュ叿銆?vue-local-storage-decorator-閫氳繃浣跨敤瑁呴グ鍣ㄦ牸寮忕殑鏈湴瀛樺偍鏉ユ寔涔呭瓨鍌ㄦ暟鎹?vuex-module-decorators -Typescript / ES7瑁呴グ鍣ㄤ娇Vuex妯″潡鍙樺緱杞昏€屾槗涓?vuex-class- modules-鍙梫ue-class-component鐨勫惎鍙戯紝涓烘偍鐨剉uex妯″潡寮曞叆涓€绉嶇畝鍗曠殑绫诲瀷瀹夊叏鐨勭被鏍峰紡璇硶銆?vue-corator -Vue鎵撳瓧绋胯楗板櫒宸ュ叿 vuedts-涓?vue鏂囦欢鐢熸垚TypeScript澹版槑鏂囦欢銆?@ icare-jp / vue-props-type-甯姪瀹氫箟閬撳叿绫诲瀷銆?HTTP璇锋眰 閫氳繃HTTP妫€绱㈡暟鎹?/p>

vue-resource -Vue.js鐨凥TTP瀹㈡埛绔€?vue-async-computed -Vue.js鐨勫紓姝ヨ绠楀睘鎬с€?vue-jsonp-涓€涓敤浜庡鐞咼SONP璇锋眰鐨勫皬鍨嬪簱銆?v-model -V-Model鏄疺ue.js鐨勬ā鍨嬫彃浠讹紝渚嬪ng-resource銆?vue-resource-mock-涓€涓熀浜巚ue-resource鐨勬嫤鎴櫒鏉ユā鎷焗ttp鍝嶅簲鐨勫姪鎵嬨€?vue-async-data-2 -Vue.js鐨勫紓姝ユ暟鎹姞杞芥彃浠躲€?vue-api-request-涓€涓彃浠讹紝鍙互瀹屽叏鎺у埗鎮ㄧ殑API锛屼粠鑰屼娇鎮ㄧ殑璇锋眰鍙樺緱绠€鍗曪紝蹇€熶笖鏄撲簬瀹炵幇銆?vue-fast-axios-浠ョ畝鍗曠編瑙傜殑鏂瑰紡鍙戝嚭甯︽湁楠岃瘉鐨勮姹傘€?VUE -寮傛鐨勫睘鎬?涓€涓猘syncData鍜宎syncComputed涓庡弽璺筹紝杞寲鐨勭粨鏋滐紝閿欒澶勭悊绋嬪簭锛岃杞?鎸傝捣鍥芥棗锛屾噿鏁?鐑垏璇锋眰鐨勬敮鎸佹彃浠躲€?vue-axios-plugin-缁撳悎浜哸xios鍜孷uejs鐨勬彃浠讹紝浣縃TTP璇锋眰鏇村姞杞绘澗銆?zipkin-instrumentation-vue-resource-涓€涓嫤鎴櫒锛寁ue-resource璇ユ嫤鎴櫒浣跨敤Zipkin妫€娴嬩紶鍑虹殑HTTP璇锋眰 vue-api-query-鏋勫缓REST API璇锋眰鐨勪紭闆呰€岀畝鍗曠殑鏂规硶銆?vue- chimera-鍩轰簬RESTful璧勬簮鐨勫叏鍔熻兘瀹㈡埛绔紝涓嶯uxt.js鍏煎锛屽苟鍏佽鏈嶅姟鍣ㄧ鎻愬彇銆?vue- apis-涓巃xios闆嗘垚鐨剉ue鎻掍欢锛屽彲閾炬帴鏋勫缓API瀹炰緥銆傚湪vue瀹炰緥鐨勪笂涓嬫枃涓彲鐢紙渚嬪锛歵his銆? apis.apiName锛堬級锛夈€?rexios-瀹炵敤绋嬪簭鍦ㄤ娇鐢╮est api璇锋眰鏃舵爣鍑嗗寲axios鐨剈rl锛屾暟鎹拰鍙傛暟銆?vue-axillo-鍏锋湁鏌ヨ绗﹀彿GraphQL鐨凴EST API鍙粍鍚圓xios銆?姹傝亴-鈿★笍 Vue 3鍙敤浜庢暟鎹彁鍙栵紝鏀寔SWR锛岃疆璇紝閿欒閲嶈瘯锛岀紦瀛樿姹傦紝鍒嗛〉鍜屽叾浠栧嚭鑹插姛鑳姐€?i18n 鍥介檯鍖? L10n /鏈湴鍖?缈昏瘧

vue-i18n -Vue.js鐨勫浗闄呭寲鎻掍欢銆?vue-translate- plugin-鐢ㄤ簬缈昏瘧鐨刅ueJS鎻掍欢銆?vuex- i18n-浣跨敤vuex浣滀负瀛樺偍鐨剉ue.js 2.0鏈湴鍖栨彃浠躲€?vue- gettext-鐢╣ettext缈昏瘧鎮ㄧ殑Vue.js搴旂敤绋嬪簭銆?vue- i18n-涓€涓皬鎻掍欢锛岀敤浜庡湪Vue.js涓疄鐜扮炕璇戙€?vue-multilanguage-鍦╒ue.js涓敮鎸佸绉嶈瑷€2銆?vue-ts- locale-涓€涓彃浠讹紝鐢ㄤ簬鍦ㄥ甫鏈夋墦瀛楃鏀寔鐨刅ue.js 2涓娇鐢↖ntl瀹炵幇缈昏瘧銆?vue-i18next-鏀寔Vue.js 2涓炕璇戠殑i18next鍖呰鍣ㄣ€?vue-polyglot -Vue.js 2鐨勫熀鏈炕璇戞彃浠讹紝鍏锋湁寮傛鍔犺浇鍔熻兘銆?v-localize-鐢ㄤ簬鎯婁汉鐨刅ue.js鐨勭畝鍗曟湰鍦板寲鎻掍欢銆?vue-simple-i18n-鍙兘鏄渶钖勭殑搴擄紝鍙湪1kb鍐呯粓姝㈡墍鏈塚ue i18n瑙e喅鏂规 template-string-i18n -I18n浣跨敤甯︽湁鑷姩淇濆瓨/鍔犺浇杞崲鏂囨。鐨勬ā鏉垮瓧绗︿覆銆?vue-translations-杞绘澗缈昏瘧鎮ㄧ殑vuejs搴旂敤绋嬪簭銆?vue-i18n-service-瀵煎嚭鍜屽鍏ue-i18nSFC杞崲銆?vue-i18n- filter-浠呬娇鐢ㄥ嵆鍙负Vue-i18n鎵╁睍Vue杩囨护鍣▄{ hello world | t }}銆?vue-translation- manager-鍦╒ue.js搴旂敤绋嬪簭涓氦浜掑紡鍦版煡鎵惧拰缈昏瘧瀛楃涓层€備笌vue-18n鍜寁uex-i18n涓€璧峰緢濂藉湴宸ヤ綔銆?vue-t9n-缈昏瘧搴旂敤绋嬪簭鐨勬渶绠€鍗曟柟娉?vue-simple-inline-translation-涓€绉峍ue缁勪欢锛屽彲閫氳繃鍐呰仈缈昏瘧鏉ョ畝鍖栨枃鏈殑缈昏瘧鏂瑰紡銆?vue-i18n鎻愬彇-浣跨敤闈欐€佸垎鏋愮鐞唙ue-i18n鏈湴鍖栥€傛姤鍛婁涪澶卞拰鏈娇鐢ㄧ殑i18n鏉$洰銆?vscode-vue-i18n-ally -VSCode鎵╁睍锛屽彲鎻愪緵鏇村ソ鐨刅ue-i18n浣撻獙銆?v-intl-鍑鸿壊鐨刅ue 3搴旂敤绋嬪簭鐨凣lobal Intl鍖呰鍣煍?excel-vue-i18n-涓€涓彃浠跺皢excel鏂囦欢杞崲涓篿18n json鏍煎紡杩涜缈昏瘧銆?鑷娲诲姩 vue-events -Vue.js鐨勭畝鍗曚簨浠跺鐞嗐€?vue-event-handler -VueJS鐨勪簨浠跺鐞嗘彃浠躲€?vue-event-manager -Vue.js鐨勫叏灞€浜嬩欢绠$悊鍣ㄣ€?vue-geb-浣跨敤Observables鐨勫叏灞€浜嬩欢鎬荤嚎銆?vue- bus-閫傜敤浜嶸ue.js鐨勫井鍨嬬畝鍗曚腑澶簨浠舵€荤嚎鎻掍欢2銆?vue-simple-events-鍙︿竴涓簨浠剁鐞嗘彃浠讹紝浣嗘槸娌℃湁Vue瀹炰緥 vue-option- events-灏哣ue.js 1浜嬩欢閫夐」鍜? emit甯﹀埌Vue.js 2銆?vue-emit-杈呭姪鍑芥暟锛岀敤浜庝粠鍔熻兘缁勪欢鍙戝嚭浜嬩欢銆?vue-plugin- events-鍏锋湁鑷姩璁㈤槄鎺у埗鐨刅ue.js搴旂敤绋嬪簭鐨勭畝鍗曞叏灞€浜嬩欢鎬荤嚎銆?vue3-custom- hooks-涓篤ue.js 3 Composition API鏋勫缓鑷畾涔夐挬瀛愩€?vue-catch-hrefs-鎹曡幏瀵筯refs閾炬帴锛堝湪v-html涓級鐨勭偣鍑伙紝骞跺皢鍏惰矾鐢卞埌vue-router銆?鍧氭寔涓嶆噲 LocalStorage绛?/p>

vue-localstorage-鍏锋湁绫诲瀷鏀寔鐨刅ue.js localStorage鎻掍欢銆?vue-ls -Vue鎻掍欢锛岀敤浜庝粠Vue涓婁笅鏂囦腑浣跨敤LocalStorage銆?vue-pouch -PouchDB鐨勫疄鏃剁粦瀹氬拰鍙嶅簲缁戝畾銆傚湪IndexedDB涓繚鐣欐暟鎹苟涓嶤ouchDB鍚屾銆?vue- idb-浠呬娇鐢↖ndexedDB锛圖exie.js锛夋垨鑷姩鍒涘缓鐨勫彲鎵╁睍vuex妯″潡杩涜鍒楄〃鍜屽ぇ鍨嬪垪琛ㄧ鐞?vue-browserstore-娴忚鍣ㄥ瓨鍌ㄥ寘瑁呭櫒銆?VueStorage-鍏佽缁勪欢鍦ㄦ祻瑙堝櫒浼氳瘽涔嬮棿淇濆瓨鍜屽姞杞藉叾鏁版嵁銆?vue-web-storage鍙︿竴涓猇ue.js鎻掍欢锛岀敤浜巐ocalStorage鍜宻essionStorage vue-universal-cookies Vue.js / Nuxt.js鐨勫悓鏋刢ookie鎻掍欢鏀寔娴忚鍣紝Express锛宧ttp锛堣妭鐐癸級銆?vue2-storage Vue.js搴旂敤绋嬪簭鐨勬祻瑙堝櫒瀛樺偍 vue浠撳簱Vue.js鍜孨uxt.js鐨勮法娴忚鍣ㄥ瓨鍌紝鍏锋湁鎻掍欢鏀寔鍜屽熀浜嶴tore.js鐨勬槗鎵╁睍鎬с€?vue-storage-watcher -Vue.js鐨勫弽搴旀€ocalStorage / sessionStorage鎻掍欢锛屽叿鏈夊己绫诲瀷銆?vue-use-local-storage-涓€绉嶇粍鍚坅pi锛岀敤浜庡皢鍙嶅簲鎬ф暟鎹寔涔呭寲骞堕噸鏂版按鍖栧埌vue 3鐨勬湰鍦板瓨鍌ㄤ腑銆?鍥藉绠$悊 vuex - Vue.js鐨勯泦涓姸鎬佺鐞嗐€?vue-sync-灏哣ue鐘舵€佷笌娴忚鍣║RL锛屾湇鍔″櫒鍚庣鍜屽叾浠栫鐐瑰悓姝ャ€?vuelm-鍙桬lm鏋舵瀯鍚彂鐨勮交閲忕骇鐘舵€佺鐞嗐€?vuez - Vue.js鐨勭畝鍗曡€屽己澶х殑鐘舵€佺鐞嗭紝浠呭叿鏈?涓狝PI銆?vuet-鏁忔嵎寮€鍙戠殑Vue.js鐘舵€佺鐞嗘ā鍨?vue-ya -stash-鍙︿竴涓甫鏈塿 / bind.sync鐨勬洿鏂?琛ヤ竵浜嬩欢鍙戝皠鍣ㄧ被浼肩殑瀛樺偍 vue-assign- model-鑷姩灏嗗厓绱犲€煎垎閰嶇粰Vue.js鐨勬ā鍨嬨€?vue-stash-鍦╒ue缁勪欢涔嬮棿杞绘澗鍏变韩鍙嶅簲鎬ф暟鎹€?vue-model -Vue.js鐨勬ā鍨嬬粍浠?tuex - Vuex鐨勪竴绉嶆渶鍚堢悊鐨勯€夋嫨銆?revuejs -vuejs 2鐨勫井灏忥紝杞讳究鐨勭姸鎬佺鐞嗭紝鏃犻渶缂栧啓鍐楅暱鐨勪唬鐮併€?娉颁鸡- Vue鍏徃鍜屽熀浜巚uex搴擄紝灏戝啓鍐楅暱鐨勪唬鐮併€?vuex- lite-鍏锋湁鐘舵€佸拰鍙樺紓鐨?KB Vuex銆?vue鍏变韩-vuex鐨勮交宸ф浛浠e搧 vuex-module-generator-瀹冨厑璁告偍杞绘澗鍒涘缓vuex妯″潡銆?vuex澹版槑-鍍忛亾鍏蜂竴鏍峰0鏄庣姸鎬侊紝浣跨姸鎬佸湪鍒涘缓缁勪欢鏃跺姩鎬佹敞鍏uex銆?vuex-up-灏嗘贩鍚堝拰缁翠慨鍠锋补鍣ㄥ姛鑳藉紩鍏ユā鍧梫uex銆?effector 鈥斿揩閫熷己澶х殑鍙嶅簲鐘舵€佺鐞嗗櫒銆侲ffector浣挎偍鍙互缂栧啓绠€鍗曪紝蹇€熷拰瀹夊叏鐨勪唬鐮侊紝骞惰交鏉剧鐞嗗搷搴旂姸鎬併€?nano-state-vue-楂樻晥锛屾湁鏁堝拰鍙墿灞曠殑鐘舵€佺鐞嗭細灏戝嵆鏄 閫氱敤妯″瀷vue -Vue锛堜互鍙夾ngular / React / Svelte锛夌殑缁熶竴鐘舵€佺鐞?vue-states -Vue鐨勭姸鎬佺鐞嗙郴缁燂紝鍏锋湁涓嶸ue缁勪欢鐩稿悓鐨凙PI 涓夎妗?馃摝 鍙梀uex鍚彂锛屼娇鐢ㄦ垚鍒咥PI鏋勫缓鐨刅ue 3.0鐨勫揩閫燂紝绠€鍗曞拰杞婚噺绾х姸鎬佺鐞嗐€?VueFort -Vue鐨勬暟鎹缓妯°€傞€傜敤浜嶸ue 2鍜?銆?@ korijn / vue-store-鍏锋湁鎾ゆ秷/閲嶅仛鍔熻兘鐨勮交閲忕骇Vue 3鍚堟垚API鍏煎瀛樺偍妯″紡搴撱€?Redux vuedeux -Vue鍜孯edux鐨勭粦瀹氳В鍐虫柟妗堛€?redux-store- mixin-鐢ㄤ簬鍦╲ue-component鏂规硶涓泦鎴愬姩浣滃垱寤鸿€呯殑Mixin vue-redux-prepare- props-浣跨敤Vuex鍜孷uedeux灏哛edux涓嶸ue.js涓€璧蜂娇鐢ㄧ殑閬撳叿鐨勫姪鎵?vuejs-redux -Vue鍜孯edux鐨勯珮闃剁粍浠跺姛鑳姐€?vuex-coolstory-vuex鐨勬彃浠朵互杩愯redux-saga銆?榛戝府 movue -Vue.js鐨凪obx闆嗘垚銆?vue-mobx -Vuejs 2.x鐨凪obx缁戝畾銆?璁よ瘉/鎺堟潈 濞佸痉骞煎効鍥?vue-authenticate-鐢ㄤ簬鐧诲綍/娉ㄥ唽鍜孫Auth锛?.0 / 2.0锛夎韩浠介獙璇佺殑绠€鍗昖ue.js韬唤楠岃瘉搴?vue-facebook-account-kit -fb甯愭埛宸ュ叿鍖呭簱鐨勭畝鍗晇ue鍖呰鍣ㄣ€?casl-vue-闄愬埗鍏佽缁欏畾鐢ㄦ埛璁块棶鍝簺璧勬簮 vue-google- api-浣跨敤鍐呯疆鐨凮auth2鈥滀娇鐢℅oogle鐧诲綍鈥濆姛鑳斤紝鍙互鏍规嵁鎵胯灏咷oogle鐨凙PI瀹㈡埛绔交鏉鹃泦鎴愬埌浠讳綍vue.js 2椤圭洰涓殑鍖呰鍣ㄣ€?vue- auth-鐢ㄤ簬Vue.js鐨勭畝鍗曡交閲忕骇韬唤楠岃瘉搴?vue-auth- plugin-浣跨敤鎵撳瓧绋跨殑Vue.js鐨勭畝鍗曡韩浠介獙璇佸拰鎺堟潈搴?vue-google-signin-button-涓€涓畝鍗曠殑Vue鎻掍欢锛屽彲灏咷oogle鐧诲綍鎸夐挳娣诲姞鍒版偍鐨勭綉缁滃簲鐢ㄤ腑 vue-facebook-signin-button-涓€涓畝鍗曠殑鎻掍欢锛屽彲灏嗚嚜瀹氫箟Facebook鐧诲綍鎸夐挳鍖呭惈鍒版偍鐨刉eb搴旂敤绋嬪簭涓?vue-auth- href-涓€涓猇ueJS鎸囦护锛岀敤浜庝笅杞藉彈淇濇姢鐨勮矾鐢辨ā寮忎笅鐨勬枃浠?vue-msal-浣跨敤Microsoft韬唤楠岃瘉搴擄紙MSAL锛夌殑Vue鎻掍欢 Vuex瀹炵敤绋嬪簭 vuex-persistedstate-浣跨敤localStorage淇濇寔Vuex鐘舵€併€?vuex-plugin-jsdata-涓€涓敤浜庡皢Vuex瀛樺偍涓巎s-data鍚屾鐨勬彃浠躲€?vuex-local - Vuex涓殑鏈湴鐘舵€佺鐞嗐€?vuex-action - vuex鐨勫疄鐢ㄧ▼搴忥紝鍙交鏉惧垱寤哄拰绠$悊鎿嶄綔銆?vuex-rest-api-涓€涓府鍔╃▼搴忓疄鐢ㄧ▼搴忥紝鍙畝鍖朧uex瀵筊EST API鐨勪娇鐢ㄣ€傚熀浜巃xios銆?vuex-cache-涓€涓猇uex鎻掍欢瀹炵敤绋嬪簭锛岀敤浜庣紦瀛樺皢鍙戝嚭杩滅▼璇锋眰鐨勬搷浣溿€?vuex-persist-涓€涓敮鎸乀ypescript鐨刅uex鎻掍欢锛屽彲甯姪灏嗗晢搴椾繚瀛樺埌localStorage鎴栦换浣曡嚜瀹氫箟瀛樺偍锛堝彲浠ラ厤缃級銆?vuex-local- state-鍚憊uex娣诲姞'localState / sessionState'閫夐」銆備娇鐢╨ocalStorage淇濇寔Vuex鐘舵€併€?vuex-cli-scaffold-鏀灦vuex鐨勫姩浣滐紝绐佸彉锛屽惛姘斿墏鍜岀姸鎬併€?vuex-action- reload-涓€涓獀uex鎻掍欢锛屽湪婊¤冻鏉′欢鏃堕噸鏂板姞杞藉姩浣溿€?vuejs瀛樺偍-Vue.js鍜寁uex鎻掍欢閫氳繃localStorage / sessionStorage鎸佷箙鍖栨暟鎹€?vuex-orm -Vuex鎻掍欢锛岀敤浜庡惎鐢ㄥVuex瀛樺偍鐨勫璞″叧绯绘槧灏勮闂€?vuex-async-module-鍑忓皯鐢熸垚Vuex妯″潡鐨勫紓姝ユ牱鏉夸唬鐮併€備笌Vue 2.x鍏煎銆?vuex-api-涓€涓獀uex鎻掍欢锛屽彲杞绘澗澶勭悊api璋冪敤銆?vuex鏌ヨ-Vuex鏌ヨ鍙府鍔╂偍鍦╒uex涓紪鍐欐煡璇㈠姛鑳?vuex-iframe-sync -iframe /绐楀彛涔嬮棿鐨刅uex鐘舵€佸悓姝ャ€?vuex- aspect-灏嗕换浣曠绫荤殑杩滅▼鏁版嵁缁戝畾鍒皏uex瀛樺偍銆?Vuenut-鏄洿蹇紝鏇存祦鐣呭湴鍙戝睍鐨勭粍鎴愰儴鍒嗐€?vuex-map-fields-涓鸿〃鍗曞瓧娈靛惎鐢ㄥ弻鍚戞暟鎹粦瀹氥€?vuex-search -Vuex缁戝畾锛岀敤浜庝娇鐢ㄧ储寮曞櫒鍜學eb Workers杩涜瀹㈡埛绔悳绱€?vuex-dry-甯姪淇濇寔鎮ㄧ殑vuex浠g爜骞茬嚗銆?vuex-pathify-涓篤uex瀛樺偍鎻愪緵缁熶竴鐨勮矾寰勮娉曪紙渚嬪foo/bar@a.b.c锛?vuex鍔犺浇-绠€鍖杤uex鍔犺浇鐘舵€佺鐞?vuex-module-builder -Vuex妯″潡鏋勫缓鍣ㄦ槸涓€涓寘瑁呭櫒锛岀敤浜庝娇鐢ㄥ唴缃殑涓€浜涘父鐢ㄦ柟娉曟湁鏁堝湴缂栧啓vuex瀛樺偍銆?vuex鍒嗛〉-鍦╒ue / Vuex搴旂敤绋嬪簭涓交鏉惧鐞嗗垎椤佃祫婧愩€傞€傜敤浜庡ぇ澶氭暟Vue鍒嗛〉缁勪欢銆?vuex-easy-firestore -Firebase Cloud Firestore鍜孷uex鐨勮交鏉捐€﹀悎銆?璺悓姝ワ紝0涓牱鏉匡紒 vuex-listener-鍏ㄥ眬Vuex鍔ㄤ綔鍜屽彉寮備睛鍚櫒鎻掍欢 jsonapi-vuex-灏咼SONAPI api涓嶸uex瀛樺偍涓€璧蜂娇鐢紝骞惰繘琛屽鎴风鐨勮褰曢噸缁?瑙勮寖鍖栥€?vuexi-鎻愪緵瀹炵敤绋嬪簭浠ョ畝鍖栧紓姝ユ搷浣滃拰鐘舵€佺鐞?stfalcon-vuex-loading-plugin-澶勭悊vuex鍔犺浇鐘舵€佺殑鏈€绠€鍗曟柟娉?Vue Rest璧勬簮-Vue.js鍜孷uex椤圭洰鐨凴est HTTP璧勬簮绠$悊銆?Vuex Stateshot -馃捑 Vuex3.1 +鐨凙ctions / Mutations涓婄殑State Snapshot鎻掍欢銆?vuex-loopback-鐢ㄤ簬鐜洖鐨刅uex妯″潡宸ュ巶鍜孷ue缁勪欢銆?vuex-state-snapshot-涓€涓猇uex鎻掍欢锛屽彲浠ュ湪绐佸彉鏃惰幏鍙栫姸鎬佸揩鐓с€?vuex-awesome- async-鍖呰Vuex瀛樺偍浠ヨ交鏉剧鐞嗗紓姝ヨ姹傦紙鍔犺浇锛岄敊璇拰缂撳瓨鐘舵€侊級銆?vuex宸ュ巶-鐢ㄤ簬鐢熸垚vuex鍔ㄤ綔鍜屽彉寮傜殑宸ュ巶鍔熻兘銆?vuex- hooks-鍚敤Typescript鐨剉uex composition-api鎸傞挬銆?vuex-composition-helpers-涓€涓疄鐢ㄧ▼搴忓寘锛屽彲杞绘澗灏哣uex涓嶤omposition API缁撳悎浣跨敤銆?vuex-ts-enhance-澧炲己宸ュ叿mapXXX鍜宒ispatch鏂规硶鎻愮ず 鏍囩涔嬮棿鍚屾 vuex-basement-閫夐」鍗?绐楀彛涔嬮棿鐨刅uex鐘舵€佹寔涔呮€у拰鍚屾銆?vuex-shared-mutations-鍦ㄩ€夐」鍗?绐楀彛涔嬮棿鍏变韩vuex绐佸彉銆?vuex-multi-tab- state-浣跨敤姝uex鎻掍欢鍦ㄥ涓€夐」鍗′箣闂村叡浜拰鍚屾鐘舵€併€?GraphQL vue-apollo -VueJS鐨凙pollo / GraphQL闆嗘垚銆?vue- relay-鐢ㄤ簬鏋勫缓GraphQL椹卞姩鐨刅ue.js搴旂敤绋嬪簭鐨勬鏋躲€?vuex-orm-apollo -Vuex-ORM鐨凙pollo / GraphQL闆嗘垚銆?骞跺彂绠$悊 vuency - Vue.js鐨勫苟鍙戠鐞嗐€?浠g爜椋庢牸 鎻愰珮浠g爜鐨勫彲璇绘€?/p>

vue-types -Vue閬撳叿绫诲瀷瀹氫箟銆?vue-factory -Vue.js鐨勭畝鍗曞伐鍘?鎻愪緵绋嬪簭鎵╁睍锛屼緥濡侫ngular涓殑鏈嶅姟銆?eslint-plugin-vue -Vue.js椤圭洰鐨凟slint鎻掍欢銆?vue-decorators -Vue.js锛堟祴璇曠増锛夌殑瑁呴グ鍣ㄣ€?vue-computed-helpers -Vue.js搴旂敤绋嬪簭鐨勮绠楀紡甯姪鍣?vert-鍦∣OP涓瀯寤篤ue搴旂敤绋嬪簭鐨勫簱銆?vue-slot-checker-鎻愪緵妫€鏌ユ彃妲界殑鍔熻兘锛屼緥濡傛鏌ラ亾鍏枫€?鐨凜SS vue-bem-cn-Vue.JS鐨勭畝鍗旴EM绫诲悕鐢熸垚鍣ㄣ€?vue-css -Vue.js鎻掍欢锛屽彲璁╂偍灏咰SS涓庣粍浠舵崋缁戝湪涓€璧枫€?vue-mods-names-涓哄簲鐢ㄧ▼搴忎腑鎵€鏈夌粍浠剁殑绫诲悕娣诲姞淇グ绗︺€?vue-styler-绠€鍗曪紝楂樻€ц兘鐨剉ue鏍峰紡鍣ㄣ€?vue-css-modules-鍦╒ue缁勪欢鍐呴儴灏嗙被鍚嶆棤缂濇槧灏勫埌CSS妯″潡銆?vue-simple-bem-鍏锋湁绠€娲佽娉曠殑鎸囦护锛岀敤浜庡皢BEM绫诲悕绉版坊鍔犲埌鍏冪礌銆?fela-vue -Vue鐨凜SS-IN-JS mixin锛屾棬鍦ㄧ伒娲讳絾闈㈠悜鍥㈤槦銆?- vue-spinners-css-绾疌SS vue寰皟鍣ㄧ粍浠讹紝鐢ㄤ簬ajax鐨刢ss寰皟鍣ㄦ垨鍩轰簬loading.io鍔犺浇鍔ㄧ敾鐨勯泦鍚堛€?vue-css-doodle-css-doodle鐨勭Щ妞嶏紝css-doodle鏄竴涓敤浜庝娇鐢–SS缁樺埗鍥炬鐨刉eb缁勪欢銆?璧勪骇绠$悊 寤洪€?缂栬瘧/鎹嗙粦/瑁呰浇璧勪骇鐨勫疄鐢ㄧ▼搴?/p>

vue-script2-鍗曢〉搴旂敤绋嬪簭鐨勬爣鍑嗗寲锛屾槗浜庤璁$殑鑴氭湰鏍囪琛屼负銆?vue- loader-鐢ㄤ簬Vue.js缁勪欢鐨刉ebpack鍔犺浇鍣ㄣ€?vueify-鍗曟枃浠禫ue缁勪欢鐨凚rowserify杞崲銆?vue-compiler-涓€涓洿缁晇ue-component-compiler鐨勭畝鍗昪li鍖呰鍣ㄣ€?vue-brunch-涓烘棭鍗堥娣诲姞浜嗗棰勭紪璇戝崟涓枃浠禫ue缁勪欢鐨勬敮鎸併€?poi-寮€濮嬩娇鐢ㄥ崟涓?js鏂囦欢缂栧啓搴旂敤绋嬪簭锛孭oi鍙互涓烘偍澶勭悊鎵€鏈夊紑鍙戣缃紝鑰屾棤闇€鍐嶈繘琛屼换浣曢厤缃€?http-vue- loader-鐩存帴浠庢偍鐨刪tml / js涓姞杞?vue鏂囦欢锛岃€屾棤闇€浣跨敤node.js鐜鎴栨瀯寤烘楠ゃ€?vue-jsx-hot- loader-浣跨敤JSX娓叉煋鍔熻兘涓篤ue.js缁勪欢鍚敤HMR銆?VueInBrowserLoader-浠庣粰瀹氱殑URL鍔犺浇.vue鏂囦欢锛岀劧鍚庣洿鎺ュ湪娴忚鍣ㄤ腑灏嗗叾缂栬瘧涓虹粍浠躲€?vue-separate-files-webpack- loader-鐢ㄤ簬鍒嗙鐨刅ue缁勪欢闆朵欢鐨刉ebpack鍔犺浇鍣?vue-svg-loader -Webpack鍔犺浇鍣紝鍙鎮ㄥ皢SVG鏂囦欢鐢ㄤ綔Vue缁勪欢 鍩熷悕娉ㄥ唽鍟?鈽橈笍 涓€涓姩鎬佹敞鍐屾偍鐨勭粍浠跺拰vuex妯″潡鐨勮蒋浠跺寘-浣挎偍鐨勪唬鐮佹洿鍏峰彲璇绘€э紒 vue-automatic-import-loader -Webpack鍔犺浇鍣紝鍙€氳繃浣跨敤match鍑芥暟鑷姩瀵煎叆Vue鍗曚釜鏂囦欢缁勪欢銆?vue-aimg-loader-涓€绉嶅湪Vue妯℃澘涓娇鐢ㄥ浘鍍忕殑绠€鍗曟柟娉曪紝鑰屾棤闇€浣跨敤wste css銆?椤甸潰瀵艰埅 vue-navigation-椤甸潰瀵艰埅搴擄紝璁板綍璺敱鍜岀紦瀛橀〉闈紝渚嬪鏈満搴旂敤绋嬪簭瀵艰埅銆備竴涓〉闈㈠鑸簱锛岃褰曡矾鐢卞苟缂撳瓨椤甸潰锛屽儚鍘熺敓APP瀵艰埅涓€鏍枫€?vue-acl -VueJS 2鐨勮闂帶鍒跺垪琛ㄣ€?vue-breadcrumbs-涓篤ue 1.x鍜孷ue 2.x鐨剉ue-router瀹炵幇绠€鍗曠殑闈㈠寘灞戝姛鑳姐€?vue-2-breadcrumbs-涓嶸ue 2.x鐨剉ue-router涓€璧烽潰鍖呭睉銆傚拰Bootstrap 4 vs-crumbs -40琛屼唬鐮佷腑鐨刅ue闈㈠寘灞戯紝鍏佽宓屽璺緞鑰屾棤瀛愯鍥俱€?vue-nav-椤甸潰瀵艰埅绠$悊鍣紝鏀寔鏈満绉诲姩搴旂敤绋嬪簭鐨勬墍鏈夊鑸姛鑳姐€傞〉闈㈠鑸鐞嗗櫒锛屾敮鎸佹墜鏈哄師鐢熷簲鐢ㄧ殑鎵€鏈夊鑸姛鑳姐€?vue-2-crumbs -Vue.js 2妗嗘灦鐨凚readcrumbs鎻掍欢锛屾棤闇€瀛愯矾鐢卞氨鍙互鍦ㄨ矾鐢卞厓瀵硅薄涓€夋嫨鐖惰矾鐢便€傝繕鍏佽浣跨敤鍔ㄦ€佹暟鎹€?vue-pesdk PhotoEditorSDK鐨刅ue.js鍖呰鍣?vue-resolve 鍦ㄨ緭鍏?娓叉煋璇ヨ矾绾跨殑缁勪欢涔嬪墠锛屽厛瑙e喅璺嚎鏁版嵁銆?vue-page-stack -Vue SPA鐨勮矾鐢卞拰瀵艰埅銆俈ue鍗曢〉搴旂敤瀵艰埅绠$悊鍣?鏉?vue-super-涓€涓畝鍗曠殑鎻掍欢锛屽彲浠ヨ皟鐢ㄧ埗缁勪欢涓婄殑鏂规硶銆?@ skyrpex / props-to-local-灏唒rops鏄犲皠鍒版湰鍦版暟鎹殑Vue mixin銆?vue-inject -Vue 2.x缁勪欢鐨勪緷璧栭」娉ㄥ叆 vue-deepset-鍦╒ue 1.x鍜?.x涓娇鐢╲-model涓嶸ue / Vuex瀵硅薄/鐘舵€佷腑鐨勬繁灞傚祵濂楀瓧娈佃繘琛屼氦浜?vue-gaspard-Vue.js鐨凞OM甯姪鍣ㄦ彃浠?vue-configuration -Vue.js鐨勯潤鎬侀厤缃璞?vue-lodash-鐢ㄤ簬灏唋odash闆嗘垚鍒癡ue 2鐨勭畝鍗曞寘瑁呭櫒銆?VUE-ramda - Vue鍏徃鍖呰涓簉amda vue-router-user- roles-鏍规嵁鐢ㄦ埛瑙掕壊淇濇姢璺敱銆傛坊鍔犳偍鑷繁鐨勮韩浠介獙璇併€?vue-messenger-瀵筕ue缁勪欢閬撳叿鐨勪竴绯诲垪鏈夌敤澧炲己锛氳浆鎹紝鏋氫妇绫诲瀷锛屾暟鍊肩被鍨嬶紝鍙屽悜鏁版嵁缁戝畾銆?vue-uuid- v4-鎻掍欢Vue2鍙交鏉捐幏鍙朥UIDv4 vue-async-operations-绠$悊Vue缁勪欢涓殑寮傛鎿嶄綔鐘舵€?鏂瑰悜-馃憢 Vue.js涓殑鏂瑰悜鎰熺煡鎮仠 vue-unique-id-鐢熸垚鍞竴鐨勭粍浠禝D鍜岀粍浠惰寖鍥寸殑HTML ID銆?stfalcon-VUE浜?猸愶笍 Vue缁勪欢鐨勮交閲忕骇DI 鉂わ笍 vue-uuid-灏哢UID娣诲姞鍒癡ue瀹炰緥銆?VUE娉ㄥ皠鍣?渚濊禆娉ㄥ皠鐨刅ue 2.x鐨?VUE锛屽瓙妲?馃拲 Vue缁勪欢鍙互浠庢彃妲戒腑閫夋嫨鎵€闇€鐨勪笢瑗?vue-timed-content-鏍规嵁缁欏畾鐨勬椂闂磋寖鍥村拰鏃跺尯鏄剧ず鎴栭殣钘忓唴瀹广€?vue-live-鍙梤eact-live鍚彂鐨勬紨绀虹粍浠剁殑缁勪欢銆?缃戠粶宸ヤ綔鑰?vue- worker-涓€涓猇ue.js鎻掍欢锛屽彲閫氳繃绠€鍗曠殑鏂瑰紡浣跨敤Webworkers銆?vue-log- worker-涓€涓猇ue.js鎻掍欢锛屽彲閫氳繃缃戠粶宸ヤ綔鑰呭皢閿欒鍜寁uex绐佸彉璁板綍鍒版偍鐨勫悗绔?JSX jsx-vue-functional-涓€涓狟abel鎻掍欢锛屼负Vue鍔熻兘缁勪欢甯︽潵璇硶绯栥€?jsx-event-modifiers-涓€涓狟abel鎻掍欢锛屽畠鍚慗SX娣诲姞绫讳技浜嶸ue妯℃澘鐨勪簨浠朵慨楗扮銆?jsx-v-model-涓€涓獀-model甯﹀埌JSX鐨凚abel鎻掍欢銆?vue-jsx-sync-涓€涓皢vuesync modifier寮曞叆JSX鐨凚abel鎻掍欢銆?绉绘皯 vue-backbone-鏈夊姪浜嶣ackbone闆嗘垚鐨刅ue.js鎻掍欢銆?vue2-migration- helper-灏哣ue.js SFC杞崲涓篶omposition api璇硶銆?缃戠粶鎻掑骇 vue - socket.io -vuejs鐨凷ocket.io瀹炵幇銆?vue-websocket -Vue.js鐨勭畝鍗晈ebsocket锛坰ocket.io锛夋彃浠躲€?vue- echo-灏哃aravel Echo闆嗘垚鍒癡ue涓紝鍙交鏉炬敞鍐屽鎺ュ瓧浜嬩欢銆?vue-socket- cluster-閫氳繃濂楁帴瀛楃兢闆嗕娇鐢╱ws锛堝井鍨媁eb濂楁帴瀛楋級杩涜vue鐨刉eb濂楁帴瀛?vue-native-websocket -Vuejs 2鍜孷uex鐨勬湰鍦皐ebsocket瀹炵幇 vue-socket.io鎵╁睍-Vue.js鍜孷uex鐨凷ocket.io缁戝畾 vue- phoenix-閫傜敤浜巚uejs鐨凟lixir Phoenix Web濂楁帴瀛楀疄鐜般€傝繕鎻愪緵鎵撳瓧绋胯楗板櫒锛屼互鏇村ソ鍦颁娇鐢ㄣ€?浠樻 浠樻宸ュ叿銆?/p>

鏉$汗 vue-stripe-checkout-鐢ㄤ簬Stripe Checkout鐨勭畝鍗晇ue鎻掍欢銆?vue-stripe-payment -Stripe鐨刯query.payment鐨刅ue鍖呰鍣ㄣ€?璐濆疂 vue-paypal-checkout-涓€涓畝鍗曠殑Vue.js鍖呰鍣ㄧ粍浠讹紝鐢ㄤ簬paypal-checkout銆?鏍煎瓙甯?vue-plaid-link-鏄撲簬浣跨敤鐨刅ue缁勪欢锛岄€傜敤浜嶱laid Link銆?鏁村悎鏂瑰紡 涓庢湇鍔℃垨鍏朵粬妗嗘灦闆嗘垚

vue-disqus -Vue缁勪欢锛岀敤浜庡湪搴旂敤绋嬪簭涓泦鎴怐isqus璇勮锛屽苟鏀寔SPA銆?vue-youtube-embed -Vue.js鍜孻ouTube銆?vue-add-to-calendar-鎻愪緵鈥滄坊鍔犲埌鏃ュ巻鈥濆姛鑳界殑Vue.js缁勪欢鍙笌Vue 2.X涓€璧蜂娇鐢ㄣ€?Vue +娴佹槦-Vue鍦∕eteor涓殑涓€娴侀泦鎴愩€?av-ts-涓€涓幇浠g殑锛岀被鍨嬪畨鍏ㄧ殑锛屾儻鐢ㄧ殑Vue缁戝畾搴撱€?Neutronium-浣跨敤HTML锛孋SS鍜宩avascript鏋勫缓.NET妗岄潰搴旂敤绋嬪簭銆?vue- typescript - jest-鐢ㄤ簬Vue.js缁勪欢锛堟敮鎸乭tml锛宲ug鍜宐abel锛夊拰TypeScript鐨凧est preprocessor.js銆?vue-jest- utils-浣跨敤Jest娴嬭瘯Vue.js缁勪欢鐨勫疄鐢ㄧ▼搴忋€?vue-custom-element -Vue鑷畾涔夊厓绱?Vue.js鐨勮嚜瀹氫箟鍏冪礌銆?vue-cordova -Cordova鐨刅ue.js鎻掍欢銆?vue-wamp -Vue.js鐨凙utobahnJS鍖呰鍣ㄥ簱 express-vue -Express.js鐨刅ue娓叉煋寮曟搸銆備娇鐢╮es.render锛堬級灏?Vue鏂囦欢鐢ㄤ綔妯℃澘銆?vue-grecaptcha -VueJS 2鐨凣oogle reCAPTCHA vue-recaptcha -Vue.js鐨凣oogle reCAPTCHA缁勪欢 require-vuejs -RequireJS鎻掍欢锛岀敤浜庡紓姝ュ拰鍔ㄦ€佸姞杞藉拰瑙f瀽.vue缁勪欢銆?facebook-login-vuejs-鐢ㄤ簬楠岃瘉鎮ㄧ殑Facebook搴旂敤骞惰幏寰桭acebook鐧诲綍鏀剁泭鐨刅ue缁勪欢銆?vuejs / vuefire - VueJS鐨勫畼鏂笷irebase闆嗘垚 vuefire -VueJS鍜孷uex鐨凢irebase vue-runkit-涓篤ue.js宓屽叆鐨凴unKit vue-youtube-涓烘偍鎻愪緵涓€涓畝鍗曠殑灞傦紝浣挎偍鍙互閫氳繃YouTube IFrame Player API鍙戞尌鎯宠薄鍔涖€傦紙涓嶴SR鍏煎锛?vue-introjs-灏唅ntro.js閫愭鎸囧崡鍜屽姛鑳戒粙缁嶄笌Vue.js http://introjs.com/闆嗘垚鍦ㄤ竴璧枫€?vue-loopback-鍥為€佸拰Vue搴旂敤绋嬪簭妯℃澘 vue-laroute-浣跨敤laroute灏哃aravel璺敱闆嗘垚鍒版偍鐨刅ueJS搴旂敤绋嬪簭涓€?vue-raven-鑷姩鎶ュ憡浠巚ue缁勪欢瑙﹀彂鐨勬湭鎹曡幏鐨凧avaScript寮傚父銆?vue-telegram- login-鐢ㄤ簬鐢垫姤鐧诲綍鐨刅ue缁勪欢 vuexpress -Vue + Express.js = VueXpress / Express.js鐨勬湇鍔″櫒绔覆鏌撳紩鎿庛€傚皢.vue鏂囦欢鐢ㄤ綔鎮ㄧ殑express.js妯℃澘銆?vue- fixer-鐢ㄤ簬fixer API鐨勭畝鍗晇ue缁勪欢銆?amazon-cognito-vuex妯″潡-Amazon Cognito鐨刅uex妯″潡銆?vue-web3-Vue.js鐨刉eb3鍖哄潡閾剧粦瀹氾紙鍙梀uefire鍜孌rizzle鍚彂锛?sbt-vuefy-Playframework鐨刅ue.js闆嗘垚 loopback-vue-starter -LoopBack鍜孷ue鍏ラ棬妯℃澘锛屽彲閫氳繃vue-cli鍜岃交鏉剧鐞嗘彃浠秜ue ui銆?vue.py-鐢≒ython缂栧啓Vue.js缁勪欢 VUE-鐢垫姤鎶ょ収- Vue鐨勭粍浠讹紝鐢ㄤ簬鐢垫姤鎶ょ収 vue-facebook-login- component-鐢ㄤ簬闆嗘垚Facebook鐧诲綍鐨勫畬鍏ㄥ彲鑷畾涔夌殑缁勪欢銆?vue-programmatic-invisible-google-recaptcha-涓€涓畝鍗曠殑涓嶅彲瑙丟oogle reCAPTCHA缁勪欢锛屼粎涓撴敞浜庣▼搴忚皟鐢ㄣ€?vbuild-瀹冪殑涓昏鐩殑鏄鎮ㄥ湪娌℃湁瀹屾暣鐨刵odejs鍫嗘爤鐨勬儏鍐典笅浣跨敤vuejs搴旂敤绋嬪簭涓殑缁勪欢锛?vue鏂囦欢锛夈€備粠0.6鐗堟湰寮€濮嬶細鎮ㄥ彲浠ヤ娇鐢ㄧ函python鍒涘缓缁勪欢锛?feathers-vuex-鏄疐eathers Client鍜孷uex鐨勪竴娴侀泦鎴愩€傚畠鍦ㄥ悗鍙板疄鐜颁簡璁稿Redux鏈€浣冲疄璺碉紝娑堥櫎浜嗗緢澶氭牱鏉夸唬鐮侊紝浠嶇劧鍏佽鎮ㄨ交鏉捐嚜瀹氫箟Vuex瀛樺偍銆?vue-nocaptcha-Vue.js鐨凙liyun noCAPTCHA缁勪欢 ionic- vue-閫傜敤浜嶪onic v4鐨刅ue.js闆嗘垚 vue-0xcert -0xcert妗嗘灦鐨刅ue.js闆嗘垚-涓€涓紑鏀炬簮浠g爜搴擄紝鎻愪緵鐢ㄤ簬鏋勫缓鍔熻兘寮哄ぇ鐨勫幓涓績鍖栧簲鐢ㄧ▼搴忕殑宸ュ叿 vue-zdog-zDog鐨刅ue鍖呰鍣?娴忚鍣ㄧ殑鏋佺畝3D寮曟搸 vue-unleash-鐢ㄤ簬Unleash寮€婧愬姛鑳芥爣蹇楀钩鍙扮殑Vue鎻掍欢 vue-zeye-client-涓€涓猇ue鎻掍欢锛岀敤浜庣畝鍗曚娇鐢╖eye -server寮€婧恗ediasoup WebRTC SFU鏈嶅姟鍣?vue-postgrest-鐢ㄤ簬postgREST鐨刅ue.js闆嗘垚锛氱伒娲伙紝寮哄ぇ涓旀槗浜庝娇鐢ㄣ€?Vuecket -Vue.JS鐨勫姛鑳戒笌Apache Wicket鐨勯瓟鍔涚粨鍚堝湪涓€璧风殑WebFramework vue-ld -Vue LaunchDarkly鎻掍欢鍜岃矾鐢卞疄鐢ㄧ▼搴?PRISMA -涓篅 sherlog / CLI鏃ュ織鍙鍖栧鎴风 Vue CLI鎻掍欢 vue-cli-plugin-cordova -Vue CLI鎻掍欢锛屽彲杞绘澗灏咰ordova娣诲姞鍒版偍鐨勯」鐩腑 vue-cli-plugin-component-鍒涘缓缁勪欢鐨刅ue CLI鎻掍欢 vue-cli-plugin-modular-vuex-鍒涘缓妯″潡鍖朧uex瀛樺偍鏂囦欢鐨刅ue CLI鎻掍欢 vue-cli-plugin-modular- router-鍒涘缓妯″潡鍖栬矾鐢辨枃浠剁殑Vue CLI鎻掍欢 vue-cli-plugin-docker-nginx -Vue CLI鎻掍欢浠ヤ娇鐢ㄦ渶灏戠殑nginx鏈嶅姟鍣ㄦ坊鍔燿ocker閮ㄧ讲 vue-cli-plugin-element -Vue CLI鎻掍欢锛屽彲鍦ㄥ嚑绉掗挓鍐呯敤element-ui鏋勫缓浼佷笟搴旂敤绋嬪簭 vue-cli-plugin-electron- builder-閫傜敤浜嶦lectron鐨刅ue CLI鎻掍欢锛屾棤闇€浣跨敤Electron Builder鐨勫繀闇€閰嶇疆銆?vue-cli-plugin-codeceptjs-puppeteer-瀹夎CodeceptJS鍜孭uppeteer杩涜澧炲帇鐨?绔祴璇曫煓?vue-cli-plugin-kami-鍏锋湁宸ヤ綔鏋舵瀯鐨刅ue CLI鎻掍欢锛屽彲蹇€熷惎鍔ㄦ偍鐨勫簲鐢?vue-cli-plugin-auto-alias -Vue CLI鎻掍欢鍙嚜鍔ㄨ缃埆鍚?vue-cli-plugin-clean -Vue CLI鎻掍欢锛屽彲閫氳繃娣诲姞涓€浜涘父鐢ㄥ伐鍏峰拰妯″紡鏉ュ府鍔╂偍娓呯悊骞跺揩閫熻缃甐ue搴旂敤 vue-cli-plugin-mock-妯℃嫙HTTP璇锋眰鐨刅ue CLI鎻掍欢 vue-cli-plugin-ci -Vue CLI鎻掍欢浠ョ敓鎴怌I浠g悊閰嶇疆鏂囦欢浠ヤ娇鐢–I鍚姩椤圭洰 璋锋瓕鍒嗘瀽 vue-ua -Vue.js涓殑Google Universal Analytics鏀寔銆?vue-analytics -Google Analytics锛堝垎鏋愶級鐨刅ue鎻掍欢銆?vue-gtm -Google璺熻釜浠g爜绠$悊鍣ㄧ殑Vue鎻掍欢 vue-gtag -Vue鐨勫叏鐞冪珯鐐规爣绛炬彃浠?Yandex Metrika vue-ya-metrica -Yandex.Metrica鐨刅ue鎻掍欢 vue-yandex-metrika-鍏锋湁璺敱鍣ㄩ泦鎴愶紝鎻掍欢閫夐」鐨刌andex Metrika鐨刅ue鎻掍欢 寮€鍙戝伐鍏?vue-dev-server-鐢ㄤ簬鏋勫缓vue缁勪欢鐨勫皬鍨嬪紑鍙戞湇鍔″櫒銆?鏁呬簨涔?UI寮€鍙戠幆澧冦€備互鍚庡彲浠ヤ笌v3.2 +涓€璧蜂娇鐢ㄣ€?Font Awesome Finder -Chrome鎵╁睍绋嬪簭锛岀敤浜庢悳绱紝棰勮鍜岄€夋嫨Font Awesome鍥炬爣锛屽苟灏嗛€夊畾鐨勫浘鏍嘓TML浠g爜鍜孶nicode澶嶅埗鍒板壀璐存澘銆?vue-dummy-鍗犱綅绗︽枃鏈拰铏氭嫙鍥惧儚浣滀负绠€鍗晇-dummy鎸囦护銆?浣?绠$悊鍜岄噸鐢╲ue椤圭洰涔嬮棿鐨勭粍浠躲€傝交鏉惧湴浠庝换浣曢」鐩腑闅旂鍜屽叡浜粍浠讹紝鑰屾棤闇€鏇存敼鍏舵簮浠g爜锛岀粍缁囩簿閫夌殑闆嗗悎骞跺畨瑁呭湪涓嶅悓鐨勯」鐩腑銆?ComponentFixture-鏄竴绉嶇粍浠惰璁★紝鐢ㄤ簬寮€鍙戝拰娴嬭瘯鍏朵粬缁勪欢锛屽苟鑷姩缁戝畾鍏堕亾鍏枫€?vue-cli-template-dev- server-鐢ㄤ簬鏋勫缓vue-cli鑷畾涔夋ā鏉跨殑寮€鍙戞湇鍔″櫒銆?vue-codemods-鏈夊姪浜庢洿鏂板拰閲嶆瀯Vue鍜孞avaScript鏂囦欢鐨刢odemod鑴氭湰鐨勯泦鍚堛€?codesandbox-鐢ㄤ簬蹇€烿ue寮€鍙戠殑鍦ㄧ嚎IDE鍜屽師鍨嬪埗浣滃伐鍏枫€?vue-dom鎻愮ず-馃挕鑾峰彇DOM涓殑鎻愮ず銆傛渶灏忕殑Vue devtool鏇夸唬鏂规銆?妫€鏌?妫€鏌ヤ笌璋冭瘯

Vue.js devtools -Chrome devtools鎵╁睍锛岀敤浜庤皟璇昖ue.js搴旂敤绋嬪簭銆?DejaVue-涓篤ue.js鏋勫缓鐨勫彲瑙嗗寲鍜岃皟璇曞伐鍏枫€?vue-clicky-鍙抽敭鍗曞嚮浠讳綍缁勪欢浠ュ湪鎺у埗鍙颁腑鏄剧ず鏈夊叧瀹冪殑淇℃伅銆?vuejs- logger-涓篤ue.js鎻愪緵鍙嚜瀹氫箟鐨勬棩蹇楄褰曞姛鑳姐€?vue-inspector-绉诲姩璁惧Vue.js妫€鏌ュ櫒 Vue Performance Devtool -Vue Performance Devtool鏄竴涓祻瑙堝櫒鎵╁睍锛岀敤浜庢鏌ue缁勪欢鐨勬€ц兘 VueSource-鍏ㄥ眬Vue mixin锛屽畠閫氳繃娣诲姞HTML娉ㄩ噴鏉ユ爣璇嗘簮浠g爜涓殑缁勪欢 NW-Vue-DevTools -DevDependency鐢ㄤ簬灏哣ue DevTools娣诲姞鍒癗W.js bruit- io-鏀堕泦鏈夊叧灞忓箷鎴浘鍜屾妧鏈暟鎹殑鍙嶉锛屽苟灏嗗叾鍙戝竷鍒癰ruit.io涔嬬被鐨凙PI涓€?鏂囦欢 寤虹珛鏂囦欢

vue-markdown-loader-灏哅arkdown鏂囦欢杞崲涓篤ue缁勪欢銆?vue-styleguide- generator-閽堝Vue.js鐨凴eact鍚彂寮忔牱寮忔寚鍗楃敓鎴愬櫒銆?CheatSheet-瀹屾暣鐨処nteractive API銆?Vuex CheatSheet-瀹屾暣鐨勪氦浜掑紡Vuex API銆?vue-styleguidist-鐢ㄤ簬甯︽湁鐢熸椿椋庢牸鎸囧崡鐨刅ue缁勪欢鐨勯鏍兼寚鍗楃敓鎴愬櫒銆?vue-elucidate-涓€涓负鎮ㄧ殑鐢熸椿椋庢牸鎸囧崡/璁捐绯荤粺鐢熸垚绮剧編鏂囨。鐨勭粍浠躲€?vue-md-loader -Markdown鏂囦欢鍒癆LIVE Vue缁勪欢銆?@ vuedoc / parser-涓篤ue鏂囦欢缁勪欢鐢熸垚JSON鏂囨。銆?@ vuedoc / md-涓篤ue鏂囦欢鐢熸垚Markdown鏂囨。銆?jsdoc-vue-component-涓€涓猨sodc3鎻掍欢锛屽彲灏唙ue SFC淇℃伅锛堝悕绉帮紝閬撳叿锛屼簨浠?..锛夋彁鍙栧埌鏂囨。涓€?jsdoc-vuedoc-涓€涓猨sdoc3鎻掍欢use @vuedoc/md銆?vue-storybook 鈥撳皢鍧楁坊鍔犲埌Vue鍗曚釜鏂囦欢缁勪欢涓紝浠ユ洿绱у瘑鍦伴泦鎴怴ue + Storybook Vue妯″紡-鏈夌敤鐨刅ue妯″紡锛屾妧鏈紝鎶€宸у拰绐嶉棬浠ュ強鏈夌敤鐨勭瓥鍒掗摼鎺ャ€?vuese -vue缁勪欢鏂囨。鐨勪竴绔欏紡瑙e喅鏂规銆?vue-dotmd- loader-鐢ㄤ簬灏嗗姞杞藉櫒markdown鏂囦欢杞崲涓簐ue鏂囦欢鐨刉ebpack鍔犺浇鍣ㄣ€?vue-tut-浣跨敤Vue杞绘澗鏋勫缓绮剧編鐨勬暀绋嬨€?娴嬭瘯 vuenit-鐢ㄤ簬娴嬭瘯Vue缁勪欢鍜屾寚浠ょ殑瀹炵敤绋嬪簭銆?vue-unit -Vue.js搴擄紝浣垮垱寤哄拰鍗曞厓娴嬭瘯缁勪欢鏇村姞瀹规槗銆?vue- a2b-浣跨敤Vue.js杩涜鎷嗗垎娴嬭瘯鐨勫簱锛圓 / B娴嬭瘯锛夈€傞珮搴﹀彲閰嶇疆涓斿緢灏忥紙1.2k鍘嬬缉锛夈€?vue-test-utils-鐢ㄤ簬娴嬭瘯Vue缁勪欢鐨勫畼鏂瑰疄鐢ㄧ▼搴忋€?vue-test- actions-浣跨敤Jest妯℃嫙瀵筕uex鍔ㄤ綔杩涜鍗曞厓娴嬭瘯銆?jest-vue-matcher-vue鐨勫叾浠栫帺绗戝尮閰嶅櫒 vue-hubble-鍦╒ue涓€夋嫨鍏冪礌杩涜UI娴嬭瘯鐨勬洿濂芥柟娉曘€?Vue娴嬭瘯搴?绠€鍗曡€屽畬鏁寸殑娴嬭瘯瀹炵敤绋嬪簭锛屽彲榧撳姳鑹ソ鐨勬祴璇曞疄璺点€傚熀浜嶥OM娴嬭瘯搴擄紝骞跺熀浜庡畼鏂圭殑Vue Test Utils鏋勫缓銆?jest-serializer-vue-tjw-鏀硅繘鐨凧est蹇収鏍煎紡 vuex-test-utils-浣跨敤chai瀵筕ux杩涜鍗曞厓娴嬭瘯 鏃犻渶娴忚鍣ㄧ殑瑕佹眰 鏃犻渶娴忚鍣ㄥ嵆鍙姞杞絍ue缁勪欢

vue- node-鍦ㄨ妭鐐逛腑鍔犺浇vue缁勪欢銆?婧愪唬鐮佺紪杈?鏂囨湰缂栬緫鍣ㄦ彃浠?/p>

鍘熷瓙 language-vue@atom.io-Atom鐨刅ue缁勪欢鏂囦欢璇硶銆?vue-snippets@atom.io-Vue缁勪欢鏂囦欢鐨凙tom浠g爜鐗囨銆?vue-autocompile@atom.io-淇濆瓨鏃惰嚜鍔ㄧ紪璇憊ue鏂囦欢銆?lint-sass-vue@atom.io-鐢ㄤ簬.vue鏂囦欢涓璖int / SCSS鐨凙tom.io杞欢鍖呫€?vuejs2-snippets@atom.io-鐢ㄤ簬javascript鍜岀粍浠剁殑Atom鐗囨锛屽寘鎷敓鍛藉懆鏈熸寕閽╋紝鎸囦护锛屽睘鎬э紝vuex锛寁ue-router鍜寁ue-i18n鏀寔銆?vue2-autocomplete@atom.io-Atom鐨刅ue.js 2.0+鑷姩瀹屾垚鍔熻兘銆?宕囬珮鏂囧瓧 Vue璇硶绐佸嚭鏄剧ず-鍗曟枃浠禫ue缁勪欢鐨凷ublime Text璇硶绐佸嚭鏄剧ず銆?VUEFormatter -Sublime鏂囨湰浠g爜鏍煎紡 Vue涓嬩竴鏍煎紡鍖栫▼搴?Sublime Text Vue鏍煎紡鍖栫▼搴忥紝鍙楁敮鎸佺殑ES5 / 6/7锛孡ess / Sass鍜孭ug / Html妯℃澘銆?Vim Vim Vue -Vue.js缁勪欢鐨勮娉曠獊鍑烘樉绀恒€?vim-vue-plugin -.vue鏂囦欢鐨刅im璇硶鍜岀缉杩涙彃浠躲€?Visual Studio绋嬪紡鐮?Vetur - VSCode鐨刅ue宸ュ叿銆?Vue VSCode浠g爜娈?鍙互澧炲己Vue宸ヤ綔娴佺▼鐨勪唬鐮佹銆?绂诲瓙鐗囨-Vetur瀵圭瀛愮粍浠剁殑鏀寔 瑙嗚宸ヤ綔瀹?VuePack-鍖呭惈HTML Intellisense鍜孷ue.js JavaScript搴撶殑浠g爜娈点€?鎷彿 Brackets Vue -Vue.js鐨勬嫭鍙锋墿灞曘€?鏅鸿兘 Vue.js瀵筗ebStorm锛孖ntelliJ IDEA锛孭hpStorm锛孭yCharm鍜孯ubyMine鐨勬敮鎸佲€?JetBrains鐨勫畼鏂筕ue.js鏀寔 鍩冮┈鍏嬫柉 Vue妯″紡-vue.js鐨凟macs涓昏妯″紡銆?鍑壒 Kate璇硶鏂囦欢-katepart锛坘ate锛宬write锛宬develop锛夌殑璇硶鏂囦欢锛堝凡淇敼鎴栧師濮嬶級銆?鑴氭墜鏋?鑴氭墜鏋?鏍锋澘/绉嶅瓙/鍏ラ棬濂椾欢/鐑熷洷鍚堝/绾︽浖鍙戠數鏈?/p>

vue- cli-鐢ㄤ簬鎼缓Vue.js椤圭洰鐨勭畝鍗旵LI銆?Vue- Django-灏哣ueJS鐨勫嚭鑹插姛鑳藉紩鍏jango锛圥ython锛夊簲鐢ㄧ▼搴忕殑鏍锋澘銆?python-vuejs-鐢ㄤ竴缁勮剼鏈皢Python Web妗嗘灦鍜孷ue.js绮樺悎鍦ㄤ竴璧枫€傚熀鏈笂鏄竴涓獀ue-cli鍖呰鍣ㄣ€?generator-vue-plugin -Yeoman鐢熸垚鍣ㄧ敓鎴恦ue鎻掍欢銆?vue- seed-瀵逛簬甯屾湜浣跨敤Vue涓婃墜鐨勪汉鏉ヨ锛寁ue-seed鏄渶灏忕殑绉嶅瓙 nuxt绉嶅瓙-瀵逛簬甯屾湜浣跨敤Vue鍜孨uxt涓婃墜鐨勪汉鏉ヨ锛宯uxt绉嶅瓙鏄渶灏忕殑绉嶅瓙 rails_vue_melt-浣跨敤webpack = vue浼樺寲鍣ㄧ殑Rails瑙嗗浘銆?vue- starter-涓€涓猇ue.js鍏ラ棬宸ュ叿鍖咃紝浣挎偍鍙互涓撴敞浜庢洿澶氱殑缂栫▼鍜屾洿灏戠殑閰嶇疆銆?vuejs-wordpress-theme-starter-涓€涓甫鏈夎儐閲忕殑WordPress涓婚锛岃Vue鍙栦唬 Cordovue-浣跨敤Vue鐨勭ず渚婣pache Cordova搴旂敤绋嬪簭銆?Cookiecutter-Django- Vue-鍏锋湁澶ч噺璁剧疆/闆嗘垚鐨凞jango + VueJS + Docker鍙畾鍒堕」鐩敓鎴愬櫒 iBiu瑙嗚CLI锛岀敤浜庡湪2绉掑唴鎼缓澶у瀷Vue椤圭洰銆?wp-vue-涓€涓畝鍗曠殑Vue鍗氬妯℃澘锛屾樉绀烘潵鑷猈ordPress REST API绔偣鐨勫笘瀛愩€?vue-cli-template-nativescript-鐢ㄤ簬浣跨敤rollup + babel + eslint鍚姩鏂扮殑nativescript + vue椤圭洰鐨勬ā鏉?vue-element-ui-scaffold-鍏锋湁Element-UI CRUD鏀灦/鍙戠數鏈虹殑鍦ㄧ嚎鍜屽彲瑙哣ue 2銆?vue-firebase-element-ui-scaffold-鍏锋湁CRUD锛岃韩浠介獙璇侊紝鏂囦欢/鍥惧儚涓婁紶锛屾椿鍔ㄦ棩蹇楃瓑鍔熻兘鐨勫湪绾垮拰鍙Vue 2锛孍lement-UI鍜孎irebase鏀灦/鐢熸垚鍣ㄣ€?vuesion-閫傜敤浜庣敓浜у氨缁殑PWA鐨勬渶瀹屾暣鏍锋澘銆備笓娉ㄤ簬鎬ц兘锛屽紑鍙戦€熷害鍜屾渶浣冲疄璺?vue-vuex-typescript-webpack-seed-鍏锋湁Vue锛孷uex锛孴ypescript锛孲css鍜學ebpack鐨勭瀛愰」鐩紝鍏锋湁鐑噸杞?VueCharged妯℃澘-鍏锋湁CLI鑴氭墜鏋剁殑鍔熻兘寮哄ぇ鐨勶紝鍔熻兘浼樺厛鐨刅ue 2妯℃澘銆備娇鐢╒ue 2锛孷uex锛孷ue璺敱鍣ㄥ拰Vue I18n銆?Huncwot-鍏锋湁Node.js鐨刅ue.js鏍锋澘锛岀敤浜庝娇鐢ㄢ€滃寘鎷數姹犫€濇柟娉曟瀯寤虹幇浠avaScript搴旂敤绋嬪簭銆?wemake-vue-template-涓撴敞浜庝唬鐮佽川閲忓拰寮€鍙戜汉鍛樻弧鎰忓害鐨勮竟缂榲ue妯℃澘銆傚叿鏈夛細nuxt锛屾祦閲忓拰寮€鐜╃瑧銆?VUE-LIB-妯℃澘-馃洜 涓€涓畝鍗曠殑妯℃澘锛岀敤浜庝綔涓哄紑鏀炬簮浠g爜椤圭洰鏋勫缓鍜屽彂甯僔ue缁勪欢/搴撱€?Vue鏍锋澘-馃槏 Vue寰堟锛?馃グ Vuex锛孷uex-pathify锛宔lement-ui锛宼ailwindcss ScaffoldHub.io-浣跨敤SQL锛孧ongoDB鎴朏irebase Firestore鏁版嵁搴撶敓鎴愬畬鏁寸殑Vue搴旂敤绋嬪簭銆?VuePlay-鍦ㄥ嚑绉掗挓鍐呯敓鎴愪竴娆℃€ue娓镐箰鍦恒€備娇鎮ㄥ彲浠ュ揩閫熸祴璇曚簨鐗┿€?Mevn-CLI-鍩轰簬MEVN鍫嗘爤鐨勫簲鐢ㄧ▼搴忕殑鍏夐€熻缃€?vue-cli-template-registry-涓€绉嶇敤浜庡畨瑁呮墭绠″湪绉佹湁/浼佷笟瀛樺偍搴撲笂鐨剉ue-cli鑷畾涔夋ā鏉跨殑瑙e喅鏂规銆?鍏锋湁Auth鐨刅uejs Firebase CRUD鍏ラ棬 vue-enterprise-boilerplate-浣跨敤Vue CLI 3涓烘柊鐨刅ue SPA椤圭洰寮€鍙戠殑锛屼笉鏂彂灞曠殑锛屽緢鏈夋€濇兂鐨勬灦鏋勫拰寮€鍙戠幆澧冦€?vue-starters-directory-鎼滅储鍙敤鐨勮剼鎵嬫灦椤圭洰鍜孷ueJS鍏ラ棬濂椾欢銆傚姛鑳芥悳绱㈠拰github缁熻淇℃伅鍙敤銆?janak-杞绘澗鏋勫缓Vue 3搴旂敤馃尙 瀹㈡埛 浠呭湪娴忚鍣ㄤ腑娓叉煋Vue搴旂敤绋嬪簭

钀屽彂-钀屽彂鏄竴涓嚜浠ヤ负鏄殑鍔熻兘VueJS 2.0瀹夎绋嬪簭鐨刉ebPack銆?Vue Settler-涓€涓嚜浠ヤ负鏄殑Vue 2.0 SPA鍏ラ棬宸ュ叿銆?vue-multiple- pages-浣跨敤Vue 2锛學ebpack2鍜孍lement-UI鐨勭幇浠ue.js澶氶〉闈㈠惎鍔ㄥ櫒 vue- typescript -boilerplate-鍏锋湁Vue 2锛孷ue Typed锛孷uex锛孷ue Router鍜屾湰鍦板寲鐨刅ue.js Typescript SPA鍚姩鍣?vue-tachyons-template-鍏锋湁Tachyons锛學ebpack鍜孍SLint鐨刅ue 2椤圭洰鍏ラ棬妯℃澘 Vuets-浣跨敤绫绘牱寮忕殑缁勪欢锛寁ue鎻掍欢閫夐」锛寃ebpack鍜寁ue-cli鐨刅ue锛孴ypeScript灏辩华鏍锋澘銆?MMF-FE / vue- typescript - vue2.x鎵撳瓧绋挎ā鏉裤€?鍙嬪ソ鐨刅ue Starter-閫氳繃Apollo瀹㈡埛绔紙Vuex锛孷ue-router锛孷ue-i18n锛學ebpack 3锛孍slint锛孭rettier绛夛級鏀寔GraphQL鐨勫姛鑳介綈鍏ㄧ殑Vue.js鍏ラ棬椤圭洰 vue-ts- amd-浣跨敤AMD妯″紡锛圧equireJS锛夊拰Typescript鐨勫姛鑳介綈鍏ㄧ殑Vue.js 2鏍锋澘銆?vue-2-boilerplate-鐢眕etervmeijgaard寮€鍙戠殑Vue 2鏍锋澘锛岀敤浜庡紑鍙戜腑鍒板ぇ鍨嬪崟椤靛簲鐢ㄧ▼搴?vue-cli-template- library-鐢ㄤ簬浣跨敤Rollup + Jest + Babel + Storybook + TravisCI + SemanticRelease寮€鍙戝紑婧恦ue.js搴撶殑妯℃澘銆?vue-cli-template-github- pages-鐢ㄤ簬閫氳繃travisCI杩涜Github Pages閮ㄧ讲鐨勫叏鍔熻兘Webpack + vue-loader璁剧疆銆?vue-webpack-chrome-extension-template-鐢ㄤ簬鍦ㄥ紑鍙戞椂鍦╒uejs鐑噸杞戒笂蹇€熷垱寤篊hrome鎵╁睍绋嬪簭鐨勬ā鏉裤€?vue-auth-boilerplate-鍏锋湁Router / Vuex / CLI3鍜宎uth鍔熻兘锛堝緢閰风殑娉ㄥ唽鍜岀櫥褰曪級鐨刅ue SPA鏍锋澘銆備娇鐢╨aravel-api-boilerplate-jwt寮€绠卞嵆鐢ㄥ嵆鍙繘琛屾渶灏戠殑璁剧疆銆?vue-atomic- design-鍩轰簬鍘熷瓙璁捐鏂规硶鐨刅ue鍓嶇鏍锋澘銆?鏅亶 灏哣ue搴旂敤绋嬪簭娓叉煋涓烘湇鍔″櫒涓婄殑HTML鍜屾祻瑙堝櫒涓殑DOM

SPA鍏ラ棬宸ュ叿鍖?澶囧彈濂借瘎鐨勫叆闂ㄥ伐鍏峰寘锛岀敤浜庝娇鐢↙aravel鍜孷ue.js鏋勫缓鍗曢〉搴旂敤绋嬪簭銆?SSR鏍锋澘-Vue.js鏈嶅姟鍣ㄧ娓叉煋鏍锋澘锛屼笉浼氭薄鏌揤uex銆?neutrino-preset-vue-static-鐢ㄤ簬浣跨敤Vue.js鏋勫缓闈欐€佺綉绔欑殑绠€绾﹀叆闂ㄥ伐鍏峰寘銆?Vueniverse-鐢盢uxt.js鍜孍xpress鎻愪緵鏀寔鐨勫姛鑳介綈鍏ㄧ殑閫氱敤Vue妯℃澘锛岀敤浜庡熀浜庣敤鎴风殑搴旂敤绋嬪簭銆?vue- preload-鐢ㄤ簬娣诲姞

Vuetober-鍏锋湁Laravel锛孷ue.js鍜孫ctober CMS鐨勫崟椤靛簲鐢ㄧ▼搴忋€?vue-server- demo-鍦╒ue涓紪鍐檏oa鏈嶅姟鍣ㄣ€?vue-apollo-connector- kit-鍏锋湁2绉嶄笉鍚岀瓥鐣ワ紙localStorage鍜宧ttpOnly cookie锛夌殑JWT韬唤楠岃瘉銆備娇鐢ㄨ嚜瀹氫箟鎸囦护锛坅pollo锛夎繘琛屾巿鏉冦€?DotVue-浣跨敤鏈嶅姟鍣╒iewModel鍥炲彂鍦?NET涓疄鐜?vue鏂囦欢澶勭悊绋嬪簭銆傚叿鏈夋湇鍔″櫒绔疺iewModel鐨勫崟鏂囦欢缁勪欢銆傚皢VueJS鐨勬墍鏈夊姛鑳戒笌绠€鍗曠殑C锛冩湇鍔″櫒绔暟鎹闂粨鍚堜娇鐢ㄣ€?isomor-vue-app-浣跨敤Vue鍜宨somor璁剧疆宸ヤ綔鐜锛屼互閫氳繃鑷姩鐢熸垚API缁熶竴鍓嶇鍜屽悗绔€?鐢靛瓙 Electron Vue-鍏锋湁vue-cli鑴氭墜鏋讹紝甯歌Vue鎻掍欢锛宔lectron-packager / electron-builder锛屽崟鍏? e2e娴嬭瘯锛寁ue-devtools鍜寃ebpack鐨凟lectron锛哣ue.js蹇€熷叆闂ㄦ牱鏉裤€?VuePack-浣跨敤Vue 2锛孷uex锛孷ue-router鍜學ebpack 2锛堢敋鑷虫槸Electron锛夌殑鐜颁唬鍚姩鍣ㄣ€?vue-flexible-link -Tiny Vue缁勪欢锛岀敤浜嶦lectron鍦ㄦ祻瑙堝櫒涓墦寮€閾炬帴銆傝法鐜搴旂敤绋嬪簭锛圵eb鍜屾湰鏈猴級鐨勭悊鎯抽€夋嫨 vuelectron -vue鐨別lectronjs鍏ラ棬濂椾欢銆?vue-design -Vue鍜孍lectron鏈€濂界殑缃戠珯鍙鍖栨瀯寤哄櫒銆?dapp -Vue / Parcel / Electron鍫嗘爤鐨勬牱鏉裤€?vue-electron-template-鍏锋湁鍚敤鐑噸杞藉拰甯歌Vue鎻掍欢锛屼娇鐢╳ebpack-4閰嶇疆鐨勫紑鍙戝拰鏋勫缓鑴氭湰鐨凟lectron锛哣ue.js鏍锋澘 閮ㄥ垎 搴旂敤绋嬪簭鐨勮剼鎵嬫灦閮ㄥ垎

vue-generator-鐢ㄤ簬Vue缁勪欢锛岃鍥惧拰瀛樺偍妯″潡鐨凜LI鐢熸垚鍣ㄣ€?vue-component-generator - vue缁勪欢鐨勭敓鎴愬櫒锛屾敮鎸乂ue1.X鍜孷ue2.X銆?rapydml_cmp -Vue缁勪欢pythonic鐢熸垚鍣紝鍩轰簬RapydML鍜孯apydScript鏋勫缓銆?vue-authoring-template-鐢ㄤ簬鍒涗綔鐨勬ā鏉匡紝璇ユā鏉胯繕浠ョ畝鍗曠殑鏂瑰紡浠ユ晠浜嬪満鏅紙storybook锛夋牸寮忓彂甯僔ue缁勪欢鍙婂叾鐢ㄤ緥銆?vue-component-boilerplate-鐢ㄤ簬涓篤ueJS缁勪欢鐢熸垚鏍锋澘浠g爜鐨勬ā鏉匡紝骞堕鍏堝畨瑁呬簡鏋勫缓鑴氭湰鍜屾祴璇曘€?vue-generate-component-typescript -vue鐨勬墦瀛楃浠g爜鐢熸垚鍣紝瀹冨彲浠ョ敓鎴愮粍浠讹紝鎸囦护锛岃繃婊ゅ櫒銆?杩愯 鍛戒护琛?缁堢 blessed- vue-涓€涓猇ueJS杩愯鏃讹紝鍙鎮ㄥ湪Vue Edit涓紪鍐欏懡浠よUI 棰勬覆鏌?react-snap -SPA鐨勯浂閰嶇疆闈欐€侀娓叉煋鍣?prerender- plugin-涓€涓狽ode.js / webpack鎻掍欢锛岀敤浜庡湪鍗曢〉闈㈠簲鐢ㄧ▼搴忥紙SPA锛変腑棰勬覆鏌撻潤鎬丠TML銆?vue-prerender-涓€涓猇ue.js閲忚韩瀹氬埗鐨勬彃浠讹紝璇ユ彃浠跺疄鐜颁簡浣跨敤鏃犲ごchrome娓叉煋Vue.js椤甸潰鐨勪笁绉嶇瓥鐣ャ€?Rendora-鍔ㄦ€丼SR锛堟湇鍔″櫒绔憟鐜帮級锛屼娇鐢ㄦ棤澶碈hrome娴忚鍣ㄨ交鏉捐В鍐充簡鐜颁唬JavaScript缃戠珯鐨凷EO闂 pre-vue -Vue + Nuxt鏍锋澘椤圭洰锛屼负OpenGraph鏍囩锛孏oogle Analytics锛堝垎鏋愶級锛岀珯鐐瑰湴鍥惧拰robots.txt鎻愪緵鍐呯疆鏀寔銆?ssr-vuejs-nodejs-鏈嶅姟鍣ㄧ浣跨敤涓嶅甫Nuxt鐨刵odejs娓叉煋vuejs銆?瑷€璇彂鐢?馃敟鍩轰簬Vue SSR鐨勫井鍓嶇锛屽井鏈嶅姟鍜岃交閲忕骇瑙e喅鏂规馃敟 聽

2k23经纪人模式怎么模拟比赛,NodeMCU-API 中文完整版 word 版本 (2025)
Top Articles
Latest Posts
Recommended Articles
Article information

Author: Arielle Torp

Last Updated:

Views: 5347

Rating: 4 / 5 (61 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Arielle Torp

Birthday: 1997-09-20

Address: 87313 Erdman Vista, North Dustinborough, WA 37563

Phone: +97216742823598

Job: Central Technology Officer

Hobby: Taekwondo, Macrame, Foreign language learning, Kite flying, Cooking, Skiing, Computer programming

Introduction: My name is Arielle Torp, I am a comfortable, kind, zealous, lovely, jolly, colorful, adventurous person who loves writing and wants to share my knowledge and understanding with you.