AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

純前端也可以訪問文件系統!

來源: 責編: 時間:2023-10-26 17:12:22 324觀看
導讀前言周末逛github的時候,發現我們只需要在github域名上加上1s他就能夠打開一個vscode窗口來閱讀代碼,比起在github倉庫中查看更加方便圖片然后我就想網頁端vscode能不能打開我本地的項目呢,帶著這個疑惑我打開了網頁版vs

前言

周末逛github的時候,發現我們只需要在github域名上加上1s他就能夠打開一個vscode窗口來閱讀代碼,比起在github倉庫中查看更加方便UZm28資訊網——每日最新資訊28at.com

圖片圖片UZm28資訊網——每日最新資訊28at.com

然后我就想網頁端vscode能不能打開我本地的項目呢,帶著這個疑惑我打開了網頁版vscode,它居然真的可以打開我本地的項目代碼!UZm28資訊網——每日最新資訊28at.com

圖片圖片UZm28資訊網——每日最新資訊28at.com

難道又出了新的API讓前端的能力更進一步了?打開MDN查了一下相關文檔,發現了幾個新的APIUZm28資訊網——每日最新資訊28at.com

showOpenFilePicker

用來選擇文件UZm28資訊網——每日最新資訊28at.com

圖片圖片UZm28資訊網——每日最新資訊28at.com

語法

showOpenFilePicker()

參數

  • 「options」:(可選)包含以下屬性

multiple:布爾值,默認為false。為true表示允許用戶選擇多個文件UZm28資訊網——每日最新資訊28at.com

excludeAcceptAllOption:布爾值,默認為false。默認情況下,文件選擇器帶有一個允許用戶選擇所有類型文件的過濾選項(展開于文件類型選項中)。設置此選項為 true 以使該過濾選項不可用。UZm28資訊網——每日最新資訊28at.com

types:表示允許選擇的文件類型的數組UZm28資訊網——每日最新資訊28at.com

返回值

返回一個promise對象,會兌現一個包含 FileSystemFileHandle 對象的 Array 數組。UZm28資訊網——每日最新資訊28at.com

體驗

<template>  <div class="open_file" @click="openFile">打開文件</div></template><script setup lang="ts">const openFile = async () => {  const res = await window.showOpenFilePicker();  console.log(res);};</script>

默認只能打開一個文件,可以傳入multiple:true打開多個文件UZm28資訊網——每日最新資訊28at.com

圖片圖片UZm28資訊網——每日最新資訊28at.com

showDirectoryPicker

用來選擇目錄UZm28資訊網——每日最新資訊28at.com

圖片圖片UZm28資訊網——每日最新資訊28at.com

語法

屬于瀏覽器全局方法,直接調用即可UZm28資訊網——每日最新資訊28at.com

showDirectoryPicker()

參數

  • 「options」:(可選)包含以下屬性

multiple:布爾值,默認為false。為true表示允許用戶選擇多個文件UZm28資訊網——每日最新資訊28at.com

excludeAcceptAllOption:布爾值,默認為false。默認情況下,文件選擇器帶有一個允許用戶選擇所有類型文件的過濾選項(展開于文件類型選項中)。設置此選項為 true 以使該過濾選項不可用。UZm28資訊網——每日最新資訊28at.com

types:表示允許選擇的文件類型的數組UZm28資訊網——每日最新資訊28at.com

返回值

返回一個promise對象,會兌現一個包含 FileSystemFileHandle 對象的 Array 數組。UZm28資訊網——每日最新資訊28at.com

體驗

