• Deno1.0初体验


    一、Deno是node创始人新开的一个项目,功能和node类似,不过解决了node里很多的不一致和功能缺失等问题,今天刚好发布1.0版本,可以尝尝鲜,以后自写项目可以用deno而不用node;

    二、Linux下载安装最新版:curl -fsSL https://deno.land/x/install/install.sh|sh

    等下载解压好后会在~/.deno/bin里有个deno的可执行文件,用ln -s ...来创建它的软连接到/usr/bin/deno里,然后deno --version就能看到版本信息了(deno版本和v8版本和typescript版本)

    三、我们先来测试一下deno默认支持ES6的module,在node里,即便是最新的模块规范里(nodev.13.2版本以后貌似)也是需要命名为.mjs或者添加一个package.json然后里面配置"type": "module"用node b.js也能正确运行【但是这个时候当前目录里就不能有CommonJS标准的模块化代码了,即require和module.exports(导出的是对象而非必须是JSON),而且CSJ和MJS仍然是不互通的);而deno默认就是支持import,export,比如我们写两个同目录文件:

    1.a.js

    class Student {
        name = '';
        gender = 0;
        constructor(name, gender) {
            this.name = name;
            this.gender = gender;
        }
    
        test() {
            console.log(this.name);
        }
    }
    
    export default Student;

    2.b.js

    import Student from './a.js';
    
    let stud = new Student('sf', 8);
    stud.test();
    console.dir(stud);

    如果要运行b.js,在node里是node b.js,但是是会报错的,必须把a.js改成a.mjs及把b.js改成b.mjs,然后node b.mjs才可以(或者创建一个package.json里配置为ES6的module)

    而用deno可以直接deno run b.js就能输出结果。

    四:deno天然支持typescript(虽然也是编译成js,但是是deno内部进行的),不需要额外安装依赖,所以我们可以直接deno run k.ts:

    class Student {
        constructor(public name: string, public gender: number) {
        }
    }
    
    let stud = new Student('sjfkl', 3);
    console.log(stud.name, stud.gender);

    deno run k.ts会提示一句:Compile file:///home/silentdoer/DenoProjects/k.ts,表明deno已经将ts文件编译成了js文件然后运行(但是编译后的js文件是不会污染工作目录的)

    五:如果需要将一个ts文件主动编译成js文件可以用deno bundle k.ts k.js,那么就会生成一个k.js文件到当前目录(不过这个k.js文件似乎也多额外内容了。。)

    也可以deno bundle b.js b.js,那么原先的b.js会被删除产生打包后的b.js,原先的b.js依赖的其他文件都会打包进新的b.js里(不过最好不要同名,可以deno bundle b.js dist/b.js这样也行);

    而且打包后的文件是能够被node执行的;【打包后的就是JavaScript,哪怕你主动写目标文件是xx.ts,而且貌似是ES6的标准而非ES5】

    六:也可以通过deno将js或ts作为运维脚本:

    #!/home/silentdoer/.deno/bin/deno run
    console.log('放暑假了');

    注意,将这个exec.js文件添加为可执行权限后就可以直接./exec.js运行了,最上面的那个代码deno是能识别不会报错的,用deno run exec.js也一样可以执行;(而且上面的#!/home/...在deno bundle xx.js output/xx.js后是会清除的,所以不用担心打包后存在不标准的代码)

    七:待续。。

  • 相关阅读:
    C语言I博客作业08
    博客作业6
    C语言I博客作业05
    C语言I博客作业03
    5.C#2.0之不完整类型(完成)
    4.C#2.0之迭代器(完成)
    3.C#2.0之匿名方法(完成)
    2.C#2.0之泛型(完成)
    1.C#2.0之2.0简介(完成)
    18.C#基础之不安全代码(完成)
  • 原文地址:https://www.cnblogs.com/silentdoer/p/12890117.html
Copyright © 2020-2023  润新知