# JS ES6 + npm + Jest **require :把別人寫好的功能引入進來** 把主程式切成 module 模組化 node.js 內建提供的模組可以在官方文件上看到,另如 os 如何使用: ``` var os = require('os') console.log(os.platform()) ``` **export: 把寫好的東西給別人使用** 在要輸出出去的檔案內寫入要輸出出去的程式 `module.exports = 函式名稱` 在要輸入進去的檔案內,設定變數,引進檔案路徑 ``` var 檔名 = require('./檔名') console.log(檔名) ``` 當有多個 function 想要一起輸出的話, 可以另外再設定一個物件變數,然後 exports 變數 另一個方法: `exports.函式名 = 函式名` #### Es6 - 使用 let 或 const(常數) 把變數影響力縮小在 block 內,就不會造成全域性影響 - 解決多行字串:使用template literals,反引號` `中間如果要加變數的話,使用 ${} - 解構 destructuring ,使用方式: ``` const arr = [1, 2, 3, 4] var [first, second, third, fourth] = arr console.log(second, third) ``` **展開 Spread Operator ,可以把陣列展開成數字** 使用範例: ``` var arr = [1, 2, 3] var arr2 = [4, 5, 6,...arr] console.log(arr2) ``` 第二種範例: ``` function add(a, b, c){ return a + b + c } var arr = [1, 2, 3] console.log(add(...arr)) ``` **箭頭函式 Arrow Function** 範例 ``` function test(n){ return n } const test = function(n){ return n } ``` 把 function 省略 ``` const test = (n) =>{ return n ``` 用在陣列 ``` var arr = [1, 2, 3, 4,5] console.log( arr.filter(function(value){ return value > 1 }) .map(function(value){ return value * 2 }) ) ``` 改成 ``` var arr = [1, 2, 3, 4,5] console.log( arr.filter(value => { return value > 1 }) .map(value=> { return value * 2 }) ) ``` 再精簡 ``` var arr = [1, 2, 3, 4,5] console.log( arr .filter(value => value > 1) .map(value=> value * 2) ) ```