濡備綍璁捐�鍙��鍖栨惌寤哄钩鍙扮殑缁勪欢鍟嗗簵锛�
涔嬪墠涓€鐩村湪鍋� lowcode 鍜屽彲瑙嗗寲鐩稿叧鐨勯」鐩�紝涔熷洿缁曞彲瑙嗗寲鎶€鏈�緭鍑轰簡涓€绯诲垪鎶€鏈�枃绔狅紝浠婂ぉ鎴戠户缁�拰澶у�鏉ヨ亰鑱婂彲瑙嗗寲骞冲彴鐩稿叧鐨勮瘽棰樷€斺€旂粍浠跺晢搴椼€傝繖涓�渶姹傚叾瀹炲緢鏃╁湪鎴戝紑婧� H5-Dooring 涔嬪悗灏辨湁缃戝弸鎻愬嚭杩� issue 锛屽�涓嬶細
姝eソ鏈€杩戜篃鍋氫簡涓€绯诲垪鐨勯噸鏋勫拰浼樺寲锛岃�寰楁槸鏃朵警鐫€鎵嬬粍浠跺晢搴椾簡锛屾墍浠ュ€熸�鏈轰細鍜屽ぇ瀹惰�缁嗚亰鑱婂�浣曡�璁″彲瑙嗗寲鎼�缓骞冲彴鐨勭粍浠跺晢搴椼€�
鎸夌収鎴戜竴鍚戠殑鍐欎綔椋庢牸锛屾垜浼氬湪涓嬮潰鍒楀嚭鏂囩珷鐨勫ぇ绾诧紝浠ヤ究澶у�鏈夐€夋嫨涓旈珮鏁堢巼鐨勯槄璇诲拰瀛︿範锛�
1.浠€涔堟槸缁勪欢鍟嗗簵锛屼负浠€涔堣�璁捐�缁勪欢鍟嗗簵
2.缁勪欢鍟嗗簵宸ヤ綔娴佽�璁�
3.缁勪欢鍟嗗簵宸ヤ綔娴佸叿浣撴柟妗堝疄鐜�
瀹炵幇鍦ㄧ嚎浠g爜缂栬緫鍣� 缁勪欢鎻愪氦鏂规�璁捐� 缁勪欢瀹℃壒鏂规�璁捐� 缁勪欢涓婃灦鏇存柊鏂规�
4.鍙��鍖栨惌寤哄钩鍙扮粍浠跺晢搴楁€荤粨鍙婂悗鏈熻�鍒�
鏂囩珷瑙嗗浘濡備笅锛屽ぇ瀹跺湪骞虫椂鍦ㄥ伐浣滀腑涔熷彲浠ラ€氳繃鎬濈淮瀵煎浘鐨勬柟寮忔潵鏁寸悊鎬濊矾銆�
浠€涔堟槸缁勪欢鍟嗗簵, 涓轰粈涔堣�璁捐�缁勪欢鍟嗗簵
鈥滃晢搴椻€濆ぇ瀹朵篃璁稿苟涓嶉檶鐢燂紝瀵圭敤鎴疯€岃█锛屽叾鍩烘湰鐢ㄩ€旀槸婊¤冻姝e父鐨勬秷璐归渶姹�;瀵逛緵搴斿晢鑰岃█锛屽晢搴楁彁渚涗簡涓€绉嶉攢鍞�嚜韬�骇鍝佺殑钀ラ攢鎺ㄥ箍娓犻亾;瀵瑰晢搴楄嚜韬�€岃█锛屼竴鏂归潰鑾峰緱浜嗗�娴佸拰鍒╂鼎锛屽彟涓€鏂归潰杩樿兘鎻愪緵鑷�韩浠峰€煎湪绌洪棿涓婄殑寤朵几銆�
閫濡備氳繃浠ヤ笂鐨勫浘渚嬭�鏄庯紝鎴戜滑寰堝�鏄撴兂鍒颁竴涓�瘝鈥斺€旂敓鎬併€傚洜涓烘瘡涓€涓�幆鑺傞兘鍦ㄧ浉浜掍績杩涳紝鐩镐簰褰卞搷銆傞偅涔堝�浜庡晢搴楄繖涓�疄浣撴湁浜嗗叿璞$殑璁ょ煡涔嬪悗锛屾垜浠�啀鏉ョ湅鐪嬫妧鏈��鍩熺殑鈥滅粍浠跺晢搴椻€濄€�
瀵逛簬鍙��鍖栨惌寤哄钩鍙拌€岃█锛屽叾涓�竴涓�牳蹇冪殑鐜�妭灏辨槸缁勪欢璧勪骇銆傜敤鎴峰湪璁捐�鎼�缓椤甸潰鏃朵細娑堣垂鍚勭�鍚勬牱鐨勭粍浠讹紝浣嗘槸瀵逛簬涓嶅悓鐨勭敤鎴疯€岃█锛岀粍浠剁殑闇€姹傚線寰€鏄�笉涓€鏍风殑锛屽ぇ閮ㄥ垎鐨� lowcode 鎴栬€� nocode 骞冲彴閮戒笉鑳藉緢濂界殑瑙e喅鐢ㄦ埛杩欎簺瀹氬埗鍖栫殑缁勪欢闇€姹傦紝鎵€浠ヤ负浜嗚В鍐宠繖涓€闂��锛岀粍浠跺晢搴楀氨瀛曡偛鑰岀敓銆�
鎴戜滑闇€瑕佸湪骞冲彴涓�彁渚涗竴绉嶆満鍒讹紝鏀�拺鐢熶骇鑰呯敓浜х粍浠讹紝瀹氫箟缁勪欢锛屽悓鏃剁�鐞嗚€呭彲浠ュ�鐢熶骇鑰呯敓浜х殑缁勪欢杩涜�鍒嗙被绠$悊(姣斿�涓婃灦/涓嬫灦/鍒犻櫎/鎺掑簭绛�)銆傚仛杩囩數鍟嗙郴缁熺殑鏈嬪弸鍙�兘浼氬彂鐜帮紝瀹冨拰鐢靛晢骞冲彴鐨勫晢鍝佸彂甯冧笂绾挎槸涓€涓�€昏緫娴佺▼锛�
閭d箞鎺ヤ笅鏉ユ垜灏卞甫澶у�涓€璧疯�璁′竴涓�繖鏍风殑娴佺▼锛屼緵澶у�鍙傝€冦€�
缁勪欢鍟嗗簵宸ヤ綔娴佽�璁�
鏍规嵁涓婇潰鐨勪粙缁嶅拰鍒嗘瀽锛屾垜浠��鎯冲疄鐜板畬鏁寸殑缁勪欢鍟嗗簵宸ヤ綔娴侊紝闇€瑕佹弧瓒充互涓嬪嚑鐐癸細
缁勪欢绾夸笂缂栬緫(涓婁紶)妯″潡 缁勪欢瀹℃牳妯″潡 缁勪欢鏇存柊/鍙戝竷妯″潡 缁勪欢绠$悊(涓婃灦/涓嬫灦/鍒犻櫎/涓嬭浇)
鏈変簡浠ヤ笂4鍧楃殑鏀�寔锛屽熀鏈�殑缁勪欢鍟嗗簵灏卞彲浠� work 浜嗐€傚叿浣綍璁撴祦绋嬪�涓嬶細
缁勪欢鍟嗗簵宸ヤ綔娴佸叿浣撴柟妗堝疄鐜�
鍦ㄦ湁浜嗗叿浣撶殑瑙勫垝鍜岃�璁′箣鍚庯紝鎴戜滑灏卞彲浠ヤ竴姝ユ�鏉ュ疄鐜颁簡銆�
1.瀹炵幇鍦ㄧ嚎浠g爜缂栬緫鍣�
鍦ㄧ嚎浠g爜缂栬緫鍣ㄧ洰鍓嶅競闈�笂鏈夊嚑绉嶆垚鐔熺殑鏂规�锛屾瘮濡傦細
react-monaco-editor react-codemirror2 ace | 鎬ц兘鍜屽姛鑳戒笂鍙�互濯茬編鏈�湴浠g爜缂栬緫鍣�
澶у�鍙�互閫夋嫨浠ヤ笂浠绘剰涓€绉嶆柟妗堬紝杩欓噷绗旇€呴噰鐢� react-codemirror2 鏉ュ疄鐜般€傚疄鐜板悗鐨勬晥鏋滃�涓嬶細
鐢变笂鍥惧彲浠ョ湅鍒版垜浠�彲浠ュ湪绾跨紪鍐橰eact锛孋ss锛孞s 浠g爜锛屽苟涓斿彲浠ラ厤缃�粍浠朵俊鎭�€傞�鍏堟垜浠�潵瀹夎浆涓€涓嬫彃浠讹細
yarn add react-codemirror2 codemirror2
codemirror 缁欐垜浠�彁渚涗簡寰堝�璇�█鏀�寔鍜屼笉鍚岄�鏍肩殑浠g爜涓婚�锛屾垜浠�彲浠ュ緢杞绘澗鐨勫埗浣滀笉鍚岃�瑷€鐨勭紪杈戦潰鏉裤€傛帴涓嬫潵鎴戝甫澶у�瀹炵幇涓€涓猂eact浠g爜缂栬緫鍣�細
import {UnControlled as CodeMirror} from 'react-codemirror2'; require('codemirror/mode/jsx/jsx'); const react_code = `import styles from&nb捐�sp;'./index.less'; import React, { memo, useState } from 'react'; import ReactDOM from 'react-dom'; const MenuCp = memo((props) => { const { visible, list, bgColor, top } = props; return ReactDOM.createPortal(
H5-Dooring, (document as any).querySelector('.react-grid-layout').parentNode, ) })` const ReactEditPanel = ()&nb鍙�sp;=> { const codeEditorChange = ( _editor: CodeMirror.Editor, _data: CodeMirror.EditorChange, value: string, type: string ) => { console.log(_data, value, type) } return codeEditorChange(editor, data, value, 'react')} /> }
浠ヤ笂灏卞疄鐜颁簡�鍖涓€涓�畝鍗曠殑React浠g爜缂栬緫鍣�紝鏄�笉鏄�緢绠€鍗曞憿? 鍚岀悊瀵逛簬 css 锛宩s 浠g爜缂栬緫鍣�紝涔熸槸鍚屾牱鐨勬柟寮忥紝鎴戜滑鍙�渶瑕佸畾涔� CodeMirror 灞炴€х殑mode 涓� css 锛宩avascript 鍗冲彲銆傛垜浠�繕鍙�互璁剧疆 theme 鏉ュ垏鎹㈠埌鎴戜滑鍠滄�鐨勪唬鐮佷富棰橈紝杩欓噷绗旇€呬娇鐢ㄧ殑material椋庢牸銆�
鍗曠函瀹炵幇鍦ㄧ嚎浠g爜缂栬緫鍣ㄨ繕涓嶅�锛屾垜浠�繕闇€瑕佸�浠g爜杩涜�澶勭悊锛屼繚瀛橈紝瀵圭粍浠惰繘琛屽畾涔夛紝鎺ヤ笅鏉ユ垜浠�氨鏉ョ湅鐪嬬粍浠舵槸濡備綍鎻愪氦鐨勩€�
2.缁勪欢鎻愪氦鏂规�璁捐�
褰撯€� 鐢熶骇鑰� 鈥濈紪鍐欏ソ缁勪欢浠g爜涔嬪悗锛岄渶瑕佸�缁勪欢鑷�韩杩涜�瀹氫箟銆傚洜涓哄彲瑙嗗寲骞冲彴缁勪欢鐗╂枡寰堜緷璧栧钩鍙扮殑缁勪欢寮€鍙戝崗璁�紝鎴戜滑闇€瑕佹寜鐓у钩鍙扮殑瑙勮寖鍘讳笂浼犺�鑼冪殑鑷�畾涔夌粍浠讹紝杩欐牱骞冲彴鎵嶈兘鏇村ソ鐨勭悊瑙e簲鐢ㄧ粍浠讹紝淇濇寔鐢ㄦ埛璁ょ煡鐨勪竴鑷存€с€�
缁勪欢鎻忚堪淇℃伅绗旇€呰繖閲岃�璁′簡濡備笅瀛楁�锛�
缁勪欢鍚嶇О (涓�枃) 缁勪欢鍚� (鑻辨枃锛屾柟渚垮瓨搴�) 缁勪欢鍒嗙被 (鍩虹�锛屽彲瑙嗗寲锛岃惀閿€锛屽獟浣撶瓑) 缁勪欢榛樿�澶у皬 (瀹介珮) 缁勪欢鍥炬爣 (鏂逛究鐢ㄦ埛璁ょ煡锛屾煡鎵�)
澶у�涔熷彲浠ユ牴鎹�嚜宸辩殑骞冲彴鐗规€ф潵瀹氫箟鍜岃�鑼冿紝杩欐牱鎴戜滑灏卞彲浠ユ彁浜や竴涓�畬鏁寸殑缁勪欢鏁版嵁浜嗐€�
鐩�墠鎴戠殑鍋氭硶鏄�皢鐢ㄦ埛鎻愪氦鐨勫畬鏁寸殑缁勪欢鏁版嵁瀛樺湪搴撲腑锛屼互渚垮�鏍歌浆鍖栦负鍙��鍖栧钩鍙板彲浠ユ秷璐圭殑缁勪欢锛屽綋鐒跺ぇ瀹朵篃鍙�互鐢ㄦ洿鏅鸿栨惌兘鐨勬柟寮忥紝鑷�姩瀵圭粍浠朵唬鐮佷俊鎭�繘琛屾彁鍙栬浆鍖栵紝鍏剁己鐐瑰氨鏄��宸�巼鏃犳硶鎺у埗锛屼互鍙婃棤娉曞�缁勪欢杩涜�鍑嗙‘鐨勬弿杩般€備互涓嬫槸鎴戞彁浜ょ殑鏁堟灉锛�
缁勪欢鎻愪氦閫昏緫涔熷緢绠€鍗�:
form.validateFields().then(values => { codeRef.current['form'] = { ...values, icon: values.icon[0].url }; req.post('/visible/cp/save', codeRef.current).then(res => { setIsModalVisible(false); }) }).catch(errorInfo => { console.log(errorInfo) setCurTab("4") })
鎴戜滑鍙�渶瑕佺敤 antd 鐨凢orm 灏嗙敤鎴峰~鍐欑殑鏁版嵁鏀堕泦璧锋潵鎻愪氦缁欏悗鍙版帴鍙e嵆鍙�€傜敱浜庢寤哄垜鐨勫悗鍙伴噰鐢� nodejs 瀹炵幇锛屼笂浼犳帴鍙f棤闈炲氨鏄�繚瀛樼粍浠舵暟鎹�紝瀹炵幇姣旇緝绠€鍗曪紝杩欓噷灏变笉涓€涓€浠嬬粛浜嗐€傚� nodejs 鎰熷叴瓒g殑鏈嬪弸鍙�互鍙傝€冩垜涔嬪墠鐨勫紑婧愰」鐩�粠闆舵惌寤哄叏鏍圕MS绯荤粺銆�
3.缁勪欢瀹℃壒鏂规�璁捐�
缁勪欢瀹℃壒涓昏�鐢辩綉绔欑�鐞嗕汉鍛樻潵鎿嶄綔锛屽綋鐢ㄦ埛缁勪欢鎻愪氦鎴愬姛涔嬪悗锛屽�鎴风�浼氶€氳繃娑堟伅淇′护閫氱煡绠$悊鍛橈紝绠$悊鍛樻敹鍒版秷鎭�悗浼氬�鏍哥粍浠躲€傞偅涔堟暣涓�繃绋嬩篃寰堢畝鍗曪紝鎴戜滑鍙�互浣跨敤 websocket 鏉ュ疄鐜版秷鎭�弻鍚戦€氫俊锛屽畬鏁存祦绋嬪�涓嬶細
鎴戜滑鍏堟潵瀹炵幇 socket 閫氫俊锛岃繖閲屾垜灏遍噰鐢ㄥ競闈㈡瘮杈冩垚鐔熺殑 socket.io锛屾潵绠€鍗曟墦閫氫竴涓��鎴风�, 鏈嶅姟绔�殑鍙屽悜閫氫俊娴佺▼銆�
棣栧厛鎴戜滑鍏堟寜鐓т竴涓嬩緷璧栵細
# 鏈嶅姟绔� yarn add socket.io # 瀹㈡埛绔� yarn add socket.io-client
瀵逛簬鏈嶅姟绔�紝鎴戜滑闇€瑕佽繘琛屽�涓嬫敼鍐欙細
import koa from 'koa'; import http from 'http'; const app = new koa(); const server = http.钩鍙createServer(app.callback()); const io = require('socket.io')(server); // 涓€浜涗笟鍔¢€昏緫... // socket閫氫俊 io.on('connection', (socket) => { console.log('a user connected'); socket.on('component upload success', (msg) => { // 閫氱煡瀹℃壒 io.emit('component review', msg) }) }); server.listen(config.serverPort, () => { console.l扮殑og(`鏈嶅姟鍣ㄥ湴鍧€:xxx.xxx.xxx`) });
瀵逛簬瀹㈡埛绔�紝閫昏緫濡備笅锛�
import io from 'socket.io-client' import { serverUrl } from '@/utils/tool' const socket = io(serverUrl); // ... 涓€浜涢€昏緫 useEffect(() => { socket.on('connect', function(){ console.log('connect') }); socket.on('htmlWorked', function(data){ const { result, message } = data if(result !== 缁勪'error') { // ... }else { // ... } }); socket.on('disconnect', function(e){ console.log('disconnect', e) }); }, [])
閫氳繃浠ヤ笂鐨勫疄鐜版柟寮忓�鎴风�鍜屾湇鍔$�灏卞彲浠ラ殢鏃惰繘琛岄€氫俊浜嗐€傛帴涓嬫潵鎴戜滑鐪嬬湅瀹℃壒鐨勬晥鏋滐細
鐢ㄦ埛鍦� H5-Dooring 骞冲彴鎻愪氦鐨勭粍浠堕兘浼氭祦鍏ョ�鐞嗗悗鍙帮紝绠$悊鍛樺彲浠ュ�缁勪欢杩涜�瀹℃煡浠ュ強涓嬭浇婧愮爜绛夋搷浣溿€傚�鎵瑰悓鏍蜂細鐢ㄥ埌 codemirror 杩欎釜搴擄紝涓昏�鏄�皢瀛樺埌鏁版嵁搴撶殑瀛楃�涓蹭唬鐮佽繘琛屽洖鏄俱€傚綋鐒惰繕鍙�互瀹炵幇绾夸笂棰勮�缁勪欢涓婄嚎鍚庣殑鏁堟灉锛欢鍟岃繖鍧楀ぇ瀹舵劅鍏磋叮鐨勫彲浠ヨ嚜宸卞皾璇曚竴涓嬪疄鐜版柟妗堬紝鍘熺悊涔熷緢绠€鍗曘€傛垜浠�潵鐪嬬湅瀹℃壒鐨勬紨绀猴細
4. 缁勪欢涓婃灦鏇存柊鏂规�
缁勪欢涓婃灦鐨勬柟妗堜篃鏈夊緢澶氾紝姣斿�鍙�互鎵嬪姩涓婃灦鏇存柊锛屼篃鍙�互鐢ㄧ▼搴忚嚜鍔ㄥ寲鐨勫畬鎴愩€傞偅涔堣繖閲屾垜浠嬬粛涓€涓嬫垜鐨勭嚎涓婅嚜鍔ㄥ寲涓婃灦鐨勬柟妗堬紝杩欓噷杩樻槸闇€瑕佸€熷姪涓婇潰浠嬬粛鐨� socket.io 鍜� nodejs銆傚師鐞嗗ぇ鑷村�涓嬶細
瀹屾暣鐨勬祦绋嬪氨鏄�钩鍙扮�鐞嗗憳瀵圭粍浠跺�鎵归€氳繃涔嬪悗锛屼細鑷�姩鐢� socket 鍚戞湇鍔$�鍙戦€佸�鎵归€氳繃淇″彿锛屾湇鍔″櫒浼氬�缁勪欢鏁版嵁杩涜�瑙f瀽锛屽啓鍏ュ�搴旂被鍒�笅鐨勭粍浠跺簱閲�(涔熷氨鏄�粍浠跺叆搴�)锛屽苟灏嗙粍浠朵俊鎭�厓鍐欏叆鍒扮紪杈戝櫒鍩哄骇锛屾�鏃朵负浜嗘洿鏂板熀搴ф嬁鍒版渶鏂扮殑鏁堟灉锛岄渶瑕� nodejs 瑙f瀽鏋勫缓鎸囦护绾夸笂鎵撳寘鍩哄骇锛屽熀搴ф洿鏂板畬涔嬪悗浼氱敤 socket 鍙戦€佹秷鎭�粰 H5-Dooring锛岄€氱煡鐢ㄦ埛缁勪欢搴撳凡鏇存柊锛屾彁绀虹敤鎴锋槸鍚﹀埛鏂扮粍浠跺垪琛�紝鑷虫�锛屼竴涓�畬鏁寸殑缁勪欢涓婃灦鏇存柊娴佺▼灏卞畬鎴愪簡銆傝繖閲屾垜浠�疄鐜颁竴涓嬪�浣曠嚎涓婃墦鍖呯紪杈戝櫒鍩哄骇銆�
棣栧厛鎴戜滑闇€瑕佸� nodejs 鐨勭埗瀛愯繘绋嬫湁涓€瀹氱殑浜嗚В锛屾瘮濡� child_process銆傛垜浼氫娇鐢╟hild_process 鐨� exec 瀹炵幇瑙f瀽骞舵墽琛屽懡浠よ�鎸囦护锛屽�鏋滃ぇ瀹跺� nodejs 鐨勭埗瀛愯繘绋嬩笉澶�啛鎮夛紝涔熷彲浠ュ弬鑰冩垜涔嬪墠鐨勬枃绔� 鍩轰簬NodeJS浠庨浂鏋嗗簵勫缓绾夸笂鑷�姩鍖栨墦鍖呭伐浣滄祦銆�
鍥犱负鏁翠釜杩囩▼闇€瑕佽嚜鍔ㄥ寲鐨勫幓澶勭悊锛屼笉鑳藉儚鎴戜滑涔嬪墠鎵撳寘椤圭洰涓€鏍凤紝鎵嬪姩鎵ц� npm run build 鎴栬€� yarn build 銆傛垜浠�渶瑕佺▼搴忚嚜鍔ㄥ府鎴戜滑鎵ц�杩欎釜鍛戒护琛屾寚浠わ紝鍏蜂綋鏂规�濡備笅锛�
import { exec } from 'child_process' const outWorkDir = resolve(__dirname, '../h5_base_frame') const fid = uuid(8, 16) const cmdStr = `cd ${outWorkDir} && yarn build ${fid}` router.post(api.generalConfig, auth, ctx => { // ... exec(cmdStr, func锛�tion(err, stdout, stderr){ if(err) { console.log('api error:'+stderr); io.emit('htmlWorked', { result: 'error', message: stderr }) } else { io.emit('component update success', { result: 'success', message: 'xxxx' }) } })&濡備nbsp; // ... } );
閫氳繃浠ヤ笂鐨勬柟寮忥紝鎴戜滑灏卞彲浠ョ嚎涓婃墦鍖呮洿鏂版垜浠�殑椤圭洰鍩哄骇锛屽苟妞嶅叆浠讳綍鍙傛暟锛屽�鏋滈渶瑕佸姩鎬佸啓鍏ユ枃浠讹紝鎴戜滑鍙�渶瑕佺敤 fs 妯″潡澶勭悊鍗冲彲锛岄€氳繃杩欐牱鐨勭嚎涓婂伐浣滄祦锛屾垜浠�繕鍙�互瀹炵幇鏇村�鏉傜殑閫昏緫锛岀敋鑷冲疄鐜颁竴涓�皬鍨嬬殑鍓嶇�CI宸ヤ綔娴併€傞偅涔堝ぇ瀹跺�鏋滄湁鏇翠紭闆呮洿濂界殑鏂规�锛屼篃鏄�彲浠ラ殢鏃跺湪璇勮�鍖轰氦娴併€�
鍙��鍖栨惌寤哄钩鍙扮粍浠跺晢搴楁€荤粨鍙婂悗鏈熻�鍒�
浠ヤ笂鎵€鏈夌殑璁捐�鏂规�瀹炵幇閮芥槸鍩轰簬瀹為檯闇€姹傛潵璁捐�鐨勶紝褰撶劧杩樻湁寰堝�缁嗚妭闇€瑕佸�鐞嗗拰浼樺寲锛岄殢鐫€闇€姹傚拰锛屼笟鍔$殑澶嶆潅锛屽悗鏈熻繕浼氬仛缁勪欢缁熻�锛岀粍浠舵暟鎹�垎鏋愶紝缁勪欢鐩戞帶绛夎兘鍔涳紝澶у�涔熷彲浠ュ弬鑰冧互涓婄殑璁捐�鏂规�锛岃�璁¤嚜宸辩殑缁勪欢鍟嗗簵銆�
濡傛灉澶у�瀵瑰彲瑙嗗寲鎼�缓鎴栬€呬綆浠g爜/闆朵唬鐮佹劅鍏磋叮锛� 涔熷彲浠ュ弬鑰冩垜寰€鏈熺殑鏂囩珷鎴栬€呭湪璇勮�鍖轰氦娴佷綘鐨勬兂娉曞拰蹇冨緱銆�




