好程序员分享什么是Deno,它与Node.js的区别

  Node.js的创建者Ryan Dahl花了一年半的时间研究deno,这是一个新的JavaScript运行时,可以解决Node的所有固有问题。

  不要误解我的意思,Nodejs它本身就是一个很棒的服务器端JavaScript运行时,主要是因为它拥有很大的生态系统和JavaScript。然而,Node.js的创建者Ryan Dahl承认他应该考虑更多的-安全性,模块和依赖性,仅举几例。

  在他的辩护中,并不是说他可以想象平台在如此短的时间内会增长多少。此外,早在2009年,JavaScript仍然是这种奇怪的小语言,每个人都取笑,而且它的许多功能还没有。

  那么什么是Deno,主要特性有什么呢?

  1. Deno是一个基于V8构建的安全的TypeScript的Google运行时引擎。

  它建立了:

l Rust(Deno的核心是用Rust编写的,node用C++编写的)

l Tokio(以Rust编写的事件循环)

l TypeScript(Deno支持开箱即用的JavaScript和typeScript)

l V8(谷歌在Chrome和node中使用的JavaScript进行时)

  2. 它支持Type2.8开箱即用,没有package.json,没有npm 不追求兼容Node,通过URL方式引入依赖而非通过本地模块,并且在第一次运行的时候进行加载和缓存,并仅在代码使用运行,依赖才会更新。

n 可以控制文件系统和网络访问权限以运行沙盒代码,默认访问只读文件系统可访问,无网络权限。V8 和 Golang 之间的访问只能通过 protobuf 中定义的序列化消息完成;

n 最终创建单一可执行文件;

n 支持 top-level 的 await;

n 最终的目标是兼容浏览器;

n 可以作为库引入,用于建立自己的 JavaScript runtime。

  这几个特性,有很多个都是针对目前 NodeJs 的痛点而来的,包括无 package.json、依赖的引入和更新方式,针对的就是被广泛吐槽的过大的。

  同时,不再追求兼容 node,可以视为 ry 想彻底抛弃 node 包袱,打造一个更好的 JS 运行时。

它的安全性也是很放心的,它最重要的功能之一就是安全性很高,与NodeJs相反,Deno默认执行沙箱中代码,这就意味运行是无权访问。

我们来看看它的工作原理:

  (async () => {

const encoder = new TextEncoder();

const data = encoder.encode(‘Hello world‘);

await Deno.writeFile(‘HelloWorld.txt‘, data);

await Deno.writeFile(‘ HelloWorld2.txt‘, data);

  })();

  该脚本创建了两个文本文件,其中包含一条消息。代码正在沙箱中执行,因此它无法访问文件系统。HelloWorld.txt HelloWorld2.txt Hello world

  另请注意,我们正在使用Deno命名空间而不是fs模块,就像在Node中一样。Deno命名空间提供了许多基本的辅助函数。通过使用命名空间,我们正在失去浏览器兼容性。

  当然我们用到Deno的时候,会想到浏览器的兼容性,Deno旨在浏览器兼容。从技术上讲,在使用ES模块时,我们不必使用任何构建工具(如webpack)来使我们的应用程序啊可以在浏览器中使用。

  但是像Babel这样的工具会将代码转换成ES5版本的JavaScript,因此 即使在不支持该语言所用最新功能的旧版浏览器中,代码也可以运行。但这也是最终文件中包含大量不必要的代码并使输出文件膨胀为代价的。

  由我们决定我们的主要目标是什么,并相应地做出选择。

TypeScript支持开箱即用

  Deno使得无需任何配置文件即可轻松使用TypeScript。仍然可以用纯JavaScript编写程序并使用Deno执行它们而不会有任何麻烦。

  Deno是TypeScript和JavaScript的新运行时,是一个有趣的项目,现在已经稳定增长了很长一段时间。但是在它被认为是生产就绪之前还有很长的路要走。

借助它的分散式方法,它需要从集中式软件包注册表(即npm)中释放JavaScript生态系统。

原文地址:https://www.cnblogs.com/gcghcxy/p/11264384.html

时间: 2024-08-01 22:42:34

好程序员分享什么是Deno,它与Node.js的区别的相关文章

程序员分享那些事儿

分享这个词语,近年来出现频次很高.特别是“分享经济”让我重新认识分享. 很多名企也会有意举办各种分享会,尽管名头不小,但是感觉越来越商业化. 或许你所见到的分享或者你认为能够登上大雅之堂的分享,通常是专家们的事儿. 而今天我只想谈谈小企业里面程序员分享的那些事儿. 一.为什么要分享 互联网时代,信息大爆炸,每天都是有海量信息涌入,我们不缺信息,而是缺少快速“筛选”有效信息的能力. 特别是自媒体的发展让每个人都能制造信息,那么个人精力已经远远不够,于是分享变得更加重要. 其实,很多公司都提倡内部分

