人們常說,“時間就像海綿里的水一樣,擠擠總能出來”。對于每一個程序員來說,時間就像一粒沙,效率高低直接影響工作成果。在當前技術棧中,javascript毫無疑問是最為重要的基礎語言之一。因此,本文將從javascript語言視角出發,探討未來一個月內該語言的一些重點、難點。
首先我們來重點闡述ES6的Promise異步編程。使用Promise能夠讓異步程序變得更為簡潔明了。通過一個Promise對象的返回,可以用.then()處理請求得到的數據,而Promise.all()則可以實現并發請求。下面是一個使用Promise并實現“首頁輪播圖”功能的案例:
var getIPromise = new Promise(function(resolve, reject){ $.get('/api/getI', function(data){ if(data){ resolve(data); }else{ reject('Error'); } }); }); var getBPromise = new Promise(function(resolve, reject){ $.get('/api/getB', function(data){ if(data){ resolve(data); }else{ reject('Error'); } }); }); Promise.all([getIPromise, getBPromise]) .then(function(results){ var imgs = results[0]; var buttons = results[1]; render(imgs, buttons); }).catch(function(error){ console.log(error); });
其次,ES6的let和const關鍵字也是一個熱點。let關鍵字的作用域是塊級作用域,不存在變量提升,可以避免變量重復定義。const則定義一個只讀的常量,變量名必須是大寫,常量值不可修改。
let a = 'yujia'; console.log(a); //yujia if(true){ let a = 'hello yujia'; console.log(a); //hello yujia } console.log(a); //yujia const PI = 3.14; PI = 3; //Uncaught TypeError: Assignment to constant variable.
ES6的箭頭函數以及相關的this問題也是一個需要關注的問題。箭頭函數自動綁定外部函數的this,因此解決了傳統函數中this關鍵字指向問題,更加簡潔方便。
var a = 'window'; var obj = { a : 'yujia', getA: function(){ return ()=>{ console.log(this.a); //yujia } } } obj.getA()();
ES6的字符串模板也是一個美麗亮點。字符串模板是一種新型的字符串表達形式,它有更好的易讀性和易編寫性,也方便實現字符串拼接。字符串模板使用反引號(`)包含,通過${}嵌入變量或表達式。
var name = 'yujia'; var age = 23; console.log(`His name is ${name} and age is ${age}.`); //His name is yujia and age is 23.
最后,相比于前端而言,后端主要集中于Node.js項目的開發,并使用一些基于javascript的模塊化框架進行數據庫讀寫、socket通信、服務器壓縮等操作。Node.js有許多優秀的框架,如Express、Koa、Sails等,通過這些框架可以輕易的開發出高性能的Node.js項目。前端開發人員在這方面也有許多提高技巧。
總結來說,javascript語言的應用推陳出新,首先是異步編程、let和const關鍵字、箭頭函數、字符串模板等重點應用,對于已經有了javascript基礎的人來說,掌握這些技術點并不難。其次,后端Node.js項目的快速開發以及各種優秀的模塊化框架也是應用重點??傊?,javascript語言在未來一個月內仍將保持活躍,對于具有javascript基礎的開發人員來說,熟練掌握javascript語言是在職場立足的基石。