如何設計理想的新項目前端開發流程?

2021-01-15 TechWeb

【51CTO.com快譯】一位前端開發者分享她的工作流與理想工具集選項。每個新項目總會帶來一段令人興奮的旅程,但糟糕的規劃也可能毀掉這一切。人們往往將前端開發工作流程視為繁瑣且優先級較低的任務,但由此帶來的後果往往會在生命周期當中出現。

事實上,工程技術的本質就是提升產品水準、從以往錯誤中總結經驗,而後制定出一套精簡的實施流程。我們應當將這些原則運用到流程當中,從而在項目開始時即建立起可供每位開發者使用的規則、工具與技術選項。如此一來,產品本身亦將更加靈活、可擴展且易於維護。

作為一名前端工程師,我總會在開始新項目前確保工作流程的明確性與組織性。下面,我將與大家分享自己的整個設計過程。

1. 設置一套任務運行器

有些朋友可能不太熟悉任務運行器,這實際上就是一種用於自動執行重複任務的軟體。其適合處理的任務包括JavaScript壓縮、文件連接、複製文件/目錄、執行腳本以及編譯CSS文件。任務運行器通常立足於命令行,允許開發者「觀察」特定文件或者目錄的變化,而後在適當時運行任務。

在這方面,我個人推薦Grunt與Gulp。關於二者孰優孰劣的問題,恐怕很大程度上取決於使用習慣。Grunt以配置為核心,較為笨拙緩慢,但卻易於上手且擁有龐大的技術社區。Gulp需要更為複雜的操作流程,但速度卻更好。

下面來看二者的優劣總結:

Grunt

+ 易於上手

+通過配置實現更高控制水平

+發展歷史更久,社區規模更大,插件選項更多

–非流式文件I/O使其速度較慢

Gulp

+ 需要配置的部分較少

+ 處理速度更快

+流式機制,允許異步文件處理

+ 代碼編寫需求更低

–API較為有限

Grunt與Gulp都運行在Node.js之上,因此團隊中的每位開發者都需要首先安裝Node.js。

另外一種適合由任務運行器負責的任務為編譯模板語言,例如Jade。

2. 定義CSS流程

接下來,大家需要選擇一種CSS方法,答案可以是BEM、SMACSS或者Atomic CSS。具體選擇同樣取決於您的個人喜好。我自己使用的是BEM,其易於學習且能夠在大型團隊中用於高效處理各類應用組件。

在決定了CSS的編寫規則之後,大家應當考慮如何編寫CSS代碼。結合當下趨勢,大家都在利用Sass或者Less編寫更為簡潔的CSS代碼。然而,CSS4很可能在不久的將來徹底取代這些「語言」。

考慮到預處理機制會給構建流程增加額外的時間投入,因此應當討論其是否必要。例如,如果大家選擇使用BEM,則可能不再需要使用Sass或者Less中的嵌套功能優勢。

使用Compass等Sass庫能夠顯著提升Sass的功能性,引入包括sprite-map生成、跨瀏覽器混合、文件讀取以及數學輔助函數等,這一切都能讓開發者在其CSS中實現更多效果。不過需要注意,使用Sass與Compass的前提是要求每位開發者預先安裝Ruby。

另外,大家可以利用postcss等JS插件對CSS進行後處理。作為可擴展插件,postcss允許大家自動根據瀏覽器支持需求添加瀏覽器前綴、檢查CSS、壓縮文件並生成sprite等。我也在使用postcss,這裡向大家強烈推薦。

3. 制定JavaScript規則

這也是開始新項目中最令人興奮的部分,正確處理亦能夠切實降低後續的技術債務。大家可以整理出一些嚴格的要求,包括JS如何編寫、使用哪套框架以及設計模式等。

編寫哪種風格的JavaScript?ES 5、ES 6+、TypeScript還是其它?

這是個大問題,而且往往很難找到惟一的正確答案。

ES5

ES5的優勢在於,它能夠幫助所有開發者更為順暢地使用JavaScript,面對易於理解的結構並掌握如何使用各類動態語言特性。對於經驗豐富的開發者而言,其不會帶來任何學習曲線,且全部主流JS MVC框架皆能夠支持ES5。

