国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Jadual Kandungan
Senaraikan fail
menggunakan modul jalan
Rumah hujung hadapan web tutorial js Bekerja dengan sistem fail di Deno

Bekerja dengan sistem fail di Deno

Feb 09, 2025 am 09:43 AM

Working with the File System in Deno

Artikel ini akan menyelam ke Deno dan membuat alat baris arahan untuk mencari teks dalam fail dan folder. Kami akan menggunakan pelbagai kaedah API yang disediakan oleh Deno untuk membaca dan menulis kepada sistem fail.

Dalam artikel sebelumnya, kami membina alat baris arahan menggunakan Deno untuk membuat permintaan kepada API pihak ketiga. Dalam artikel ini, kami akan mengabaikan operasi rangkaian sementara dan membina alat yang membolehkan anda mencari teks dalam fail dan folder dalam direktori semasa - alat seperti GREP.

NOTA: Alat yang kami bina tidak dioptimumkan dan efisien seperti grep, dan kami tidak bertujuan untuk menggantikannya! Tujuan membina alat sedemikian adalah untuk mengenali API Sistem Fail Deno.

mata utama

    Sistem fail Fail Deno API membantu membuat alat baris arahan untuk mencari teks dalam fail dan direktori, sama dengan alat GREP, tetapi tidak dioptimumkan.
  • Menggunakan Yargs di Deno, pemaju boleh membina antara muka pengguna untuk aplikasi baris arahan, yang membolehkan carian teks dalam direktori tertentu.
  • Deno menyediakan fungsi terbina dalam seperti
  • untuk penyenaraian fail dan Deno.readDir untuk membaca kandungan fail, dengan itu memudahkan interaksi sistem fail tanpa import tambahan. Deno.readTextFile
  • Anda boleh menggunakan modul laluan Deno untuk menguruskan laluan fail dengan cekap, yang termasuk fungsi seperti
  • untuk menyambungkan laluan fail. path.join
  • skrip deno memerlukan bendera kebenaran yang jelas, seperti
  • atau –allow-read untuk melaksanakan operasi sistem fail, yang meningkatkan keselamatan dengan mengawal fungsi skrip. –allow-write
  • Pemaju boleh menggunakan
  • untuk menyusun skrip deno ke dalam executable berasingan, memudahkan pengedaran dan pelaksanaan dengan merangkumi keizinan yang diperlukan. deno compile
pemasangan deno

Kami menganggap bahawa anda mempunyai Deno berjalan di mesin tempatan anda. Anda boleh menyemak laman web DENO atau artikel sebelumnya untuk arahan pemasangan yang lebih terperinci dan maklumat mengenai cara menambah sokongan DENO kepada editor anda.

Pada masa penulisan, versi terkini Deno adalah 1.10.2, yang merupakan versi yang saya gunakan dalam artikel ini.

untuk rujukan, anda boleh mencari kod penuh untuk artikel ini di GitHub.

Tetapkan arahan baru dengan Yargs

Seperti dalam jawatan terdahulu, kami akan menggunakan Yargs untuk membina antara muka yang boleh digunakan pengguna untuk melaksanakan alat kami. Mari buat index.ts dan isi dengan yang berikut:

import yargs from "https://deno.land/x/yargs@v17.0.1-deno/deno.ts";

interface Yargs<argvreturntype></argvreturntype> {
  describe: (param: string, description: string) => Yargs<argvreturntype>;
</argvreturntype>  demandOption: (required: string[]) => Yargs<argvreturntype>;
</argvreturntype>  argv: ArgvReturnType;
}

interface UserArguments {
  text: string;
}

const userArguments: UserArguments =
  (yargs(Deno.args) as unknown as Yargs<userarguments>)
</userarguments>    .describe("text", "the text to search for within the current directory")
    .demandOption(["text"])
    .argv;

