कोई फर्क नहीं पड़ता कि कमांड लाइन का आपका प्यार कितना महान है, आपको यह स्वीकार करना होगा कि सरल और सुविधाजनक कंसोल इंटरफ़ेस, इतिहास का समर्थन, ऑटो-अतिरिक्त, सरल कमांड बहुत प्रभावशाली हैं। "अंधेरे" के फायदे और नुकसान के बारे में चर्चा किए बिना, मैं नोड समुदाय की दुनिया से अपने छोटे शिल्प का परीक्षण करने के लिए हाबरा समुदाय को प्रस्तुत करना चाहता हूं, जिसका मुख्य कार्य एक डेवलपर के जीवन में सुधार करना है, जिसने कंसोल उपयोगिता लिखने का फैसला किया।
Cline Review
नोड नोड के
रीडलाइन मॉड्यूल पर आधारित एक छोटी सी लाइब्रेरी है, इसलिए हमारे पास इतिहास समर्थन, ऑटो जोड़, उपयोगकर्ता मतदान और, मेरे आसान हाथ के साथ, पासवर्ड मास्क के रूप में परिवर्धन, उपयोगकर्ता इनपुट को सुनने की क्षमता सरल के रूप में वर्णित अलग-अलग कमांड हैं। या नियमित अभिव्यक्ति, आउटपुट में मदद, इतिहास के साथ सरलीकृत कार्य, इंटरैक्टिव मोड।
इस सब के साथ, एक ऐसा एप्लिकेशन बनाना, जो शुरू करने के बाद, उपयोगकर्ता से उपयोगकर्ता इनपुट की प्रतीक्षा करेगा, बहुत सरल है।
उदाहरण
उन लोगों के लिए जिनके पास पुस्तकालय की क्षमताओं को समझने के लिए पर्याप्त कोड है, यहाँ एक उदाहरण है:
उदाहरणvar cli = require('cline')(); cli.command('start', 'starts program', function () { cli.password('Password:', function (str) { console.log(str); }) }); cli.command('stop', function () { cli.confirm('Sure?', function (ok) { if (ok) { console.log('done'); } }) }); cli.command('{string}', '', {string: '[A-Za-z]+'}); cli.command('{number}', '', {number: '\\d+'}); cli.on('command', function (input, cmd) { if ('start' !== cmd && 'stop' != cmd) { cli.prompt('More details on ' + cmd + ':'); } }); cli.history(['start', 'stop']); cli.interact('>'); cli.on('history', function (item) { console.log('New history item ' + item); }); cli.on('close', function () { console.log('History:' + cli.history()); process.exit(); });
के उपयोग
Cline अपने काम में
इंटरफ़ेस या इसके समान कुछ का उपयोग करता है, यदि आपके पास इंटरफ़ेस का अपना कार्यान्वयन है तो आप इसे एक पैरामीटर (परीक्षण समर्थन) के रूप में पारित कर सकते हैं:
var cli = require('cline')(myInterface);
Cline की केंद्रीय विशेषता कमांड्स का जोड़ है।
cli.command(expression, description, parameters, callback);
अभिव्यक्ति वह अभिव्यक्ति है जो हम उपयोगकर्ता से उम्मीद करते हैं, इसमें गतिशील पैरामीटर शामिल हो सकते हैं, उदाहरण के लिए, {id} को मारना, यहां आईडी गतिशील पैरामीटर का नाम है, मैं आपको इसके बारे में बाद में याद दिलाऊंगा।
विवरण - कमांड के लिए एक अतिरिक्त स्पष्टीकरण, मदद उत्पन्न करने के लिए उपयोग किया जाता है।
पैरामीटर्स - एक ऑब्जेक्ट जिसमें डायनेमिक पैरामीटर के नाम दिए गए हैं, जिनका अर्थ है कुंजियों के रूप में, और मूल्यों के रूप में नियमित अभिव्यक्ति। उदाहरण के लिए, {आईडी: '\\ डी +'} - आईडी का अर्थ होगा किसी भी संख्या।
कॉलबैक एक फ़ंक्शन है जिसे तब बुलाया जाएगा जब उपयोगकर्ता अभिव्यक्ति के अनुरूप स्ट्रिंग में प्रवेश करेगा। इसे दो तर्कों के साथ कहा जाता है: उपयोगकर्ता से एक स्ट्रिंग और गतिशील मापदंडों के मूल्यों के साथ एक वस्तु।
cli.command('kill {id}', 'kill task by id', {id: '\\d{1,3}'}, function (input, args) { console.log(input)
अभिव्यक्ति को छोड़कर सभी cli.command पैरामीटर वैकल्पिक हैं, और आप जैसे चाहें वैसे छोड़ सकते हैं।
cli.command(expression, description, callback); cli.command(expression, parameters, callback); cli.command(expression, description); cli.command(expression, parameters);
ये सभी विकल्प बिल्कुल मान्य हैं।
उपयोगकर्ता सहभागिता
एक उपयोगकर्ता से 3 चीजें हो सकती हैं:
1.Vvod
cli.prompt('Your turn:');
2.Podtverzhenie
cli.confirm('Sure?', function (ok) {});
3.Parol
cli.password('Password:', '*', function (pass) {});
या आप बस ऑनलाइन जा सकते हैं
cli.interact('>');
इस मोड में, पुस्तकालय उपयोगकर्ता से इनपुट की उम्मीद करता है और प्रत्येक कमांड को कमांड के रूप में व्याख्या करने की कोशिश करता है, वर्णित कमांड की सूची में मैचों की तलाश करता है, और कमांड पर श्रोता फ़ंक्शन को निष्पादित करने के बाद, यह फिर से इनपुट की उम्मीद करता है। इंटरैक्टिव मोड को याद करते हुए बस शीघ्र लाइन को बदलता है।
सिस्टम कमांड, इतिहास और ईवेंट
बिना किसी अतिरिक्त जोड़तोड़ के जब cline का उपयोग कर रहे हैं, तो 3 कमांड तुरंत उपलब्ध हैं:
स्क्रीन
साफ़ करें या साफ़ करें
मदद या
\? - मदद प्रदर्शित करता है
बाहर निकलें या
\ q - बाहर निकलें
कहानी के साथ सब कुछ सरल है, कोई फ़ाइल या स्ट्रीम नहीं, बस कहानी को इस तरह भरें:
cli.history(['start', 'stop']);
तत्वों का क्रम सीमा से मेल खाता है, सूची में पहला तत्व सबसे पुराना होगा।
खैर, आप इस तरह से कहानी पढ़ सकते हैं:
cli.history();
सूची प्राप्त करें। आप उस घटना के लिए भी सदस्यता ले सकते हैं जो कहानी में एक आइटम जोड़ा जाता है। ठीक है, तो आप तय करते हैं कि इस सूची को कैसे बचाया जाए।
चूँकि एक EventEmitter को cline विरासत में मिला है, इसलिए इवेंट मॉडल का यहाँ व्यापक रूप से उपयोग किया जाता है, आप इस तरह के आयोजनों की सदस्यता ले सकते हैं:
बंद - उपयोगकर्ता ने निकास कमांड को बुलाया या Ctrl + C का उपयोग करके प्रक्रिया को रोक दिया
इतिहास - जब
इतिहास में एक नया तत्व जोड़ते हैं, तो नया तत्व श्रोता को एक पैरामीटर के रूप में दिया जाता है।
कमांड - उपयोगकर्ता इनपुट कमांड (सिस्टम वाले को छोड़कर) में से एक से मेल खाता है, उपयोगकर्ता से लाइन और कमांड अभिव्यक्ति को श्रोता के लिए एक पैरामीटर के रूप में पारित किया जाता है।
अंत में
यदि आप उपयोगकर्ता द्वारा बताए गए आदेशों के अलावा कुछ और दर्ज करते समय चुपचाप चुप रहना नहीं चाहते हैं, तो यह करें:
cli.command('*', function (input) { console.log(input + ' is not correct'); cli.usage(); });
आपका ध्यान देने के लिए बहुत-बहुत धन्यवाद, मुझे उम्मीद है कि आपको यह उपयोगी मिल जाएगा, या शायद आपको अपनी कंसोल उपयोगिता लिखने के लिए प्रेरित कर सकता है, या कम से कम गीथब में कांटा।
PS विशेष आमंत्रित करने के लिए UFO का धन्यवाद।