當然,其最大缺陷在於迫使開發者繼續編寫平淡無奇的陳舊JavaScript代碼。其冗長、鬆散且面向對象的傳統語言特色使其無法吸引使用C#、Java以及Ruby等語言的開發者。根據我的個人經驗,JavaScript會給新手軟體開發者帶來陡峭的學習曲線。

「Undefined不是函數??這是什麼意思??!」——每位軟體開發者肯定都有過這樣的疑問。

ES6+

ES6代表著JavaScript的未來——或者會是ES7?總之,利用現代語言標準編寫代碼以應對未來需求絕對是個正確的選擇。ES6提供一系列極具吸引力的語言特性:類、接口、Lambda函數、模塊導入/導出功能以及其它多種能夠在「真正的」程式語言中發現的元素。

ES6的缺點在於,大家仍然需要將代碼轉譯為ES5以獲得更為廣泛的瀏覽器、伺服器與作業系統支持。這雖然不是什麼大問題,且相信能夠在不久的將來得到解決,但就目前來講其仍在構建流程中增加了額外的步驟。另外,其確實會帶來學習曲線,但這同時也是提升開發團隊技能水平的好機會。

TypeScript

TypeScript是微軟針對JavaScript自身不足給出的解決辦法。其優勢包括ES6+中包含的一切提升,同時亦面向Visual Studio提供工具,且受到Angular v2的大力支持。TypeScript旨在通過添加更多現代語言特性以實現JavaScript的可擴展性,同時幫助開發者更輕鬆地立足.NET開發環境。

在缺點方面,大家仍然需要將TypeScript轉譯為ES5,且面對相關學習曲線。

而這就引發了下一個問題。

我們該使用哪套JavaScript框架?

目前市面上的JavaScript框架不計其數,因此我們幾乎很難確定下惟一最佳的一款。相反,我們在這裡選擇了最出色的三種,分別為Angular、Ember與Backbone。三者皆擁有相對悠久的發展歷史,因此成熟度更高且具備規模可觀的社區資源庫。另外,三者分別採用區別明顯的方式構建應用程式。下面來看它們的優缺點:

Angular

Angular v2是我個人的首先方案,其具備與Angular v1相同的出色體驗,我也期待著能在下一個項目中使用其最新版本。

+ 極高的原型設計與構建速度

+ 為TypeScript與Dart提供說明文檔

+ 可輕鬆配合Jasmine與Karma實現測試驅動型開發

+ 大量獨有功能

– 大量獨有功能

– 要求開發者必須遵循Angular獨有的方式進行開發

Ember

良好的中間性選項。

+ 組件驅動型特性

+ 獨有功能少於Angular,但多於Backbone

+ 使用handlebars模板引擎

+ CLI

+ 可經由CLI輕鬆實現測試

Backbone

老派而又純粹的框架

+ 幾乎不具備任何獨有功能

+ 可對設計模式、代碼樣式以及架構進行全面控制

+ 部分極具影響力的應用與網站皆運行於Backbone之上

+ 可選擇您偏好的模板引擎

+ 基本上屬於簡潔版HTML,無需額外屬性

– 要求使用大量樣板代碼

– 不存在依賴性,但可配合Marionette等視圖框架提升使用體驗

– 總體代碼編寫量要求更高,但亦可藉此實現更佳優化

– 自帶測試環境

總結

通過以上探討,下面我來匯總自己理想中的最佳前端開發流程:

Grunt負責任務運行 Sass負責CSS預處理 Postcss負責後處理 編寫TypeScript 利用 AngularJS進行構建

【51CTO譯稿,合作站點轉載請註明原文譯者和出處為51CTO.com】

點讚 0