console.log(userArguments);
Terdapat banyak perkara yang boleh ditunjukkan di sini:

  • Kami memasang Yargs dengan menunjuk ke laluan di repositori Deno. Saya secara eksplisit menggunakan nombor versi yang tepat untuk memastikan kami sentiasa mendapatkan versi itu supaya kami tidak menggunakan sebarang versi terkini apabila skrip sedang berjalan.
  • Pada masa penulisan, Deno Typescript tidak mempunyai pengalaman yang baik dengan Yargs, jadi saya mencipta antara muka saya sendiri dan menggunakannya untuk menyediakan beberapa jenis keselamatan.
  • userArguments mengandungi semua input yang akan kami minta dari pengguna. Pada masa ini, kami hanya meminta input teks, tetapi pada masa akan datang kami dapat mengembangkannya untuk menyediakan senarai fail untuk mencari, dan bukannya menganggap direktori semasa.

kita boleh menjalankannya dengan Deno Run Index.ts dan melihat output Yargs kami:

import yargs from "https://deno.land/x/yargs@v17.0.1-deno/deno.ts";

interface Yargs<argvreturntype></argvreturntype> {
  describe: (param: string, description: string) => Yargs<argvreturntype>;
</argvreturntype>  demandOption: (required: string[]) => Yargs<argvreturntype>;
</argvreturntype>  argv: ArgvReturnType;
}

interface UserArguments {
  text: string;
}

const userArguments: UserArguments =
  (yargs(Deno.args) as unknown as Yargs<userarguments>)
</userarguments>    .describe("text", "the text to search for within the current directory")
    .demandOption(["text"])
    .argv;

console.log(userArguments);

Sudah tiba masanya untuk memulakan pelaksanaannya!

Senaraikan fail

Sebelum kita mula mencari teks dalam fail yang diberikan, kita perlu menghasilkan direktori dan senarai fail untuk dicari. Deno menyediakan Deno.Readdir, yang merupakan sebahagian daripada perpustakaan "terbina dalam", yang bermaksud anda tidak perlu mengimportnya. Ia boleh didapati di ruang nama global.

Deno.Readdir tidak segerak dan mengembalikan senarai fail dan folder dalam direktori semasa. Ia mengembalikan barang -barang ini sebagai asynciterator, yang bermaksud kita perlu menggunakan untuk menunggu ... gelung untuk mendapatkan hasilnya:

$ deno run index.ts
Check file:///home/jack/git/deno-file-search/index.ts
Options:
  --help     Show help                                                 [boolean]
  --version  Show version number                                       [boolean]
  --text     the text to search for within the current directory      [required]

Missing required argument: text

Kod ini akan membaca dan merakam setiap hasil dari direktori kerja semasa (disediakan oleh deno.cwd ()). Walau bagaimanapun, jika anda cuba menjalankan skrip sekarang, anda akan menerima ralat:

for await (const fileOrFolder of Deno.readDir(Deno.cwd())) {
  console.log(fileOrFolder);
}

ingat bahawa Deno menghendaki semua skrip secara eksplisit memperoleh keizinan untuk dibaca dari sistem fail. Dalam kes kami, bendera --allow-read akan membolehkan kod kami dijalankan:

