typescript 我怎样才能保存摩纳哥编辑器的价值

6tdlim6h  于 2023-06-30  发布在  TypeScript
关注(0)|答案(3)|浏览(157)

因此,我试图建立一个基于Web的编辑器使用摩纳哥,我想保存的代码,我在编辑器中写的像一个文件,通过点击一个按钮,并保持它,即使我重新启动服务器我怎么能这样做?

const value = ``;
const editor = monaco.editor.create(app, {
  model: monaco.editor.createModel(
      value,
      "domain",
      monaco.Uri.parse("file:///main.dm")
  ),

当我启动服务器时,编辑器是空的,因为value=''

ecbunoof

ecbunoof1#

基于浏览器的应用程序无法直接访问文件系统。所以你只有两个选择:
1.点击按钮为用户提供下载。然后浏览器会将提供的文本保存在其下载文件夹中的文件中。
1.将文本发送到服务器(当然,如果您有服务器的话),然后服务器必须将文本存储在某个地方并在稍后提供。
对于选项1,方法通常是这样的:

/**
 * Stores the the text in a local file. Usually the web browser determines where the file is stored (download folder).
 *
 * @param text The content of the file.
 * @param fileName The name of the target file (should not contain a path).
 */
export const saveTextAsFile = (text: string, fileName: string): void => {
    const blob = new Blob([text], { type: "text/plain" });
    const downloadLink = document.createElement("a");
    downloadLink.download = fileName;
    downloadLink.innerHTML = "Download File";
    if (window.webkitURL) {
        // No need to add the download element to the DOM in Webkit.
        downloadLink.href = window.webkitURL.createObjectURL(blob);
    } else {
        downloadLink.href = window.URL.createObjectURL(blob);
        downloadLink.onclick = (event: MouseEvent): void => {
            if (event.target) {
                document.body.removeChild(event.target as Node);
            }
        };
        downloadLink.style.display = "none";
        document.body.appendChild(downloadLink);
    }

    downloadLink.click();

    if (window.webkitURL) {
        window.webkitURL.revokeObjectURL(downloadLink.href);
    } else {
        window.URL.revokeObjectURL(downloadLink.href);
    }
};
h22fl7wq

h22fl7wq2#

为了加载一个文件

function loadFileAsText()
{
  var fileToLoad = (<HTMLInputElement>document.getElementById("fileToLoad")).files![0];

  var fileReader = new FileReader();
  fileReader.onload = function(fileLoadedEvent)
  {
    var textFromFileLoaded = fileLoadedEvent.target!.result;
    //Do whatever we want with textFromFileLoaded
    editor.setValue(textFromFileLoaded!.toString());
  };
  fileReader.readAsText(fileToLoad, "UTF-8");
}

显然,由于安全问题,我们无法将内容保存在现有文件中。

k2arahey

k2arahey3#

Web应用程序可以将内容保存在localStorage中。它不会在操作系统上创建新文件,而是将其存储在浏览器中。
API只有一行:

// Save
localStorage.setItem(fileName, content);

// Get
const content = localStorage.getItem(fileName)

相关问题