3.6 Deno 位置API

Deno从web上全局支持location 。请继续阅读。

位置标记

网页的URL可以表示位置,但是deno进程中没有网页。作为一个替代方案,我们允许用户在cli命令后面加上--location参数来模拟文档位置。它可以是httphttpsURL。

// deno run --location https://example.com/path main.ts

console.log(location.href);
// "https://example.com/path"

您必须通过--location <href>此程序才能工作。如果您不这样做,则对location全局变量的任何访问都将引发错误。

// deno run main.ts

console.log(location.href);
// error: Uncaught ReferenceError: Access to "location", run again with --location <href>.

设置location或其任何字段通常会导致在浏览器中导航。这在Deno中不适用,因此将在这种情况下抛出。

// deno run --location https://example.com/path main.ts

location.pathname = "./foo";
// error: Uncaught NotSupportedError: Cannot set "location.pathname".

扩展使用

在网络上,资源解析(不包括模块)通常使用值 location.href作为任何相对URL所基于的根。这会影响Deno采用的某些Web API。

提取API

// deno run --location https://api.github.com/ --allow-net main.ts

const response = await fetch("./orgs/denoland");
// Fetches "https://api.github.com/orgs/denoland".

fetch()如果--location没有传递该标志,则上面的调用将抛出,因为没有网络类似的位置可以将其作为基础。

worker模块

// deno run --location https://example.com/index.html --allow-net main.ts

const worker = new Worker("./workers/hello.ts", { type: "module" });
// Fetches worker module at "https://example.com/workers/hello.ts".

仅在必要时使用

对于上述用例,最好是完整传递URL,而不要依赖--locationURL 如果需要,您可以使用构造函数手动建立相对URL 。

--location标志适用于那些出于某些特定目的要模拟文档位置并且意识到仅在应用程序级别有效的人员。但是,您也可以使用它来消除轻而易举地访问location全局的依赖项中的错误。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Deno的目标是使用网络平台API(例如fetch),而不是发明新的专有API。这些API通常遵循规范,并且与Ch...
    9e8aeff1c70c阅读 266评论 0 1
  • 默认情况下,Deno是安全的。因此,除非您专门启用它,否则deno模块不能访问文件,网络或环境。要访问安全敏感的区...
    9e8aeff1c70c阅读 486评论 0 1
  • 从Deno 1.9和更高版本开始,引入了native HTTP服务器API,这些API使用户可以在Deno中创建功...
    9e8aeff1c70c阅读 751评论 0 1
  • Deno是JavaScript / TypeScript的运行时,默认安全和出色的开发人员体验。 它基于V8,Ru...
    9e8aeff1c70c阅读 418评论 0 1
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,603评论 28 53