{"id":22283782,"url":"https://github.com/veaba/learn-deno","last_synced_at":"2025-03-25T19:51:41.390Z","repository":{"id":104582160,"uuid":"192035419","full_name":"veaba/learn-deno","owner":"veaba","description":"learn-deno","archived":false,"fork":false,"pushed_at":"2019-08-31T10:48:15.000Z","size":5,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-30T17:39:42.840Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/veaba.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-15T04:13:02.000Z","updated_at":"2019-08-31T10:48:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"5e387e7c-772d-41af-8451-9966f4236a4c","html_url":"https://github.com/veaba/learn-deno","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veaba%2Flearn-deno","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veaba%2Flearn-deno/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veaba%2Flearn-deno/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veaba%2Flearn-deno/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/veaba","download_url":"https://codeload.github.com/veaba/learn-deno/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245535443,"owners_count":20631294,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-03T16:42:13.397Z","updated_at":"2025-03-25T19:51:41.369Z","avatar_url":"https://github.com/veaba.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# learn-deno\n\nlearn-deno\n\n## Deno 对象\n\n```js\n{\n    args,\n    noColor,\n    pid,\n    env,\n    exit,\n    isTTY,\n    execPath,\n    chdir,\n    cwd,\n    File,\n    open,\n    openSync,\n    stdin,\n    stdout,\n    stderr,\n    read,\n    readSync,\n    write,\n    writeSync,\n    seek,\n    seekSync,\n    close,\n    copy,\n    toAsyncIterator,\n    SeekMode,\n    Buffer,\n    readAll,\n    readAllSync,\n    mkdirSync,\n    mkdir,\n    makeTempDirSync,\n    makeTempDir,\n    chmodSync,\n    chmod,\n    chownSync,\n    chown,\n    utimeSync,\n    utime,\n    removeSync,\n    remove,\n    renameSync,\n    rename,\n    readFileSync,\n    readFile,\n    readDirSync,\n    readDir,\n    copyFileSync,\n    copyFile,\n    readlinkSync,\n    readlink,\n    statSync,\n    lstatSync,\n    stat,\n    lstat,\n    linkSync,\n    link,\n    symlinkSync,\n    symlink,\n    writeFileSync,\n    writeFile,\n    ErrorKind,\n    DenoError,\n    permissions,\n    revokePermission,\n    truncateSync,\n    truncate,\n    connect,\n    dial,\n    listen,\n    metrics,\n    resources,\n    kill,\n    run,\n    Process,\n    Signal,\n    inspect,\n    build,\n    platform,\n    version,\n    core,\n    Console,\n    stringifyArgs,\n    DomIterableMixin;\n}\n```\n\n## 相关参考链接\n\n- https://github.com/chenshenhai/deno_note/ 《Deno 进阶开发笔记》\n- https://github.com/denolib/awesome-deno#chinese Awesome-Deno\n\n## windows 安装 deno\n\n```\n\u003e 下载二进制版本 https://github.com/denoland/deno/releases\n\u003e 解压到 d:\\deno\\deno.exe\n\u003e 打开系统，path 添加路径 d:\\deno\\\n\u003e 重开cmd\n\u003e deno -v\n\n```\n\n\u003e 成功截图\n\u003e ![81efa02fbcd2364bb3084beb21b49b22.png](en-resource://database/2002:1)\n\n## linux 安装 deno\n\n### 方式一\n\n```\n\u003e 下载二进制版本 https://github.com/denoland/deno/releases\n\u003e 解压到 /home/binary/deno\n\u003e gunzip deno_linux_x64\n\u003e 这时候是无法使用\n\u003e chmod 755 deno //或者chmode +x deno_linux_x64 这个就是一整个大文件的二进制\n\u003e export PATH=\"/home/binary/deno/:$PATH\"\n\u003e ln -s /home/binary/deno /usr/local/bin/deno 快捷方式\n\u003e deno version\n```\n\n### 方式二\n\n\u003e 一键完成的方式，https://deno.land/\n\n```shell\n\n\u003e curl -fsSL https://deno.land/x/install/install.sh | sh\n\u003e export PATH=\"/root/.deno/bin:$PATH\"\n\u003e deno\n```\n\n![a44d85ae2d36349b5da891d48f425cdd.png](en-resource://database/2006:1)\n\nshell 方式\n![239042ed2a4b7afa71c66293058fe16e.png](en-resource://database/2022:1)\n\n## deno 的 module 识别需要决定路径，否则无法识别\n\n- 需要绝对路径\n- 需要填写后缀名\n  ![b03d5a6eb2af39bb3d5618fe232db720.png](en-resource://database/2028:1)\n\n## deno 里面去 console this\n\n\u003e console.log(this)\n\n```\n\n```\n\n## deno app.ts 报错\n\n\u003e Found argument 'app.ts' which wasn't expected, or isn't valid in this context\n\n![6bf8951839d2fbc048a1de72523e7732.png](en-resource://database/2453:1)\n\n需要这样运行\n\n\u003e deno run xx.ts\n\n- Windows: ‌Cannot find the common subdirectory path for the input files.‌\n\n\u003e 更新 windows 下的 deno 到最新的版本就可以解决问题。\n\n## deno 运行 express 类型库\n\n\u003e https://github.com/NMathar/deno-express\n\n## deno 运行 http 服务\n\n\u003e deno run --allow-net --allow-read hello.ts\n\n```typescript\nimport { serve } from \"https://deno.land/std@v0.5/http/server.ts\";\n\nasync function main() {\n  const body = new TextEncoder().encode(\"Hello World\\n\");\n  for await (const req of serve(\":8000\")) {\n    req.respond({ body });\n  }\n}\n\nmain();\n```\n\n## deno 命令选项\n\n\u003e 打开 deno -h 看\n\n### usage 使用\n\n- 允许所有权限执行脚本文件\n\n  \u003e deno run --allow-all mod.ts\n\n- 允许所有权限+重新编译脚本\n  \u003e deno run --allow-all --reload mot.ts\n\n### 子命令\n\n- run 运行文件\n  \u003e deno run mot.ts\n  \u003e deno run https://xx.com/xx.ts\n\n#### deno run -h\n\n\u003e deno run -h\n\u003e ![5b25b89d5cf43b1f28887aea09ea5fc8.png](en-resource://database/2479:1)\n\n#### 主要功能\n\n- ts 编译 成为 js 和 sourcemap。在\\$HOME/.deno/gen/ 目录\n- js 和 sourcemap 都是 hash 值命名\n- 代码不变更还是调用之前编译后的文件\n- 代码变更才会生成新的文件\n\n#### run 权限 flags\n\n- deno run --allow-net mot.ts 允许送网络权限\n- deno run --allow-read mod.ts 允许直接使用文件读权限\n- deno run --allow-write mod.ts 允许使用文件写权限\n- deno run --allow-run mod.ts 允许直接执行文件、或者执行子进程\n- deno run --allow-env mod.ts 允许直接使用操作系统环境权限\n- deno run --allow-hrtime mod.ts 陨石测量高分辨率时间\n- deno run --allow-all mod.ts 允许以上所有权限\n\n#### run 其他 flags\n\n- deno run -h 查看帮助文档\n- deno run -D mod.ts、deno --log-debug 输出执行底层日志\n- deno run --no-prompt mod.ts 在执行代码时不显示提示\n- deno run --v8-flags mod.ts 设置 V8 命令行参数\n\n### 子命令 eval\n\n\u003e deno eval\"console.log('xxx'+new Date())\"\n\n### 子命令 fetch\n\n获取远程在线的依赖模块\n\n- 下载和编译远程依赖模块，并保存在本地\n- 递归获取和遍历模块的所有依赖\n- 编译后无需运行代码\n- 在新项目拉取依赖时，无需重新下载或者编译，除非 --reload\n\n#### fetch 的使用方式\n\n\u003e deno fetch https:/xxxx.ts\n\u003e deno fetch --reload https://xxx.ts\n\n### 子命令 info\n\n- deno info local xx.ts\n- deno info type xx.ts\n- deno info compiled xx.ts\n- deno info map xx.ts\n- deno info deps xx.ts\n\n## 模块\n\n\u003e https://github.com/denoland/deno_std#use-the-term-module-instead-of-library-or-package\n\n### 模块风格\n\n- 使用名词术语  module  而不是  lib  或  package\n- 如果需要一个入口文件，则建议使用 mod.ts 而不是 index.js 或 index.ts\n- 文件命名方式使用“下划线”\\_，例如 file_sys.ts，不要使用“破折号”-\n- 输出方最多是两个参数，如果参数太多，超出部分用对象的方式代替\n- 使用标准代码格式化命令去检查代码格式 deno --fmt\n\n### 模块分分类\n\n#### 原生模块\n\n- 基础能力\n  - readFileSync\n  - writeFileSync\n  - listen\n- 基础接口\n  - Reader\n  - Writer\n  - Closer\n  - Conn\n\n```typescript\nimport { readFileSync, writeFileSync } from \"deno\";\n```\n\n#### 本地模块\n\n本地或者相对路径引入文件\n\n```typescript\nimport { Modul1, Modul2 } from \"./Mod/xxx.ts\";\n```\n\n#### 标准模块\n\n```typescript\nimport { test } from \"https://deno.land/x/testing/mod.ts\";\n```\n\n- 标准模块要按照推荐代码格式去规范\n- 标准模块以 https://deno.land/x/ URL 开头\n- 可以用无版本或者带版本号 URL 链接使用\n- 任何第三方都可以贡献，申请使用 https://deno.land/xxx/成为标准模块\n\n#### 其他远程模块\n\n私有 HTTP 服务，或者类似 Node.js 的私有 npm 源仓库\n\n### 模块编译\n\n- Deno 是一个 Typescript 运行环境，不是直接的 runtime\n- 把 ts 编译为 js，调用 v8 去执行\n\n#### 编译位置\n\n- \\.deno\\deps\\* 存放远程模块 在本地和 goland 类似\n- \\.deno\\gen\\* 存放本地 hash 的 js 和 SourceMap\n\n## deno 的全局变量\n\n全局变量是什么，应该怎么从deno xx.ts 获取\n\n- this    无法获取\n- global  无法获取\n- process 无法获取\n\n## Windows\n\n```js\n[\n  \"Deno\",\n  \"denoMain\",\n  \"window\",\n  \"atob\",\n  \"btoa\",\n  \"fetch\",\n  \"clearTimeout\",\n  \"clearInterval\",\n  \"setTimeout\",\n  \"setInterval\",\n  \"location\",\n  \"crypto\",\n  \"Blob\",\n  \"File\",\n  \"CustomEventInit\",\n  \"CustomEvent\",\n  \"EventInit\",\n  \"Event\",\n  \"EventListener\",\n  \"EventTarget\",\n  \"URL\",\n  \"URLSearchParams\",\n  \"Headers\",\n  \"FormData\",\n  \"TextEncoder\",\n  \"TextDecoder\",\n  \"Request\",\n  \"performance\",\n  \"onmessage\",\n  \"workerMain\",\n  \"workerClose\",\n  \"postMessage\",\n  \"Worker\"\n];\n```\n\n### Deno 原生 API\n\n- libdeno\n- denoMain\n- Deno\n- CustomEventInit\n- EventInit\n- workerMain\n\n### 浏览器兼容 Web API\n\n\u003e https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams 比如 URLSearchParams\n\n- window\n- atob\n- fetch\n- clearTimeout\n- clearInterval\n- setTimeout\n- setInterval\n- location\n- Blob\n- CustomEvent\n- Event\n- EventTarget\n- URL\n- URLSearchParams\n- Headers\n- FormData\n- TextEncoder\n- TextDecoder\n- performance\n\n## ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fveaba%2Flearn-deno","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fveaba%2Flearn-deno","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fveaba%2Flearn-deno/lists"}