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

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

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

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

前言

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

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

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

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

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

showOpenFilePicker

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

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

語法

showOpenFilePicker()

參數

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

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

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

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

返回值

返回一個promise對象,會兌現一個包含 FileSystemFileHandle 對象的 Array 數組。zJk28資訊網——每日最新資訊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打開多個文件zJk28資訊網——每日最新資訊28at.com

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

showDirectoryPicker

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

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

語法

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

showDirectoryPicker()

參數

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

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

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

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

返回值

返回一個promise對象,會兌現一個包含 FileSystemFileHandle 對象的 Array 數組。zJk28資訊網——每日最新資訊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>

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

擴展

FileSystemFileHandle

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

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

FileSystemDirectoryHandle

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

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

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

開發編輯器

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

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

圖片圖片zJk28資訊網——每日最新資訊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);};

這里主要是遞歸處理文件夾,返回一個文件列表zJk28資訊網——每日最新資訊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來高亮展示代碼zJk28資訊網——每日最新資訊28at.com

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

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

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

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

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

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

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

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

標簽:
  • 熱門焦點
  • K60至尊版剛預熱 一加Ace2 Pro正面硬剛

    Redmi這邊剛如火如荼的宣傳了K60 Ultra的各種技術和硬件配置,作為競品的一加也坐不住了。一加中國區總裁李杰發布了兩條微博,表示在自家的一加Ace2上早就已經采用了和PixelWo
  • 俄羅斯:將審查iPhone等外國公司設備 保數據安全

    iPhone和特斯拉都屬于在各自領域領頭羊的品牌,推出的產品也也都是數一數二的,但對于一些國家而言,它們的產品可靠性和安全性還是在限制范圍內。近日,俄羅斯聯邦通信、信息技術
  • 6月iOS設備好評榜:第一蟬聯榜首近一年

    作為安兔兔各種榜單里變化最小的那個,2023年6月的iOS好評榜和上個月相比沒有任何排名上的變化,僅僅是部分設備好評率的下降,長年累月的用戶評價和逐漸退出市場的老款機器讓這
  • 5月安卓手機好評榜:魅族20 Pro奪冠

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年5月1日至5月31日,僅限國內市場。第一名:魅族20 Pro好評率:97.50%不得不感慨魅族老品牌還
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數據的地方,是數據源的一種,比如大家經常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數據,它既可以保
  • 自律,給不了Keep自由!

    來源 | 互聯網品牌官作者 | 李大為編排 | 又耳 審核 | 谷曉輝自律能不能給用戶自由暫時不好說,但大概率不能給Keep自由。近日,全球最大的在線健身平臺Keep正式登陸港交所,努力
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯網企業調整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 到手價3099元起!iQOO Neo8 Pro今日首銷:安卓性能最強旗艦

    5月23日,iQOO如期舉行了新品發布會,全新的iQOO Neo8系列也正式與大家見面,包含iQOO Neo8和iQOO Neo8 Pro兩個版本,其中標準版搭載高通驍龍8+,而Pro版更
  • OPPO K11搭載高性能石墨散熱系統:旗艦同款 性能涼爽釋放

    日前OPPO官方宣布,將于7月25日14:30舉辦新品發布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣點就是將配備索尼
Top