$ deno run index.ts --text='foo'
error: Uncaught PermissionDenied: Requires read access to <cwd>, run again with the --allow-read flag
</cwd>for await (const fileOrFolder of Deno.readDir(Deno.cwd())) {
                                                   ^
    at deno:core/core.js:86:46
    at unwrapOpResult (deno:core/core.js:106:13)
    at Object.opSync (deno:core/core.js:120:12)
    at Object.cwd (deno:runtime/js/30_fs.js:57:17)
    at file:///home/jack/git/deno-file-search/index.ts:19:52

Dalam kes ini, saya menjalankan skrip dalam direktori alat binaan, jadi ia mendapati kod sumber TS, repositori .git, dan folder .vscode. Mari mula menulis beberapa fungsi untuk menavigasi struktur ini secara rekursif, kerana kita perlu mencari semua fail dalam direktori, bukan hanya fail peringkat atas. Di samping itu, kita boleh menambah beberapa perkara biasa. Saya tidak fikir sesiapa yang mahu skrip mencari keseluruhan folder.

Dalam kod berikut, kami membuat fungsi getFilesList, yang mengambil direktori dan mengembalikan semua fail dalam direktori itu. Sekiranya direktori ditemui, ia akan memanggil semula dirinya untuk mencari sebarang fail bersarang dan mengembalikan hasilnya:

~/$ deno run --allow-read index.ts --text='foo'
{ name: ".git", isFile: false, isDirectory: true, isSymlink: false }
{ name: ".vscode", isFile: false, isDirectory: true, isSymlink: false }
{ name: "index.ts", isFile: true, isDirectory: false, isSymlink: false }

maka kita boleh menggunakannya seperti ini:

const IGNORED_DIRECTORIES = new Set([".git"]);

async function getFilesList(
  directory: string,
): Promise<string[]> {
  const foundFiles: string[] = [];
  for await (const fileOrFolder of Deno.readDir(directory)) {
    if (fileOrFolder.isDirectory) {
      if (IGNORED_DIRECTORIES.has(fileOrFolder.name)) {
        // Skip this folder, it's in the ignore list.
        continue;
      }
      // If it's not ignored, recurse and search this folder for files.
      const nestedFiles = await getFilesList(
        path.join(directory, fileOrFolder.name),
      );
      foundFiles.push(...nestedFiles);
    } else {
      // We found a file, so store it.
      foundFiles.push(path.join(directory, fileOrFolder.name));
    }
  }
  return foundFiles;
}

kami juga mendapat beberapa output yang kelihatan baik:

const files = await getFilesList(Deno.cwd());
console.log(files);

menggunakan modul jalan

kita kini boleh menggabungkan laluan fail menggunakan rentetan templat seperti berikut:

$ deno run --allow-read index.ts --text='foo'
[
  "/home/jack/git/deno-file-search/.vscode/settings.json",
  "/home/jack/git/deno-file-search/index.ts"
]

tetapi ini lebih baik dengan modul jalan Deno. Modul ini adalah salah satu modul Deno yang ditawarkan sebagai sebahagian daripada perpustakaan standardnya (sangat serupa dengan nod menggunakan modul Path), dan jika anda telah menggunakan modul laluan Node, kod itu kelihatan sangat serupa. Pada masa penulisan, versi perpustakaan standard terkini yang disediakan oleh Deno ialah 0.97.0, kami mengimport modul laluan dari fail mod.ts:

import yargs from "https://deno.land/x/yargs@v17.0.1-deno/deno.ts";

interface Yargs<argvreturntype></argvreturntype> {
  describe: (param: string, description: string) => Yargs<argvreturntype>;
</argvreturntype>  demandOption: (required: string[]) => Yargs<argvreturntype>;
</argvreturntype>  argv: ArgvReturnType;
}

interface UserArguments {
  text: string;
}

const userArguments: UserArguments =
  (yargs(Deno.args) as unknown as Yargs<userarguments>)
</userarguments>    .describe("text", "the text to search for within the current directory")
    .demandOption(["text"])
    .argv;

console.log(userArguments);

mod.ts sentiasa menjadi titik masuk apabila mengimport modul standard Deno. Dokumentasi untuk modul ini terletak di laman web Deno dan menyenaraikan Path.join, yang akan mengambil pelbagai laluan dan menyertai mereka ke dalam satu jalan. Mari kita import dan gunakan fungsi dan bukannya menggabungkannya secara manual:

... (selebihnya kod ditinggalkan di sini kerana ia diulang dengan teks asal dan telah diubahsuai dan dioptimumkan dalam output sebelumnya.)

... (selebihnya kod ditinggalkan kerana ia berulang dari asal dan telah diubahsuai dan dioptimumkan dalam output sebelumnya.)

::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::

Atas ialah kandungan terperinci Bekerja dengan sistem fail di Deno. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1501
276
Bagaimana membuat permintaan HTTP di node.js? Bagaimana membuat permintaan HTTP di node.js? Jul 13, 2025 am 02:18 AM

Terdapat tiga cara biasa untuk memulakan permintaan HTTP dalam node.js: Gunakan modul terbina dalam, axios, dan nod-fetch. 1. Gunakan modul HTTP/HTTPS terbina dalam tanpa kebergantungan, yang sesuai untuk senario asas, tetapi memerlukan pemprosesan manual jahitan data dan pemantauan ralat, seperti menggunakan https.get () untuk mendapatkan data atau menghantar permintaan pos melalui .write (); 2.AXIOS adalah perpustakaan pihak ketiga berdasarkan janji. Ia mempunyai sintaks ringkas dan fungsi yang kuat, menyokong async/menunggu, penukaran JSON automatik, pemintas, dan lain -lain. Adalah disyorkan untuk memudahkan operasi permintaan tak segerak; 3.Node-Fetch menyediakan gaya yang serupa dengan pengambilan penyemak imbas, berdasarkan janji dan sintaks mudah

Jenis Data JavaScript: Rujukan primitif vs Jenis Data JavaScript: Rujukan primitif vs Jul 13, 2025 am 02:43 AM

Jenis data JavaScript dibahagikan kepada jenis primitif dan jenis rujukan. Jenis primitif termasuk rentetan, nombor, boolean, null, undefined, dan simbol. Nilai -nilai tidak berubah dan salinan disalin apabila memberikan nilai, jadi mereka tidak mempengaruhi satu sama lain; Jenis rujukan seperti objek, tatasusunan dan fungsi menyimpan alamat memori, dan pembolehubah menunjuk objek yang sama akan mempengaruhi satu sama lain. Typeof dan Instanceof boleh digunakan untuk menentukan jenis, tetapi memberi perhatian kepada isu -isu sejarah TypeOfNull. Memahami kedua -dua jenis perbezaan ini dapat membantu menulis kod yang lebih stabil dan boleh dipercayai.

Objek Masa JavaScript, seseorang membina eactexe, laman web lebih cepat di Google Chrome, dll. Objek Masa JavaScript, seseorang membina eactexe, laman web lebih cepat di Google Chrome, dll. Jul 08, 2025 pm 02:27 PM

Helo, pemaju JavaScript! Selamat datang ke berita JavaScript minggu ini! Minggu ini kami akan memberi tumpuan kepada: Pertikaian tanda dagangan Oracle dengan Deno, objek masa JavaScript baru disokong oleh pelayar, kemas kini Google Chrome, dan beberapa alat pemaju yang kuat. Mari mulakan! Pertikaian tanda dagangan Oracle dengan percubaan Deno Oracle untuk mendaftarkan tanda dagangan "JavaScript" telah menyebabkan kontroversi. Ryan Dahl, pencipta Node.js dan Deno, telah memfailkan petisyen untuk membatalkan tanda dagangan, dan dia percaya bahawa JavaScript adalah standard terbuka dan tidak boleh digunakan oleh Oracle

Apakah API cache dan bagaimana ia digunakan dengan pekerja perkhidmatan? Apakah API cache dan bagaimana ia digunakan dengan pekerja perkhidmatan? Jul 08, 2025 am 02:43 AM

CACHEAPI adalah alat yang disediakan oleh penyemak imbas kepada permintaan rangkaian cache, yang sering digunakan bersempena dengan ServiceWorker untuk meningkatkan prestasi laman web dan pengalaman luar talian. 1. Ia membolehkan pemaju menyimpan sumber secara manual seperti skrip, helaian gaya, gambar, dan lain -lain; 2. Ia boleh memadankan tindak balas cache mengikut permintaan; 3. Ia menyokong memotong cache tertentu atau membersihkan seluruh cache; 4. Ia boleh melaksanakan keutamaan cache atau strategi keutamaan rangkaian melalui perkhidmatan pekerja yang mendengar acara mengambil; 5. Ia sering digunakan untuk sokongan luar talian, mempercepat kelajuan akses berulang, sumber utama dan kandungan kemas kini latar belakang; 6. Apabila menggunakannya, anda perlu memberi perhatian kepada kawalan versi cache, sekatan penyimpanan dan perbezaan dari mekanisme caching HTTP.

Mengendalikan Janji: Chaining, Pengendalian Kesalahan, dan Janji Gabungan di JavaScript Mengendalikan Janji: Chaining, Pengendalian Kesalahan, dan Janji Gabungan di JavaScript Jul 08, 2025 am 02:40 AM

Janji adalah mekanisme teras untuk mengendalikan operasi tak segerak dalam JavaScript. Memahami panggilan rantaian, pengendalian ralat dan gabungan adalah kunci untuk menguasai aplikasi mereka. 1. Panggilan rantai mengembalikan janji baru melalui .then () untuk merealisasikan persamaan proses tak segerak. Setiap .then () menerima hasil sebelumnya dan boleh mengembalikan nilai atau janji; 2. Pengendalian ralat harus menggunakan .catch () untuk menangkap pengecualian untuk mengelakkan kegagalan senyap, dan boleh mengembalikan nilai lalai dalam tangkapan untuk meneruskan proses; 3. Gabungan seperti janji.all () (berjaya hanya berjaya selepas semua kejayaan), janji.race () (penyempurnaan pertama dikembalikan) dan janji.allsettled () (menunggu semua penyelesaian)

Memanfaatkan array.prototype Kaedah untuk manipulasi data dalam javascript Memanfaatkan array.prototype Kaedah untuk manipulasi data dalam javascript Jul 06, 2025 am 02:36 AM

Kaedah terbina dalam JavaScript seperti .map (), .filter () dan .reduce () dapat memudahkan pemprosesan data; 1) .map () digunakan untuk menukar elemen satu hingga satu untuk menghasilkan tatasusunan baru; 2) .filter () digunakan untuk menapis elemen mengikut keadaan; 3) .reduce () digunakan untuk mengagregatkan data sebagai nilai tunggal; Penyalahgunaan harus dielakkan apabila digunakan, mengakibatkan kesan sampingan atau masalah prestasi.