相關焦點

  • 前端設計-JavaScript簡單數字時鐘開發實例
    簡單數字時鐘開發實例藉助於JavaScript window對象所提供的計時觸發函數setInterval可以實現前端動畫效果的設計與製作。本例主要以setInterval方法為基礎介紹簡單數字時鐘的開發實例。
  • 零基礎學Web前端開發要怎麼去學
    雖說大家都知道 Web 前端開發涉及的知識內容都很廣泛,除了常見的 HTML、CSS和JavaScript這些基礎知識點,還有很多知識需要去深入學習,而且網際網路時代不斷發展,掌握了這些新技術、新技能,在職場的競爭力必然會翻倍提升。1 零基礎學web前端開發要怎麼去學?
  • 前端開發培訓機構該如何選擇?開課吧怎麼樣?
    現在社會上前端開發培訓機構魚龍混雜,該如何選擇一個比較靠譜的培訓機構,還需要多下一番功夫,小編認為適合自己的就是好的培訓機構。下面就來為大家解答一下前端開發培訓機構該如何選擇。首先,看一下前端開發培訓機構的課程是否添加了目前行業中新的技術知識、課程大綱是否跟得上市場的步伐,很多小機構的前端技術跟不上節奏,還在使用之前老版本的前端培訓課程,這是肯定不行的。
  • Web前端開發必不可少的9個開源框架
    大多數人想到Web開發時,通常會想到HTML或JavaScript,往往忽略了CSS,根據Wikipedia的說法,CSS既是網頁中最重要也是最常被遺忘的部分之一,儘管它是全球資訊網的三大基礎技術之一。今天就和大家分享9個流行的、強大的前端開源框架,幫助你輕鬆構建漂亮的網站前端。
  • 騰訊歷史上首個專職前端開發:前端開發轉到雲上開發需要幾步?
    「20年前,前端有過一個最爽的時代,但那時前端是像BUG一樣的存在」,11月29日,由騰訊雲與微信聯合主辦的第二屆「小程序·雲開發」技術峰會現場,騰訊雲TVP、前端開發黃希彤現場分享了如何前端開發轉到雲上開發的發展歷程。
  • 關於前端開發的20篇文檔與指南
    所以本文整理一些有用的信息,希望可以幫助相關領域的前端開發人員。1. I want to use基於Can I use的數據和功能,這款應用給予你選擇一組前端開發特性的能力,並會讀取出一個全球性用戶能夠使用它的百分比。
  • Axure完成前端開發可行性探索
    能否可以挑戰更多的開發項目成為直接上線可用的產品?筆者正好利用2020年超長的春節假期進行一次探索。為什麼會想到要用一款原型工具去做成品?主要原因是所見即所得的編輯過程,讓那些需要一定時間學習編程才能完成的工作,由普通人來做學習成本幾乎可以不計,而且質量的穩定性更加可靠。
  • 前端工程師主要做什麼?你了解Web前端開發工程師嗎-開課吧
    前端開發顧名思義就是頁面的設計,代碼的實現。零基礎學Web前端前端主要是負責頁面的設計,比如我們看到的手機界面、網頁等,能看到的都離不開前端的努力,學習起來是比較簡單的,因為界面的編程可以直接看到編程的結果,有什麼問題可以及時看到並修改
  • 零基礎入門Web前端,什麼樣的人適合學Web前端-開課吧
    那Web前端的工作是什麼樣的呢?web前端的工作主要是客戶端的實現,也就是向客戶展示的一些內容,分為幾個方面,如前端美工UI、前端特效、前端交互、前端架構等。以前的程式設計師是設計、前臺和後臺都寫得,為了提升開發效率,才分解開來的。
  • 在前端業務場景下的設計模式
    前端的代碼也是需要設計的,話雖如此,但即便看了很多設計模式的書籍,也無法真正應用起來。後來發現還是需要真實業務場景入手,思考在面對複雜多變的需求時如何編寫更簡潔、更容易維護的代碼。本文從這個角度入手,整理了在前端業務開發中遇見的一些設計模式。
  • 前端開發人員如何創建CSS動畫
    CSS已成為前端開發人員和UI / UX專家的強大工具。請繼續閱讀以了解如何利用此功能並使用CSS創建動畫。在CSS中使用動畫的第一步是 過渡屬性。當預定義的轉換不夠或不適合時,就有CSS動畫。注意:在這篇文章中沒有使用JavaScript。動畫屬性有兩個部分:關鍵幀和動畫屬性。
  • web前端開發,怎麼才能讓頁面排版更清爽?
    web前端開發,在整個編程行業來說都算是一個門檻相對較低的崗位。但同時,其所面向的對象又對開發者有一定的美學素養需求,這就使得在製作前端頁面的時候需要掌握一些基本的排版技巧,畢竟排版不能也交給美工不是。那麼,在開發的過程當中,有哪些能夠讓頁面更好看的排版方式值得去學習呢?
  • 2020Web前端開發常見面試題及答案全解析-開課吧Web前端
    Web前端開發問題一:前端如何進行seo優化,以下說法錯誤的是:A.爬蟲依賴於標籤來確定上下文和各個關鍵字的權重;解析:title 指圖片的信息(滑鼠移到圖片上顯示)、alt 指圖片不顯示時顯示的文字以上就是小科今天整理提供的Web前端開發面試題,希望為Web前端同學提供了有用的面試素材,以後酷仔每日均會提供Python及Web相關的習題。
  • 《龍背上的騎兵》《尼爾》製作人正在開發兩個新項目
    橫尾太郎(Yoko Taro)是日本著名的遊戲製作人,他曾經開發過《龍背上的騎兵》、《尼爾》系列的遊戲,並且大獲成功。而現在,這位製作人似乎正在製作幾個新項目,一起來了解下。
  • 前端高效開發必備的 js 庫梳理
    作者: 徐小夕 來源:趣談前端之前有很多人問學好前端需要學習哪些 js 庫, 主流框架應該學 vue 還是 react ? 針對這些問題, 筆者來說說自己的看法和學習總結。前端由於入行門檻低, 更新換代很快, 每年都會有大量新的框架和庫出現, 也有大量庫被淘汰(比如 JQuery, 但是學習它的設計思想很有必要). 所以我們大可不必擔心, 保持自己的學習步伐, 按需學習即可.
  • Web前端開發框架有哪些?你都會嗎-開課吧
    前端即網站前臺部分,也叫前端開發,運行在PC端,移動端等瀏覽器上展現給用戶瀏覽的網頁。隨著網際網路技術的發展,HTML5,CSS3,前端框架的應用,跨平臺響應式網頁設計能夠適應各種屏幕解析度,完美的動效設計,給用戶帶來極高的用戶體驗。
  • 沒有基礎的初學者該學習軟體測試技術還是前端開發技術
    首先,對於基礎比較薄弱的初學者來說,如果想進入IT行業發展,選擇軟體測試或者是前端開發會相對容易一些,一方面這兩個領域的學習門檻相對比較低,另一方面這兩個領域的就業崗位也相對比較多。從當前IT行業的發展前景來看,軟體測試和前端開發都有比較廣闊的發展前景,在產業網際網路時代,這兩個領域也依然有大量的崗位需求。軟體測試崗位對於從業者知識面的要求比較廣,雖然並不需要具備較強的程序設計能力,但是對於作業系統、資料庫、計算機網絡等知識也要有全面的了解。另外,在雲計算、大數據時代,軟體測試崗位也需要掌握一定的雲計算和大數據技術。
  • 前端開發需要學多長時間?剛學出來的前端工資多少-開課吧
    前端工程師,也叫Web前端開發工程師。他是隨著Web發展,細分出來的行業。尤其是現在網際網路時代,Web技術應用更加廣泛。網站、手機app、營銷H5等等都離不開Web技術。前端入門相對後臺開發來說容易一點,最基本的就是學習html,Javascript以及Jquery,Ajax,bootstrap之類的前端框架。另外前端技術的更新變化也非常快,不斷有新的技術迭代。正所謂,學無止境。如果接受對力尚佳,或者有些前端基礎,15天到1個月就差不多能夠入門。
  • 汽車模具設計的新模開發流程
    依一老師1分鐘前 模具學習群添加我微信好友拉你入群學習哦 一套新模注意事項,需要哪些流程,有哪些技術要求,也許每個設計、每個公司都有自己的一套。但是,經驗不豐富在設計、調試時,總會出現這樣或那樣的問題。
  • 在網頁設計之前為什麼要進行原型設計?
    他們如何從大堂到達那裡? 這些都是在網站的原型製作階段計劃的。UX(用戶體驗)和原型是建築物的藍圖,而不是牆壁上的油漆(即用戶界面或UI設計)。 在浪知潮網絡,我們支持原型製作。這是我們應用於所有網站的過程。它支持可靠的內容策略,確定最佳的用戶流,並為客戶的特定需求設計理想的布局。