vue-ES2015:


vue手冊:

必備基礎:html5es6git

vue起始就是個文件庫,node-modules,他的運行底層還是藉助es5+

ES2015:

1.一言蔽之

ES2015 標準提供了許多新的語法和編程特性以提高 JavaScript 的開發效率和體驗

2.ES2015java開發帶來了什麼?

2.1.語法糖

語法糖(Syntactic sugar),也譯爲糖衣語法,是由英國計算機科學家彼得·約翰·蘭達(Peter J. Landin)發明的一個術語,指計算機語言中添加的某種語法,這種語法對語言的功能並沒有影響,但是更方便程序員使用。通常來說使用語法糖能夠增加程序的可讀性,從而減少程序代碼出錯的機會

2.2.工程優勢

 JavaScript 的模塊化構建:

從許多年前開始,各大公司、團隊、大牛都相繼給出了他們對於這個問題的不同解決方案,以至於定下了如 CommonJSAMDCMD 或是 UMD JavaScript 模塊化標準,RequireJSSeaJSFISBrowserifywebpack 等模塊加載庫都以各自不同的優勢佔領著一方土地

 解讀實例:

//import引入文件。‘fs’,‘readline’,‘path’文件格式,但是裏面一般都export語法。fs,readline,path就是申明文件export對象的實例變量

import fs from 'fs'

import readline from 'readline'

import path from 'path'

 

let Module = {

  //noop代表函數名稱

  readLineInFile(filename, callback = noop, complete = noop) {

  //readline裏面有createInterface方法,他的參數是一個對象input: fs.createReadStream(path.resolve(__dirname, './big_file.txt')

    let rl = readline.createInterface({

      input: fs.createReadStream(path.resolve(__dirname, './big_file.txt'))

    })

 

    rl.on('line', line => {

      //... do something with the current line

      callback(line)

    })

 

    rl.on('close', complete)

 

    return rl

  }

}

function noop() { return false }

 

export default Module

可惜的是,目前暫時還沒有任何瀏覽器廠商或是 JavaScript 引擎支持這種模塊化語法。所以我們需要用 babel 進行轉換爲 CommonJSAMD 或是 UMD 等模塊化標準的語法。

3.ES2015新語法詳解

3.1. letconst和塊級作用域

const定義常量的

 

var i 一直存在整個上下文。

<script>

<button></button>

<button></button>

<button></button>

<button></button>

 

<div id="output"></div>

 

<script>

  var buttons = document.querySelectorAll('button')

  var output = document.querySelector('#output')

 

  for (var i = 0; i < buttons.length; i++) {

    buttons[i].addEventListener('click', function() {

      output.innerText = buttons[i].innerText

    })

  }

</script>

執行完了,真個頁面對於i4,四個按鈕因爲上下文變化的var i,所以他們都是4,所以會報錯Uncaught TypeError: Cannot read property 'innerText' of undefined

解決方案:用let

let 語句會使該變量處於一個塊級作用域中;

塊級作用域

3.2. 箭頭函數(Arrow Function

使用方法

let names = [ 'Will', 'Jack', 'Peter', 'Steve', 'John', 'Hugo', 'Mike' ]

let newSet = names

  .map((name, index) => {

    return {

      id: index,

      name: name

    }

  })

  .filter(man => man.id % 2 == 0)

  .map(man => [man.name])

  .reduce((a, b) => a.concat(b))

 

console.log(newSet) //=> [ 'Will', 'Peter', 'John', 'Mike' ]

箭頭函數與上下文綁定:

對函數內部的上下文 this)綁定爲定義函數所在的作用域的上下文

let obj = {

  hello: 'world',

  foo() {

    let bar = () => {

      return this.hello

    }

    return bar

  }

}

 

window.hello = 'ES6'

window.bar = obj.foo()

window.bar() //=> 'world'

注意事項

3.3. 模板字符串

支持變量注入

let name = 'Will Wen Gunn'

let title = 'Founder'

let company = 'LikMoon Creation'

let greet = `Hi, I'm ${name}, I am the ${title} at ${company}`

支持換行

let sql = `

SELECT * FROM Users

WHERE FirstName='Mike'

LIMIT 5;

`

3.4. 對象字面量擴展語法

方法屬性省略function

let obj = {

  // before

  foo: function() {

    return 'foo'

  },

 

  // after

  bar() {

    return 'bar'

  }

}

支持注入_proto_

a

class Foo {

  constructor() {

    this.pingMsg = 'pong'

  }

 

  ping() {

    console.log(this.pingMsg)

  }

}

 

let o = {

  __proto__: new Foo()

}

 

o.ping() //=> pong

b

let o = {

  __proto__: new Foo(),

 

  constructor() {

    this.pingMsg = 'alive'

  },

 

  msg: 'bang',

  yell() {

    console.log(this.msg)

  }

}

 

o.yell() //=> bang

o.ping() //=> alive

同名方法屬性省略語法

// module.js

export default {

  someMethod

}

 

function someMethod() {

  // ...

}

 

// app.js

import Module from './module'

 

Module.someMethod()

可以動態計算的屬性名稱:

let arr = [1, 2, 3]

let outArr = arr.map(n => {

  return {

    [ n ]: n,

    [ `${n}^2` ]: Math.pow(n, 2)

  }

})

console.dir(outArr) //=>

  [

    { '1': 1, '1^2': 1 },

    { '2': 2, '2^2': 4 },

    { '3': 3, '3^2': 9 }

  ]

3.5. 表達式解構

 

 

3.6. 函數參數表達、傳參

默認參數值

後續傳參

注意事項

解構傳參

注意事項

3.7. 新的數據結構

SetWeakSet

MapWeakMap

3.8. (Classes)

語法

定義

繼承

靜態方法

遺憾與期望

3.9. 生成器(Generator

來龍

基本概念

Generator Function

Generator

基本使用方法

3.10. promise

概念

基本用法

弊端

3.11. 原生的模塊化

歷史小回顧

基本用法

全局引入

局部引入

接口暴露

降級兼容

3.12. Symbol

黑科技

3.13.Proxy(代理)

.ES2015的前端開發實戰

1. 構建界面

2. 結構定義

3. 架構設計

模塊化

數據支持

界面渲染

4.構建應用

入口文件

數據層:文章

路由:首頁

準備頁面渲染

加載數據

設計組件

路由:文章頁面

路由:發佈新文章

5.路由綁定

6.合併代碼

.ES2015Node.js開發實戰

1.架構設計

2.構建應用

入口文件

數據抽象層

Posts控制器

API獲取所有文章,獲取指定文章,發佈新文章。

Comments

API獲取指定文章的評論,發表新評論

配置路由

3.配置任務文件

4.部署到DaoCloud

Dockerfile

創建DaoCloud上的MongoDB的服務

代碼創建

.一窺ES7

1.async/await

2.Decorators

簡單實例

黑科技

.後記

      ES6重點:

importexport=>,module等。

     

      es6特點:

定義函數:

var human={

breath(name){

console.log(name+"is breathing...");

}

}

 

     

vue.js 1.0解讀:

安裝:

安裝vue庫;默認在C:\Users\Administrator\AppData\Roaming\npm\node_modules可以看到npm安裝的全局庫

vue install -g vue --registry=https://registry.npm.taobao.org;

安裝vue命令行庫:

vue install -g vue-cli;

查看版本:

vue -V

理解

組件即對象:

對象的固定屬性都是要美元符引用的。每個屬性也可以看作是一個對象

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章