Birleştirme
- Node.js kursu
- Başlangıç
- Ders 87/116
- 6 dk
process.argv ile çalışan bir CLI uygulaması yazarsın.
Birleştirme: process.argv CLI
Son derste tüm parçaları birleştirip komut satırından çalışan bir uygulama yapacaksın. process.argv dizisi, komut satırından verilen argümanları taşır.
Node.js'te process.argv üç bölümden oluşur: argv[0] Node yoludur, argv[1] çalıştırılan dosyanın yoludur, argv[2] ve sonrası ise kullanıcının verdiği argümanlardır. Yani ilk komut process.argv[2]'de bulunur.
Örnek: node todo.js list çağrısında process.argv[2] 'list' değerini alır. node todo.js add Domates çağrısında ise argv[2] 'add', argv[3] 'Domates''tir. Bu argümanları okuyarak uygulamanın davranışını yönetirsin.
Komut işleme
Bir CLI uygulaması, kullanıcının verdiği komutu okur ve buna göre davranır. Temel desen şöyledir: const command = process.argv[2]; ile komutu al, sonra if (command === 'list') gibi koşullarla dallan.
Bu projede üç komut desteklenecek: list görevleri listeler, add yeni görev ekler, done bir görevi tamamlar. Komut yoksa varsayılan olarak listeleme yapılır.
Örnek: if (command === 'add') { addTask(tasks, process.argv[3]); }. Bu, node todo.js add Domates çağrısında 'Domates' başlıklı yeni bir görev ekler. Her komut kendi dalında işlenir.
Uygulama Tam CLI uygulaması
Başlangıç kodunda addTask, listTasks ve completeTask fonksiyonları verildi. Üç görev ekle ('Ekmek al', 'Süt al', 'Yumurta al'). process.argv[2]'den komutu oku. listTasks(tasks) ile görevleri her zaman yazdır.
Başlangıç kodu
function addTask(tasks, title) {
tasks.push({ title, done: false });
}
function listTasks(tasks) {
tasks.forEach((t, i) => console.log((t.done ? '[x] ' : '[ ] ') + t.title));
}
function completeTask(tasks, index) {
if (index < tasks.length) {
tasks[index].done = true;
}
}
// Üç görev ekle, process.argv'den komut oku ve listeleÖrnek çözüm
function addTask(tasks, title) {
tasks.push({ title, done: false });
}
function listTasks(tasks) {
tasks.forEach((t, i) => console.log((t.done ? '[x] ' : '[ ] ') + t.title));
}
function completeTask(tasks, index) {
if (index < tasks.length) {
tasks[index].done = true;
}
}
const tasks = [];
addTask(tasks, 'Ekmek al');
addTask(tasks, 'Süt al');
addTask(tasks, 'Yumurta al');
const command = process.argv[2];
listTasks(tasks);Beklenen çıktı
[ ] Ekmek al [ ] Süt al [ ] Yumurta al
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 process.argv[2] ne içerir?
- Dosya yolunu
- Node yolunu
- Kullanıcının ilk komutunu Doğru cevap
- Görev listesini
Açıklama: argv[0] Node, argv[1] dosya, argv[2] kullanıcının ilk komutudur.
2 CLI parçalarını eşle
| Kavram | Anlamı |
|---|---|
process.argv |
Argüman dizisi |
argv[0] |
Node yolu |
argv[1] |
Dosya yolu |
argv[2] |
Kullanıcının ilk komutu |
3 Komutu oku
const command = process.argv[____];
const command = process.argv[2];
Açıklama: argv[2] kullanıcının ilk komutunu taşır.