Μάθετε πώς να δημιουργείτε ένα πρόγραμμα με μια τυπική διεπαφή γραμμής εντολών χρησιμοποιώντας αυτήν τη χρήσιμη βιβλιοθήκη.
Οι εφαρμογές CLI (Command Line Interface) είναι απλοϊκές εφαρμογές που βασίζονται σε κείμενο που εκτελούνται στο τερματικό για την ολοκλήρωση συγκεκριμένων εργασιών. Οι εφαρμογές CLI διαδραματίζουν κρίσιμο ρόλο στη ροή εργασίας σχεδόν κάθε προγραμματιστή και επαγγελματία πληροφορικής.
Είναι κυρίως βοηθητικά εργαλεία που αλληλεπιδρούν με το λειτουργικό σύστημα ή εφαρμογές που είναι είτε εγκατεστημένο τοπικά ή διαθέσιμο μέσω Διαδικτύου για την εκτέλεση μιας εργασίας σύμφωνα με τα στοιχεία του χρήστη και οδηγίες.
Κατανόηση των εφαρμογών CLI
Μια διεπαφή γραμμής εντολών σάς επιτρέπει να αλληλεπιδράτε με ένα πρόγραμμα πληκτρολογώντας γραμμές κειμένου. Πολλά προγράμματα CLI εκτελούνται διαφορετικά ανάλογα με την εντολή που χρησιμοποιείτε για την εκκίνηση τους.
Για παράδειγμα, το πρόγραμμα ls εμφανίζει πληροφορίες αρχείου και τα περιεχόμενα των καταλόγων. Μπορείτε να το εκτελέσετε ως εξής:
ls -l /home
Αυτή η εντολή περιλαμβάνει:
- Το όνομα του προγράμματος: ls.
- Μια επιλογή (ή σημαία). Σε αυτήν την περίπτωση, -μεγάλο είναι μια επιλογή που είναι συντομογραφία για "μακριά" και παράγει πιο λεπτομερείς πληροφορίες.
- Ενα επιχείρημα, /home. Εδώ, το όρισμα καθορίζει μια διαδρομή προς τον κατάλογο για την εμφάνιση πληροφοριών.
Ενώ κάθε πρόγραμμα μπορεί να ορίζει τη δική του διεπαφή γραμμής εντολών, ορισμένα στοιχεία είναι κοινά και σε ευρεία χρήση. Θα πρέπει να ακολουθείτε αυτά τα πρότυπα, ώστε κάποιος που είναι εξοικειωμένος με μια διεπαφή γραμμής εντολών να μπορεί να χρησιμοποιεί τα προγράμματά σας εύκολα.
Τι είναι το Commander.js;
Το Commander.js είναι ένα πακέτο που σας επιτρέπει να δημιουργείτε εφαρμογές CLI στο Node.js. Διαθέτει μια πλούσια βιβλιοθήκη λειτουργιών που σας επιτρέπουν να δημιουργήσετε μια τυπική εφαρμογή CLI, επιτελώντας μεγάλο μέρος της βαριάς εργασίας. Πρέπει μόνο να ορίσετε εντολές, επιλογές και λειτουργικότητα για την εφαρμογή CLI.
Συνδυάζοντάς το με άλλα πακέτα όπως το Chalk.js για στυλ, μπορείτε να δημιουργήσετε γρήγορα μια πλήρως λειτουργική εφαρμογή CLI στο Node.js.
Δημιουργία εφαρμογής CLI στο Node.js χρησιμοποιώντας το Commander.js
Εξετάστε ένα παράδειγμα εφαρμογής CLI, urbanary-cli, που αναζητά τη σημασία των λέξεων και των συντομογραφιών των μέσων κοινωνικής δικτύωσης το Urban Dictionary. Θα μάθετε πώς να δημιουργείτε το CLI και να το δημοσιεύετε στο npm μητρώο πακέτων, ώστε να μπορούν να το εγκαταστήσουν άλλοι.
Δημιουργήστε έναν νέο φάκελο και αρχικοποιήστε ένα νέο έργο Node.js με τις ακόλουθες εντολές:
mkdir urbanary-cli
cd urbanary-cli
npm init -y
Αυτό το CLI θα χρησιμοποιήσει Axios για αποστολή αιτημάτων HTTP στο Urban Dictionary API. Μπορείς να χρησιμοποιήσεις Rapid API για έλεγχο τελικών σημείων και προβολή διαπιστευτηρίων.
Ένα απλό CLI με υποεντολή και βοήθεια
Για να ξεκινήσετε τη δημιουργία του CLI σας, εγκαταστήστε το Commander και το Axios με την ακόλουθη εντολή:
npm install commander axios
Δημιουργία νέου φακέλου, αποθήκη, στον κατάλογο του έργου σας και ένα νέο κενό αρχείο, index.js:
mkdir bin
cd bin
touch index.js
ο αποθήκη (συντομογραφία για το "δυαδικό") ο φάκελος είναι σημαντικός επειδή περιέχει το αρχείο σημείου εισόδου που καλεί το Node όταν εκτελείτε το CLI σας. ο index.js αρχείο είναι αυτό το αρχείο σημείου εισόδου. Τώρα, επεξεργαστείτε το αρχείο index.js και ξεκινήστε τη δημιουργία του CLI σας με το Commander.js API.
Πρώτα, εισάγετε το πρόγραμμα αντικείμενο από τον Διοικητή:
const { program } = require('commander');
Θα χρησιμοποιήσετε το πρόγραμμα να ορίσετε τη διεπαφή του προγράμματός σας, συμπεριλαμβανομένων υποεντολών, επιλογών και ορισμάτων. Το αντικείμενο έχει αντίστοιχες μεθόδους για καθεμία από αυτές. για παράδειγμα, για να ορίσετε μια υποεντολή, χρησιμοποιήστε το εντολή μέθοδος.
Ορίστε α εύρημα υποεντολή για το CLI για να αναζητήσει λέξεις από το Urban Dictionary και να προσθέσει μια περιγραφή για αυτό χρησιμοποιώντας τον παρακάτω κώδικα:
// index.js
program
.command('find ' )
.description('find meaning of a word or abbreviation or slang')
Αυτό καταχωρεί α εύρημα εντολή, η οποία περιμένει μια λέξη μετά από αυτήν και μια περιγραφή για αυτήν. Η χρήση αγκύλων σημαίνει ότι η λέξη είναι ένα απαιτούμενο όρισμα. αντ' αυτού χρησιμοποιήστε αγκύλες ([]) για να γίνει προαιρετικό.
Θα πρέπει να προσθέσετε μια περιγραφή επειδή το Commander.js τη χρησιμοποιεί για να δημιουργήσει κείμενο βοήθειας. Όταν εκτελείτε την εφαρμογή με το βοήθεια εντολή, θα λάβετε έναν τυπικό οδηγό χρήσης.
Για να το δοκιμάσετε, προσθέστε τα ακόλουθα:
program.parse()
Στη συνέχεια, εκτελέστε το πρόγραμμα και περάστε το βοήθεια εντολή για να λάβετε την παρακάτω έξοδο:
Αυτός είναι ο τρόπος με τον οποίο οποιαδήποτε τυπική εφαρμογή CLI θα εμφανίζει τη βοήθειά της στους χρήστες και, με το Commander, δεν χρειάζεται να ανησυχείτε για τη δημιουργία της μόνοι σας. ο -η και --βοήθεια Οι επιλογές είναι χρήσιμες για τον έλεγχο του οδηγού χρήσης για μια εντολή.
Καθορισμός Επιλογών και Προετοιμασία του Τελικού Προγράμματος
Μπορείτε επίσης να ορίσετε μια επιλογή συνδέοντας το επιλογή μέθοδος στον ορισμό της εντολής.
Δείτε πώς μπορείτε να ορίσετε μια επιλογή για να συμπεριλάβετε παραδείγματα στους ορισμούς των λέξεων:
program.option('-e, --example', "Display examples")
Και εδώ είναι πώς μπορείτε να ορίσετε μια επιλογή που καθορίζει τον αριθμό των ορισμών προς επιστροφή:
program.option(
'-c, --count [amount]',
'amount of definitions to display (max is 10)'
)
ο επιλογή Η μέθοδος δέχεται δύο παραμέτρους συμβολοσειράς, μία για το όνομα της επιλογής (τόσο σύντομες όσο και μεγάλες μορφές) και την άλλη για την περιγραφή της. Το επιπλέον [ποσό] επιχείρημα στο μετρώ επιλογή είναι η τιμή για τον αριθμό των ορισμών που θα εμφανιστούν.
Τώρα, η τελευταία μέθοδος για προσθήκη είναι η δράση μέθοδος. Θα εφαρμόσετε το εύρημα λειτουργικότητα της εντολής σε αυτήν τη μέθοδο. Προσθέστε το στην αλυσίδα έτσι ώστε ο κώδικάς σας να μοιάζει τώρα με αυτό:
program
.command('find ' )
.description('find meaning of a word or abbreviation or slang')
.option('-e, --example', "Display examples")
.option(
'-c, --count [amount]',
'amount of definitions to display (max is 10)'
)
.action(async (word, options) => {});
Με αυτήν τη ρύθμιση, ορίστε ποια εντολή για να λάβετε τρεις ορισμούς χαχαχα με παραδείγματα θα μοιάζει με:
urbanary-cli find lol -e -c 3
Ή, χρησιμοποιώντας τη μεγάλη φόρμα κάθε επιλογής:
urbanary-cli find lol --example --count 3
Ολοκλήρωση αγοράς Σελίδα npm του διοικητή για να μάθετε περισσότερα για αυτό και πώς να προσαρμόσετε τις λειτουργίες του στις διαφορετικές περιπτώσεις χρήσης σας.
Υλοποίηση της Λειτουργικότητας του Προγράμματος
Πρώτα, εισαγάγετε το Axios στο δικό σας index.js αρχείο ως εξής:
const axios = require('axios');
Στη συνέχεια, στο σώμα συνάρτησης του δράσημε την παράμετρο, μπορείτε να εφαρμόσετε τη λογική για να κάνετε αιτήματα στο Urban Dictionary και να εμφανίσετε αποτελέσματα σύμφωνα με τις επιλογές σας.
Ξεκινήστε ορίζοντας το αίτημά σας:
let requestOptions = {
method: 'GET',
URL: "https://mashape-community-urban-dictionary.p.rapidapi.com/define",
params: { term: word },
headers: {
'X-RapidAPI-Key': YOUR_RAPID_API_KEY,
'X-RapidAPI-Host': 'mashape-community-urban-dictionary.p.rapidapi.com'
}
}
Στη συνέχεια, κάντε το αίτημα στο API χρησιμοποιώντας το Axios με τον ακόλουθο κώδικα:
try {
let resp = await axios.request(requestOptions);
console.log(`Definitions for ${word} fetched`);
wordData = resp.data.list;
} catch (err) {
console.error(err.message)
}
Η μόνη ιδιότητα που χρειάζεστε από τα δεδομένα απόκρισης είναι η λίστα ιδιότητα που περιέχει ορισμούς και παραδείγματα.
Ακόμα στο δοκιμάστε μπλοκ, προσθέστε αυτή τη λογική για να χειριστείτε τις επιλογές και εμφανίστε τα αποτελέσματα ως εξής:
if (options.example && options.count) {
let cnt = 1;
let definitions = wordData.slice(0, options.count);definitions.forEach((elem) => {
console.log(`Definition ${cnt++}: ${elem.definition}`);
console.log(`Example:\n${elem.example}\n`);
});
} elseif (options.count && !options.example) {
let cnt = 1;
let definitions = wordData.slice(0, options.count);
definitions.forEach((elem) => {
console.log(`Definition ${cnt++}: ${elem.definition}`);
});
} elseif (options.example) {
console.log(`Definition: ${wordData[0].definition}`);
console.log(`Example:\n${wordData[0].example}`);
} else {
console.log(`Definition: ${wordData[0].definition}`);
}
Αυτός ο κώδικας αξιολογεί τα ορίσματα εντολών χρησιμοποιώντας προτάσεις if-else για να καθορίσει τον τρόπο εμφάνισης της εξόδου. Αν το παράδειγμα και μετρώ οι επιλογές περνούν, επαναλαμβάνεται wordData και εκτυπώνει τον καθορισμένο αριθμό ορισμών και παραδειγμάτων με αυτούς.
Αν περάσετε μόνο μετρώ, εμφανίζει αυτόν τον αριθμό ορισμών χωρίς παραδείγματα. Αν περάσετε μόνο παράδειγμα, εμφανίζει έναν ορισμό με μια παραδειγματική πρόταση. ο αλλού Η δήλωση είναι η προεπιλεγμένη συμπεριφορά για να εκτυπώσετε μόνο τον ορισμό εάν δεν περάσετε καμία επιλογή.
Η εφαρμογή είναι τώρα έτοιμη, οπότε το επόμενο βήμα είναι να την κάνετε εκτελέσιμη. Ξεκινήστε προσθέτοντας μια γραμμή shebang στην αρχή του αρχείου bin/index.js, ώστε να μπορείτε να το εκτελέσετε ως αυτόνομο σενάριο:
#!/usr/bin/env node
Στη συνέχεια, ανοίξτε το πακέτο.json αρχείο, επεξεργαστείτε την τιμή του κύριος ιδιοκτησία και προσθέστε α αποθήκη ιδιοκτησία μετά από αυτό ως εξής:
"main": "./bin/index.js",
"bin": {
"urbanary-cli": "./bin/index.js"
},
Το κλειδί αστικο-κλι, κάτω από αποθήκη είναι η εντολή που θα εισαγάγετε στο τερματικό σας για να εκτελέσετε την εφαρμογή σας. Επομένως, φροντίστε να χρησιμοποιήσετε ένα όνομα που ταιριάζει εκεί κατά τη δημιουργία των εφαρμογών της γραμμής εντολών σας.
Τρέξιμο npm εγκατάσταση -g για να εγκαταστήσετε την εφαρμογή καθολικά και θα μπορείτε να εκτελέσετε την εφαρμογή ως εντολή από το τερματικό σας.
Η παρακάτω εικόνα δείχνει τη διαδικασία εγκατάστασης και μια δοκιμαστική εντολή για να βρείτε το νόημα lmk:
Μπορείτε επίσης να το δημοσιεύσετε στο μητρώο πακέτων npm εκτελώντας npm δημοσίευση στο τερματικό στον κατάλογο του έργου. Αυτό το κάνει να εγκατασταθεί από οποιονδήποτε από οπουδήποτε το χρησιμοποιεί npm εγκατάσταση.
Είναι πιο εύκολο να δημιουργήσετε και να δημοσιεύσετε την εφαρμογή σας με το Node.js, σε σύγκριση με όταν εσείς δημιουργήστε CLI με τεχνολογίες όπως το Rust.
Δημιουργήστε λειτουργικές εφαρμογές CLI με το Node.js
Είτε εργάζεστε σε ένα πακέτο npm και χρειάζεστε ένα βοηθητικό πρόγραμμα CLI για να το συνοδεύει, είτε θέλετε απλώς να δημιουργήσετε ένα εργαλείο για να βελτιώσετε τη ροή εργασίας σας ως προγραμματιστής. Έχετε όλα όσα χρειάζεστε για να πραγματοποιήσετε την ιδέα σας με το πακέτο Node.js Commander.
Μπορείτε επίσης να προχωρήσετε περισσότερο χρησιμοποιώντας άλλες βιβλιοθήκες για να δημιουργήσετε βελτιωμένες εμπειρίες CLI για τις εφαρμογές σας, το Node.js είναι αρκετά ισχυρό ώστε να εξυπηρετεί τους σκοπούς σας χωρίς μεγάλη ταλαιπωρία.