好程序员分享该如何选择background-image和img标签

好程序员分享该如何选择background-image和img标签,用img标签 如果你希望别人打印页面时候包含这张图片请使用img标签 当这张图片有非常有意义的语义,比如警告图标,请使用img标签及它的alt属性.这样意味着你可以向所有的用户终端现实他的意义. IE6下背景图片不能益出父级元素要使用 imgmultipleoverlayimagesinIE6. 如果你使用动画img动画要比background-image表现更好 improveperformanceofanimationsov

好程序员分享CSS标签的分类、及显示模式

好程序员分享CSS标签的分类.及显示模式,标签的类型(显示模式) HTML标签一般分为块标签和行内标签两种类型,它们也称块元素和行内元素. 一.块级元素(block-level) 每个块元素通常都会独自占据一整行或多整行,可以对其设置宽度.高度.对齐等属性,常用于网页布局和网页结构的搭建.常见的块元素有<h1>~<h6>.<p>.<div>.<ul>.<ol>.<li>等,其中 <div> 标签是最典型的块元素

好程序员分享JavaScrip数组去重操作实例小结

好程序员分享JavaScrip数组去重操作实例小结,这篇文章主要介绍了JavaScrip数组去重操作,结合实例形式总结分析了javascript针对数组的遍历.判断.去重等相关操作技巧,需要的朋友可以参考下. 本文实例讲述了JavaScrip数组去重操作.分享给大家供大家参考,具体如下: 内置的for-of方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <script> var arr=[2,1,1,3,'','','e','e',true,'t

好程序员分享Vue的一些小技巧

好程序员分享Vue的一些小技巧,前言:用Vue开发一个网页并不难,但是也经常会遇到一些问题,其实大部分的问题都在文档中有所提及,再不然我们通过谷歌也能成功搜索到问题的答案,为了帮助小伙伴们提前踩坑,在遇到问题的时候,心里大概有个谱知道该如何去解决问题.这篇文章是将自己知道的一些小技巧分享给大家,希望看完本文可以有所收获. 文章内容总结: 组件style的scoped Vue 数组/对象更新 视图不更新 vue filters 过滤器的使用 列表渲染相关 深度watch与watch立即触发回调 这

好程序员分享大数据教程之线程高级部分

好程序员分享大数据教程之线程高级部分,首先讲一下线程的生命周期 对于一个线程, 在被创建后, 不是立即就进入到了运行状态, 也不是一直处于运行状态, 在线程的声明周期中, 一个线程会在多种状态之间进行切换 new : 新生状态, 线程被实例化, 但是还没有开始执行(start) runnable: 就绪状态, 已经执行过start, 线程已经启动了, 只是没有抢到CPU时间片 running: 运行状态, 抢到了CPU时间片 blocked: 阻塞状态, 线程执行的过程中, 遇到一些特殊情况,

程序员在互联网公司和行业软件公司工作,有什么区别?

原文为 luckystar 在程序员在程序员在互联网公司和行业软件公司工作,有什么区别?问题下的回答. 日常的工作是帮程序员跳槽,常常会遇到想从软件公司跳槽到互联网公司的,也有想从互联网跳到软件公司的(觉得工作强度低).他们很关心的一个问题是:软件公司和互联网公司,孰优孰劣? 其实两者之间没有优劣之分,但有更适合自己的那一个,对岸的风景也不一定是更美的.知己知彼方能百战百胜,我把在这两种公司里工作的差异阐述一下,对此感兴趣的程序员朋友看完便了解了. 1. 软件公司程序员在哪些公司工作? 很多人说

习惯看新闻头条 一个程序员分享的工作心得

原本想找链接的.可是...我还是选择手打    原作者:刘鹏看未来 原文标题 10+程序员总结的20+条经验教训 开发 1.从小事做起,然后再扩展 无论是创建一个新的系统,还是添加功能到现有的系统中,我总是从一个简单到几乎任何所需功能的版本启动,然后再一步一步地解决问题,知道满意为止.我从来没有妄想过能够一步登天.相反,我一边开发,一边学习,同时新掌握的信息可以用于解决方案中.我很喜欢John Gall的这句话:"复杂系统总是源于简单系统的演化." 2.一次只改变一件事 当我们在开发时

阿里Java程序员分享自己的职业规划,希望对你们有所启发

每个程序员.或者说每个工作者都应该有自己的职业规划,如果你不是富二代,不是官二代,也没有职业规划,希望你可以思考一下自己的将来.今天我给大家分享的是一篇来自Java工程师对五年工作经验程序员的职业建议,希望对你们有启发. 程序员的三个阶段 第一阶段-三年我认为对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人.这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的企业级开发.我们知道如何团队协作.如何使用项目管理工具.项目版本如何控制.我们写的代码如何测试