<template>  <div class="open_file" @click="openFile">打開文件</div>  <div class="open_file" @click="openDir">打開文件夾</div></template><script setup lang="ts">const openFile = async () => {  const res = await window.showOpenFilePicker({    // multiple: true,  });  console.log(res.length);};const openDir = async () => {  const res = await window.showDirectoryPicker();  console.log(res);};</script>

圖片圖片UZm28資訊網——每日最新資訊28at.com

擴展

FileSystemFileHandle

FileSystemFileHandle提供了一些方法可以用來獲取和操作文件UZm28資訊網——每日最新資訊28at.com

  • getFile:返回一個Promise對象,用于獲取文件;
  • createSyncAccessHandle:返回一個FileSystemSyncAccessHandle對象,用于同步訪問文件;
  • createWritable:返回一個Promise對象,用于創建一個可寫流,用于寫入文件;

FileSystemDirectoryHandle

FileSystemDirectoryHandle對象是一個代表文件系統中的目錄的對象,它同樣提供了方法來獲取和操作目錄UZm28資訊網——每日最新資訊28at.com

  • entries:返回一個AsyncIterable對象,用于獲取目錄中的所有文件和目錄;
  • keys:返回一個AsyncIterable對象,用于獲取目錄中的所有文件和目錄的名稱;
  • values:返回一個AsyncIterable對象,用于獲取目錄中的所有文件和目錄的FileSystemHandle對象;
  • getFileHandle:返回一個Promise對象,用于獲取目錄中的文件;
  • getDirectoryHandle:返回一個Promise對象,用于獲取目錄中的目錄;
  • removeEntry:返回一個Promise對象,用于刪除目錄中的文件或目錄;
  • resolve:返回一個Promise對象,用于獲取目錄中的文件或目錄;

entries、keys、values這三個方法都是用來獲取目錄中的所有文件和目錄的,它們返回的都是一個AsyncIterable對象,我們可以通過for await...of語法來遍歷它。UZm28資訊網——每日最新資訊28at.com

開發編輯器

了解完這些知識點,我們就可以來開發一個簡陋網頁版編輯器了,初期只包含打開文件、打開文件夾、查看文件、切換文件UZm28資訊網——每日最新資訊28at.com

編輯器大概長這樣:UZm28資訊網——每日最新資訊28at.com

圖片圖片UZm28資訊網——每日最新資訊28at.com

打開文件夾

const openDir = async () => {  const res = await window.showDirectoryPicker({});  const detalAction = async (obj: any) => {    if (obj.entries) {      const dirs = obj.entries();      for await (const entry of dirs) {        if (entry[1].entries) {          // 文件夾,遞歸處理          detalAction(entry[1]);        } else {          // 文件          fileList.value.push({            name: entry[0],            path: obj.name,            fileHandle: entry[1],          });        }      }    }  };  await detalAction(res);  showCode(fileList.value[0], 0);  console.log("--fileList--", fileList);};

這里主要是遞歸處理文件夾,返回一個文件列表UZm28資訊網——每日最新資訊28at.com

讀取文件內容

const showCode = async (item: any, index: number) => {  const file = await item.fileHandle.getFile();  const text = await file.text();  codeText.value = text;  currentIndex.value = index;};

展示文件內容

使用highlight.js來高亮展示代碼UZm28資訊網——每日最新資訊28at.com

<div class="show_code">  <pre v-highlight>        <code class="lang-dart">            {{ codeText }}        </code>   </pre></div>

最終效果如下:UZm28資訊網——每日最新資訊28at.com

圖片圖片UZm28資訊網——每日最新資訊28at.com

想不到吧,這種功能現在純前端就能夠實現了,當然還可以做的更復雜一點,包括修改保存等功能,保存可以使用showSaveFilePickerAPI,它可以寫入文件,同樣是返回一個promise。感興趣的可以試著完善編輯器的功能。UZm28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-15231-0.html純前端也可以訪問文件系統!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Golang 中的 String、rune 和 byte,你了解了嗎?

下一篇: 技術團隊運用度量驅動開發提升質量:策略與實踐

標簽:
  • 熱門焦點
  • Find N3入網:最高支持16+1TB

    OPPO將于近期登場的Find N3折疊屏目前已經正式入網,型號為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號的橫向折疊屏,而是跟別的廠商一樣采用了較為常見的
  • 直屏旗艦來了 iQOO 12和K70 Pro同臺競技

    旗艦機基本上使用的都是雙曲面屏幕,這就讓很多喜歡直屏的愛好者在苦等一款直屏旗艦,這次,你們等到了。據博主數碼閑聊站帶來的最新爆料稱,Redmi下代旗艦K70 Pro和iQOO 12兩款手
  • 影音體驗是真的強 簡單聊聊iQOO Pad

    大公司的好處就是產品線豐富,非常細分化的東西也能給你做出來,例如早先我們看到了新的vivo Pad2,之后我們又在iQOO Neo8 Pro的發布會上看到了iQOO的首款平板產品iQOO Pad。雖
  • iPhone賣不動了!蘋果股價創年內最大日跌幅:市值一夜蒸發萬億元

    8月5日消息,今天凌晨美股三大指數高開低走集體收跌,道指跌0.41%;納指跌0.36%;標普500指數跌0.52%。熱門科技股也都變化極大,其中蘋果報181.99美元,跌4.8%,創
  • 谷歌KDD'23工作:如何提升推薦系統Ranking模型訓練穩定性

    谷歌在KDD 2023發表了一篇工作,探索了推薦系統ranking模型的訓練穩定性問題,分析了造成訓練穩定性存在問題的潛在原因,以及現有的一些提升模型穩定性方法的不足,并提出了一種新
  • 多線程開發帶來的問題與解決方法

    使用多線程主要會帶來以下幾個問題:(一)線程安全問題  線程安全問題指的是在某一線程從開始訪問到結束訪問某一數據期間,該數據被其他的線程所修改,那么對于當前線程而言,該線程
  • 一文掌握 Golang 模糊測試(Fuzz Testing)

    模糊測試(Fuzz Testing)模糊測試(Fuzz Testing)是通過向目標系統提供非預期的輸入并監視異常結果來發現軟件漏洞的方法。可以用來發現應用程序、操作系統和網絡協議等中的漏洞或
  • 微博大門常打開,迎接海外畫師漂洋東渡

    作者:互聯網那些事&ldquo;起猛了,我能看得懂日語了&rdquo;。&ldquo;為什么日本人說話我能聽懂?&rdquo;&ldquo;中文不像中文,日語不像日語,但是我竟然看懂了&rdquo;&hellip;&hell
  • 聯想YOGA 16s 2022筆記本將要推出,屏幕支持觸控功能

    聯想此前宣布,將于11月2日19:30召開聯想秋季輕薄新品發布會,推出聯想 YOGA 16s 2022 筆記本等新品。官方稱,YOGA 16s 2022 筆記本將搭載 16 英寸屏幕,并且是一
Top