前端技術(shù)棧之榜上有名-2016年3月

前端的一大特點(diǎn)和一大難點(diǎn),就是跟上時(shí)俱進(jìn)的各種技術(shù)和庫的發(fā)展。無論你是不知道到底學(xué)React好還是Angular好的初學(xué)者,還是總是在糾結(jié)Grunt還是Gulp的老鳥,總是會(huì)面臨這樣那樣的各種在前端領(lǐng)域中的選擇。以下文字是本人關(guān)于現(xiàn)在在工作以及自己項(xiàng)目中最喜歡用的最順手也覺得是目前來說最有前途的前端開發(fā)工具,希望能對(duì)相關(guān)的朋友們有所幫助。

您還可以在這些地方找到我:

一下是關(guān)于每個(gè)工具上榜的理由,一些眾所周知的理由這里就不重復(fù)了。

基礎(chǔ)庫:React

  1. 組件化的UI方便開發(fā),測試以及管理
  2. JSX的語法能夠在寫html的時(shí)候最大程度上利用JS的優(yōu)勢
  3. 強(qiáng)大的開發(fā)comminity
  4. 擺脫了繁瑣的two-way-binding
  5. 方便的server side rendering

架構(gòu):Redux

  1. 目前為止公認(rèn)最好的flux implementation
  2. 語法簡潔
  3. 豐富的文章,教程以及第三方工具(thunk, logger, dev-tool等等)
  4. Middleware大贊

語言:ES6/Babel

  1. ES6的時(shí)代正在來臨,跟上節(jié)奏
  2. 前端的職位基本都已經(jīng)把ES6放在了基本要求里
  3. 跟ES5相比有很多好用的新東西

格式:ESLint/AirBnb

半強(qiáng)制的讓你寫出所謂優(yōu)雅的代碼哈哈,沒什么好說的,硅谷各大小公司前端通用規(guī)范

包管理:npm

沒什么好說的,基本沒有競爭者。這里有一點(diǎn)要強(qiáng)調(diào)下:請(qǐng)好好利用npm script

打包:webpack

  1. 組件化的管理
  2. 基本上可以load所有東西
  3. 只load你需要的東西
  4. 大規(guī)模項(xiàng)目必備,誰用誰知道

關(guān)于組件化管理:比如一個(gè)button組件,文件結(jié)構(gòu)如下:

index.js和index.css只包含關(guān)于這個(gè)button的東西.

index.js

import './index.css';

...
...
render() {
    return (
        <button className='app-button'>Click me</button>
    );
}

index.css

.app-button {
    color: black;
}

測試:Mocha + Chai + Sinon

沒什么好說的,基本已成為行業(yè)標(biāo)準(zhǔn)

服務(wù)器:Sails.js

  1. MVC + Realtime
  2. 強(qiáng)大的預(yù)設(shè)和擴(kuò)展性
  3. REST API自動(dòng)生成
  4. 任務(wù)流水線

注意:Sail.js自帶的ORM是waterline,自帶的任務(wù)運(yùn)行和打包工具是grunt。如果有需求的話自己花一兩天研究下可以改成bookshelf和webpack

http/https請(qǐng)求: fetch

  1. Firefox和chrome原生API,現(xiàn)在請(qǐng)用isomorphic-fetch來獲得所有瀏覽器的支持
  2. 前后端通用
  3. Promise

ORM:bookshelf

后臺(tái)與數(shù)據(jù)庫交互的必備神器

Promise:Bluebird

如果你不想被callback搞得生活不能自理:

function isUserTooYoung(id, callback) {
    openDatabase(function(db) {
        getCollection(db, 'users', function(col) {
            find(col, {'id': id},function(result) {
                result.filter(function(user) {
                    callback(user.age < cutoffAge)
                })
            })
        })
    })
}

請(qǐng)用promise

function isUserTooYoung(id) {
    return openDatabase(db)
        .then(getCollection)
        .then(find.bind(null, {'id': id}))
        .then(function(user) {
            return user.age < cutoffAge;
        });
}

桌面應(yīng)用:Electron

沒什么好說的,這些軟件都是用前端的技術(shù)和Electron寫出來的

  1. https://atom.io/
  2. https://slack.com/
  3. https://code.visualstudio.com/

其他(此處我在英文版里寫的是utilities, 不知道中文到底應(yīng)該翻成什么。。)

必備Lodash,除此之外貌似沒有這么剛需的

最后想講的是,需求驅(qū)使技術(shù),技術(shù)提升需求??梢詾榱司毩?xí)用這個(gè)東西來用這個(gè)東西,但是絕對(duì)不要為了用這個(gè)東西而用這個(gè)東西。永遠(yuǎn)把你的需求擺在第一位。對(duì)于連需求都沒有的朋友們,希望先找到你們的需求。

我是新手,我現(xiàn)在的目標(biāo)是學(xué)習(xí)javascript - 那就先別考慮什么react/meteor/vue
我需要做一個(gè)單頁面應(yīng)用 - 那就別把時(shí)間花在redux上,react自帶的state可以滿足你的所有需求
我的web app需要一個(gè)數(shù)據(jù)庫,但是我從來沒用過也不了解數(shù)據(jù)庫 - 那就網(wǎng)上花半小時(shí)看看mongoose,別糾結(jié)那些mysql語法什么的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容