美文网首页
Coffee Script

Coffee Script

作者: 啃香菜的花萝萝 | 来源:发表于2019-09-18 09:28 被阅读0次

    安装与使用

    1. 安装coffeeScript之前需要安装Node.js以及npm。
    npm install -g coffee-script
    
    1. 用法
      可以使用 coffee 命令执行脚本。
    • -c, --compile: 编译 .coffee文件到 .js 文件。
    • -w, --watch:监视文件改变,任何文件更新时重新执行命令。
    1. 注意:注意缩进注意缩进注意缩进。真的是血泪史... ... 千万注意缩进!!!

    基础语法

    1. 赋值

    bf = 0
    exist = false
    

    2. String
    使用'' 或者""符号; 插值语法 #{...}

    name = 'Sun'
    interpolation = 'My name is #{name}'
    

    3. 条件判断

    bf = 18 if exist
    
    if a and b
      exec()
    else
      stop()
    
    date = if monday then mail : letter
    

    上面代码等同于

    if (exist) {
      bf = 18;
    }
    
    if (a && b) {
      exec();
    } else {
      stop();
    }
    
    date = monday ? mail : letter;
    

    4. 函数

    add = (a) -> a + a
    add2 = (a) -> add(a) + a
    // 参数可以给默认值
    fill = (container, liquid = "coffee") ->
      "Filling ths #{container} with # {liquid}..."
    

    上面代码等同于

    var add = function (a) {
      return a + a;
    }
    
    var add2 = function (a) {
      return add(a) + a;
    }
    
    var fill = function(container, liquid="coffee") {
      return `Filling ths ${container} with ${liquid}...`
    }
    

    5. 对象和数组

    // 数组
    fruit = ['apple', 'banana', 'peach', 'mango']
    // 对象
    animal = {name: 'Cat', voice: 'Miao'}
    
    a = 'sun'
    b = 'lee'
    ab = {a, b}
    
    obj = 
      sun:
        name: 'xxx'
        age: 18
        do: (a) -> a * a
      max:
        name: 'xxx'
        age: 21
    

    上面代码等同于

    var animal = {
      name: "Cat",
      voice: "Miao"
    }
    
    var a = 'sun';
    var b = 'lee';
    var ab = {a, b};  // {a: 'sun', b: 'lee'}
    
    obj = {
      sun: {
        name: 'xxx',
        age: 18,
        do: (a) => a * a
      },
      max: {
        name: 'xxx',
        age: 21
      }
    }
    

    6. 注释
    单行注释 #, 等同于js中 //
    多行注释###,等同与js中 /**/

    ###
    注释的内容 balabalabala.....
    ###
    

    7. 存在性

    alert "Got it!" if exist?
    

    上面代码等同于

    if (typeof exist !== 'undefined' && exist !== null) {
      alert('Got it!');
    }
    

    8. 循环

    say person for person in ['Sun', 'Lee', 'Lu']
    
    // 在推导式中使用by子句,可以实现以固定跨度迭代范围值
    evens = (x for x in [0..10] by 2) 
    
    // 循环对象
    person = sun: 18, lee: 21, mike: 25
    ages = for p, age of person
      "#{p} is #{age}"
    

    上面代码等同于

    var arr = ['Sun', 'Lee', 'Lu'];
    for (var i = 0; i < arr.length; i++) {
      person = arr[i];
      say(person);
    }
    
    evens = (function() {
      var _i, _results;
      _results = [];
      for (x = _i = 0; _i <= 10; x = _i += 2) {
        _results.push(x);
      }
      return _results;
    })();
    
    // 循环对象
    person = {
      sun: 18, 
      lee: 21, 
      mike: 25
    }
    ages = (function() {
      var results = [];
      for (p in person) {
        age = person[p];
        results.push(`${p} is ${age}`);
      }
      return results;
    }) ();
    

    9. 数组的切片和拼接

    • 切片
      arr = [1, 2, 3, 4, 5, 6, 7, 8, 9] 如果通过两个点的写法 (3..6),则会包含最后一个数据,结果为 4, 5, 6, 7; 如果通过3个点的写法 (3...6), 则不会包含最后一个数据,结果为 4, 5, 6
    arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    a = arr[0..2];
    

    上面代码等同于

    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    a = arr.slice(0, 3);  // [1, 2, 3]
    
    • 拼接
    arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    arr[3..5] = [7, 7, 7];
    

    上面代码等同于

    var arr =  [1, 2, 3, 4, 5, 6, 7, 8, 9];
    [].splice.apply(arr, [3, 3].concat[7, 7, 7]);
    // arr -> [1, 2, 3, 7, 7, 7, 7, 8, 9]
    
    • 扩展运算符
    arr1 = [1, 2, 3];
    arr2 = [4, 5, 6];
    arr = [arr1..., arr2..., 9];
    

    上面代码等同于

    arr1 = [1, 2, 3];
    arr2 = [4, 5, 6];
    arr = [...arr1, ...arr2, 9];
    

    相关文章

      网友评论

          本文标题:Coffee Script

          本文链接:https://www.haomeiwen.com/subject/ptnctctx.html