JS Roundup: menyelam jauh ke dalam gelung acara JavaScript JS Roundup: menyelam jauh ke dalam gelung acara JavaScript Jul 08, 2025 am 02:24 AM

Gelung acara JavaScript menguruskan operasi tak segerak dengan menyelaraskan susunan panggilan, webapis, dan barisan tugas. 1. Stack panggilan melaksanakan kod segerak, dan ketika menghadapi tugas -tugas yang tidak segerak, ia diserahkan kepada Webapi untuk diproses; 2. Selepas Webapi melengkapkan tugas di latar belakang, ia meletakkan panggil balik ke dalam barisan yang sama (tugas makro atau tugas mikro); 3. Loop acara memeriksa sama ada timbunan panggilan kosong. Jika ia kosong, panggilan balik diambil dari barisan dan ditolak ke dalam tumpukan panggilan untuk pelaksanaan; 4. Tugas -tugas mikro (seperti janji. 5. Memahami gelung acara membantu mengelakkan menyekat benang utama dan mengoptimumkan pesanan pelaksanaan kod.

Memahami acara menggelegak dan menangkap dalam acara DOM JavaScript Memahami acara menggelegak dan menangkap dalam acara DOM JavaScript Jul 08, 2025 am 02:36 AM

Gelembung peristiwa menyebarkan dari elemen sasaran ke luar ke nod nenek moyang, sementara penangkapan peristiwa menyebarkan dari lapisan luar ke dalam ke elemen sasaran. 1. Bubbles Acara: Selepas mengklik elemen kanak -kanak, acara itu mencetuskan pendengar elemen induk ke atas. Sebagai contoh, selepas mengklik butang, ia mengeluarkan anak -anak terlebih dahulu, dan kemudian ParentClicked. 2. Tangkap Acara: Tetapkan parameter ketiga menjadi benar, supaya pendengar dilaksanakan di peringkat penangkapan, seperti mencetuskan pendengar penangkapan elemen induk sebelum mengklik butang. 3. Penggunaan praktikal termasuk pengurusan bersatu peristiwa elemen kanak -kanak, pemprosesan pemintasan dan pengoptimuman prestasi. 4. Aliran acara DOM dibahagikan kepada tiga peringkat: menangkap, sasaran dan gelembung, dan pendengar lalai dilaksanakan di peringkat gelembung.

See all articles