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