前端技術棧


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

一下是關於每個工具上榜的理由,一些眾所周知的理由這里就不重復了。

基礎庫:React

  • 組件化的UI方便開發,測試以及管理
  • JSX的語法能夠在寫html的時候最大程度上利用JS的優勢
  • 強大的開發community
  • 擺脫了繁瑣的two-way-binding
  • 方便的server side rendering


架構:Redux

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


語言:ES6/Babel

  • ES6的時代正在來臨,跟上節奏
  • 前端的職位基本都已經把ES6放在了基本要求里
  • 跟ES5相比有很多好用的新東西


格式:ESLint/AirBnb

半強制的讓你寫出所謂優雅的代碼哈哈,沒什么好說的,硅谷各大小公司前端通用規范


包管理:npm

沒什么好說的,基本沒有競爭者。這里有一點要強調下:請好好利用npm script


打包:webpack

  • 組件化的管理
  • 基本上可以load所有東西
  • 只load你需要的東西
  • 大規模項目必備,誰用誰知道


關於組件化管理:比如一個button組件,文件結構如下:

-- src
  -- components
    -- Button
      -- index.js
      -- index.css

index.js和index.css只包含關於這個button的東西.

index.js

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

index.css

.app-button {
    color: black;
}

測試:Mocha + Chai + Sinon

沒什么好說的,基本已成為行業標准


服務器:Sails.js

  • MVC + Realtime
  • 強大的預設和擴展性
  • REST API自動生成
  • 任務流水線

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


http/https請求: fetch

  • Firefox和chrome原生API,現在請用isomorphic-fetch來獲得所有瀏覽器的支持
  • 前后端通用
  • Promise

ORM:bookshelf

后台與數據庫交互的必備神器


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)
                })
            })
        })
    })
}

請用promise:

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

桌面應用:Electron

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



其他: Lodash

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

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



最后想講的是,需求驅使技術,技術提升需求。可以為了練習用這個東西來用這個東西,但是絕對不要為了用這個東西而用這個東西。永遠把你的需求擺在第一位。對於連需求都沒有的朋友們,希望先找到你們的需求。

  • 我是新手,我現在的目標是學習javascript - 那就先別考慮什么react/meteor/vue
  • 我需要做一個單頁面應用 - 那就別把時間花在redux上,react自帶的state可以滿足你的所有需求
  • 我的web app需要一個數據庫,但是我從來沒用過也不了解數據庫 - 那就網上花半小時看看mongoose,別糾結那些mysql語法什么的

來源: http://zhuanlan.zhihu.com/haochuan/20639855 





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM