内容简介:Deno是一种新型的构建在Google V8引擎之上的TypeScript安全运行时,最近已经发布到了0.1.8版本。这个运行时是为了解决NodeJS带来的一系列问题:不再有package.json,不再有经常变化的依赖;
Deno是一种新型的构建在Google V8引擎之上的TypeScript安全运行时,最近已经发布到了0.1.8版本。
这个运行时是为了解决NodeJS带来的一系列问题:
不再有package.json,不再有经常变化的依赖;
取而代之的是,保存文件到你的项目中,或者通过http资源下载他们,之后他们便可以永久地被缓存下来;
同时,不再采用GYP(Generate Your Projects,是一个Google开源的构建系统,最开始用于Chromium项目,下载一些其他的开源项目也开始使用GYP,如V8、Node.js、WebRTC等),替代他的是GN(GN是一个生成Ninja构建文件的元构建系统,以便可以用Ninja构建Chromium,GN文件比GYP文件更具可读性和可维护性,GN比GYP快20倍);
通过flatbuffers(FlatBuffers是一个开源的、跨平台的、高效的、提供了C++/Java接口的序列化 工具 库)消息传递取代直接调用系统方法;
此外还带有开箱即用的TypeScript语法支持,不再需要Babel之类的工具将TypeScript编译成JavaScript。
本文不会告诉你Deno究竟有多强大,仅是一篇快速入门的教程让你了解这个新运行时,作者后续也会关注Deno的发展动向,如果有新收获也会同步给大家。
安装
二进制文件可以从Deno的GitHub仓库获取,你可以阅读仓库的Readme文件,自己尝试去编译它。编译的过程十分占系统资源,因此确保你的机器RAM至少在4GB以上,并且是SSD硬盘,否则你将花费大量的时间等待编译的完成。
我们就通过 Python 的方式下载安装deno吧,毕竟mac上默认安装有Python。
curl -sSf https://raw.githubusercontent.com/denoland/deno_install/master/install.py | python
然后将Deno将入到环境变量中
echo export PATH="/Users/cuitianze/.deno/bin":\$PATH >> $HOME/.bash_profile
OK,大功告成!
运行脚本
在Deno中,你既可以运行JavaScript文件,也可以运行TypeScript文件。通过Deno命令将文件名作为参数运行你的代码。你可以在仓库的tests文件夹中看到大量的Deno脚本示例。
控制台输出
和其他任何语言或者框架一样,你可以做的第一件事就是在控制台里输出一个消息。你可以简单地写如下代码打印出“Hello World!”。
console.log("Hello World!")
文件系统访问
Deno提供了基础的文件系统同步访问的能力,如readFileSync和writeFileSync函数。
readFileSync以文件的路径作为参数(可以是相对于当前工作目录的相对路径,也可以是绝对路径),调用后会返回文件内容。
首先创建一个包含“黑马大前端”字符串的文件,
echo 黑马大前端 >> hi.txt
然后通过以下的代码来读取这个文件,创建hi.ts:
import { readFileSync } from "deno"; const data = readFileSync("hi.txt"); console.log(data);复制代码
我们看看会打印出什么?
我们通过readFileSync打印出了无符号8位整型数组形式的数据。如果我们想将它转换成字符串形式,需要使用“TextDecoder”,以下代码会生成正确的输出:
import { readFileSync } from "deno"; const decoder = new TextDecoder("utf-8"); const data = readFileSync("hello.txt"); console.log(decoder.decode(data));复制代码
Perfect!“黑马大前端”被成功地打印出来了。
文件写入
既然我们已经读取并且解码了一个文本文件,那么接下来我们要演示的就是写入一个文件。我们通过writeFileSync函数来实现。这个函数需要传递两个参数,一个是文件路径,一个是待写入的内容。我们创建hello.ts写入如下代码:
import { writeFileSync } from "deno"; const encoder = new TextEncoder("utf-8"); const data = encoder.encode("你好,黑马大前端"); writeFileSync("hello.txt", data);复制代码
然而,事与愿违,文件写入并不像文件读取那样轻松。
这是因为Deno默认禁止写的权限,需要特别授权文件写的权限以让writeFileSync生效。
deno --allow-write hello.ts
Cool!成功写入文件了。
但是我们怎么可能仅仅满足于这样的“一刀切”方式的文件权限控制。
我们在实际项目中,应该是对第三方引入的文件存在不信任,此时应该有更细粒度的文件访问和网络访问的权限控制,我也向Deno的核心成员提出了我的疑虑,值得庆幸的是,更细粒度的权限控制已经在规划中了。
文件信息读取
statSync函数会返回一个文件的信息。
import { statSync } from "deno"; const fileInfo = deno.statSync("hi.txt"); console.log(fileInfo.isFile()); console.log(fileInfo.isSymlink()); console.log(fileInfo.isDirectory()); console.log(fileInfo.len); // File Size console.log(fileInfo.modified); // Last modification date console.log(fileInfo.accessed); // Last access date console.log(fileInfo.created); // Creation date复制代码
得到的文件信息如下:
定时器
定时器支持setTimeout, clearTimeout, setInterval和clearInterval,
正如JavaScript的用法一样,这里就不详细概述了。
setTimeout(function() { console.log("---黑马来了---");}, 3000);复制代码
自己跑一遍就有感知了,运行结果如下:
还有一个Feature不得不提,deno可以直接运行网络文件。
赞:+1:期待Deno发展得越来越好。
本文作者:黑马大前端 崔天泽
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
MySQL技术内幕
姜承尧 / 机械工业出版社 / 2013-5 / 79.00元
《MySQL技术内幕:InnoDB存储引擎(第2版)》由国内资深MySQL专家亲自执笔,国内外多位数据库专家联袂推荐。作为国内唯一一本关于InnoDB的专著,《MySQL技术内幕:InnoDB存储引擎(第2版)》的第1版广受好评,第2版不仅针对最新的MySQL 5.6对相关内容进行了全面的补充,还根据广大读者的反馈意见对第1版中存在的不足进行了完善,《MySQL技术内幕:InnoDB存储引擎(第2......一起来看看 《MySQL技术内幕》 这本书的介绍吧!