antdesign 所兼容的浏览器_Deno v0.3.0 来啦!浏览器兼容更进一步了
前言
2019年2月18日,发布了Deno@v0.3.0
版本。
在这个版本里,主要的API做了修改变更,原来import的方式引用核心模块import deno from "deno"
现在被全局变量Deno
代替。同时,仍然允许代码里的Deno特性可以在浏览器中运行。目前新版本会兼容以前import deno
的方式使用其核心方法,但在以后的版本会删除这方面的兼容,请更新现有的deno代码。
此次版本官方的变更主要有:
- 添加
Deno
全局变量对象 - 添加
window.location
- 添加
Deno.version
对象,对象包括所支持的TypeScript
版本号 - 添加
Deno.execPath
- 在
File
类里,添加seek
和实现对应的Seeker
- 修复使用文件时候无扩展名的处理
- 添加Deno.run使用时候的环境传参
- 打开了
v8_postmortem_support
- 升级V8 至7.4.158版本
- 可以使用适当目录的缓存文件
REPL
支持多行recoverable errors。- 遵守
TypeScript
的NO_COLOR
输出 - 支持范围变量,解锁了
REPL
异步操作和报错颜色浏览器
Deno使用全局化带来期待
用JavaScript写的Deno代码未来可以多端兼容
注:
如果是用 JavaScript 写的代码,同时不依赖Deno的原生API,就可以兼容 Deno环境和浏览器环境使用。
如果 JavaScript 代码里包含了 Deno原生API的依赖,如果依赖的API只是能以浏览器的方式兼容,就需要实现一个window.Deno的兼容对应的原生API就能保证代码的兼容。
例如以下代码在Deno
环境下执行
async function main() {console.log(Deno.platform);
}
main();
在浏览器,如果要兼容 Deno.platform 的使用,就可以模拟 Deno 的全局变量的对应 API
window.Deno = {};
Deno.platform = (function(w) {const userAgent = w.navigator.userAgent;let arch = "x64";let os = "Unknown";if (/win32|wow32/i.test(userAgent)) {arch = "x32";}if (/mac os/i.test(userAgent)) {os = "Mac";} else if (/linux/i.test(userAgent)) {os = "Linux";} else if (/windows|win32/i.test(userAgent)) {os = "Window";} return {arch,os,}
})(window)async function main() {console.log(Deno.platform);
}
main();
- 关于兼容浏览器的
Deno
的原生API
- 大部分
API
可能无法实现,例如readFile
,readDir
之类的。但是如果将readFile
利用input[type="file"]
的方式实现也未尝不是一个方向,即利用浏览器的能力伪实现
系统依赖功能。 - 可以实现部分
非系统功能依赖
的API
例如Deno.env()
、Deno.platform
之类的
- 大部分
浏览器API的兼容化
本次Deno
升级到v0.3.0
版本,新增了window.location
属性,意味着对浏览器Web API
的兼容更也更进一步了。
浏览器的Web API
通常是挂载在全局的window
变量上。在Deno
的环境里,也有个全局挂载对象window
,挂载在window
上的属性都可以直接使用。
例如在Deno@v0.3.0
环境里,执行一下代码:
const apiList = Object.keys(window)console.log(`Supported global API [count: ${apiList.length}]: rn`);
console.log(`${apiList.join(',')} rn`);
会打印出一下信息
- 截至
Deno@v0.3.0
版本里,挂载在window
的Web API
有一下20个- window
- atob
- btoa
- fetch
- clearTimeout
- clearInterval
- setTimeout
- setInterval
- location
- Blob
- CustomEvent
- Event
- EventTarget
- URL
- URLSearchParams
- Headers
- FormData
- TextEncoder
- TextDecoder
- performance
- 上述 Web API 的使用方式,和浏览器的使用一致,使用方法,都可以在 MDN web 开发文档里查到。
- 常用的浏览器支持的API在
Deno
环境下都可以使用- 例如
location
、fetch
- 例如
用JavaScript写的代码(无Deno引用)可以多端兼容
例如一下JavaScript
代码在Deno
环境和浏览器环境执行,结果都一样的。
async function main() {const res = await fetch("https://cnodejs.org/api/v1/topic/5433d5e4e737cbe96dcef312");const json = await res.json();console.log("Fetch result: rn");console.log(JSON.stringify(json));
}
main();
- 浏览结果
Deno
环境下结果
后记
最后比较有意思的是,Deno
在发布v0.3.0
版本后,官方的介绍从原来的
A new way to JavaScript
替换成
A browser-like command line runtime
每次的Deno
的每次较大的版本变更,介绍语都有一定的变更,代表着该次变更的影响,但万变不离其宗就是逐步朝着原有的浏览器全兼容的方向去发展。
如果想更加方便进行技术交流,可以关注我公众号 “大海码”。
antdesign 所兼容的浏览器_Deno v0.3.0 来啦!浏览器兼容更进一步了相关推荐
- 兼容浏览器_你知道什么是跨浏览器兼容吗?
文章来自:卓码软件测评 在过去的二十年里,互联网得到了巨大的发展.1998年只有大约240万个网站,而现在已经有大约18亿个了,这正好是74900%的增长.不仅如此,互联网用户的数量也从1998年的1 ...
- 用Meta标签代码让360双核浏览器默认极速模式打开网站不是兼容模式
我开发了一个网站,大量采用了html5和css3,希望用户都以webkit内核打开页面,但是测试却发现360的以ie内核打开为推荐模式,不知原因为何.其实360给网站开发者设计了一种选择的方法,只要加 ...
- linux电视浏览器下载软件,【UC浏览器开发者工具Linux版】UC浏览器开发者工具下载 v0.4.1 Linux版-趣致软件园...
UC浏览器开发者工具Linux版是一款专门针对UC浏览器开发者版本所推出的调试工具,这款软件完美兼容DevTools Protocol,因此用户无需再搭配其它工具便可以快速有效的完成调试工作.除此之外 ...
- bootstrap和css样式兼容(ie、360、qq)不同浏览器的解决办法
一.作为一个之前没有真正实践项目的前端新手,这次在实践的时候就发现了一个严重的问题--兼容性. 开发者在前端开发,调试的时候,使用的基本都是谷歌.火狐这种开发者浏览器,忽略了其实我们国内主流的浏览器仍 ...
- html2canvas 浏览器端截屏并下载保存(兼容IE)
html2canvas 浏览器端截屏并下载保存(兼容IE) <!DOCTYPE html> <html> <head> <meta charset=" ...
- 360浏览器已经适配鸿蒙系统,360安全浏览器全面支持IE9 提速兼容双重奏
2011年3月15日中午,微软发布了全新的IE9浏览器正式版.五小时后,360推出了全面支持IE9的360安全浏览器3.7 beta4版.该版本全方位开启了IE9内核的各种高性能引擎,并对IE9的兼容 ...
- AppEmit v0.9.5 新功能 浏览器调用本地应用程序 支持打开 编辑 金山 wps office, excel ppt
AppEmit v0.9.5 新功能 浏览器调用本地应用程序 支持打开 编辑 金山 office 更多主页 下载地址 能在以及几乎所有支持websock浏览器,包括chro ...
- ie8浏览器html圆角问题,css圆角和阴影兼容问题(ie7,ie8)
Document .box { background-color: #f0f0f0; width: 740px; height: 40px; border: 1px solid #d7d7d7; -m ...
- OpenYurt v0.4.0 新特性发布:高效地管理边缘存储资源
作者 | 高文俊 来源|阿里巴巴云原生公众号 简介 OpenYurt 是由阿里云开源的基于原生 Kubernetes 构建的.业内首个对于 Kubernetes 非侵入式的边缘计算项目,目标是扩展 ...
最新文章
- css 实现打分效果
- YAML中多行字符串的配置方法总结
- 烦人的Facebook分享授权
- idea.config.path is invalid 问题
- 谷歌正式推出 Fuchsia OS比拼HarmonyOS!
- 三年经验前端社招——有赞
- mysql之union合并查询
- jpa 测试_使用外星人进行测试:如何使用Arquillian测试JPA类型转换器
- python中print后面加逗号
- 蠕虫病毒通过什么侵入计算机系统,注意!蠕虫病毒入侵!我区已有单位个人计算机中招!...
- ubuntu的无线网无法连上
- Ubuntu Emacs Fcitx 中文输入法设置
- 固态硬盘(samsung SSD 850 pro)相关问题
- 大数据平台、从数仓 到 数据中台
- THUNLP发布《更多数据,更多关系,更多上下文与更多开放:关系抽取问题综述与前瞻》阅读笔记
- 制图中比例尺的一些问题
- lol登入显示目录服务器失败,英雄联盟(LOL)登录游戏提示“连接DIR服务器失败”?...
- 命令行里打 cd 简直是浪费生命
- 电子科技大学信息与软件工程学院
- js语法+dom+js图片库+最佳实践+图片库改进版
热门文章
- zemax评价函数编辑器_zemax常用评价函数操作数..doc
- PHP新闻APP,【优速软件】APP/小程序接口:全部新闻列表,POSCMS,CodeIgniter技术文档,PHP开发文档,迅睿CMS框架官方教程...
- 服务器关于数据流转方式
- web前端基础(13js语法基础)
- 秋风秋雨愁煞人:寒宵独坐心如捣
- Remixer-谷歌的UI参数动态修改框架
- win10的11对战平台突然无法启动魔兽
- abap 创建出口历程_SAP ABAP第一,两,三代出口型BADI实现 解释的概念
- 可以分屏的软件_Screen分屏软件下载|Screen+专业分屏 免费版v1.4.25 下载
- 计算机二级学校查询,计算机等级考试查询系统