---
# System prepended metadata

title: JS ES6 + npm + Jest

---

# 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)
)
```
