《從零構建先後分離的web項目》:前端了解過關了嗎?前端基礎架構和硬核介紹

# 前端準備 :前端了解過關了嗎?前端基礎架構和硬核介紹css

技術棧的選擇

首先咱們構建前端架構須要對前端生態圈有一切瞭解,而且最好帶有必定的技術前瞻性,好的技術架構可能往後會方便的擴展,減小重構的次數,即便重構也不須要大動干戈,我一般選型技術棧會參考如下三點:前端

1、提出自身業務的需求

  • SEO 是否很是重要?
  • 主要面向:移動端仍是 pc 端?
  • 是否有開發 app 的規劃?

有了這樣的問題咱們能夠帶着問題去重點選型一些這寫問題技術方案比較成熟的技術棧。vue

2、自身是否成熟,文檔是否友好

這裏舉一個之前開發過程當中實際遇到的,當時爲了優化用戶體驗,節省開發效率 選型了一款 MVVM 輕量框架,惋惜當時沒有決定權, CTO 選型了 avalon

當時之因此沒有選擇 backbone ,主要是由於沒有成熟的中文文檔,考慮到團隊的流動性和上手性暫時沒作考慮,最終選擇了 司徒正美的 avalon 當時來講仍是比較前衛的,也有一些以去哪網爲首的大公司都在用。咱們當時用的時候 avalon2 剛出不久,直接用的 2.0,使用過程也出現了一點問題:文檔離散,這一塊那一塊,存在後置性,生態少,擴展性價比不高 ,有時候遇到匪夷所思的 bug 尋找緣由翻了幾遍 demo 、文檔 可能會找到答案,沒有重點標識。固然就當時來講確實是給咱們提高了部分開發效率,可是我可能當時更偏向 Angular 或 vue 的。由於他們有無以倫比的生態圈和各類問題的技術方案以以及完善的開發者文檔,值得一提的是 avalon 的做者是兼職維護的,若是全棧運營的話,我相信遠比如今更好,看一看 avalon 的源碼也會對本身有很多的提高。對於生產的技術選型要更加謹慎。node

3、瞭解其生態系統

上文提到了生態系統,以我比較經常使用的 vue 來舉例,vue 發展至今僅官方爲咱們提供了以 vuex、 vue-router、 vue-loader、 vue-cli、 vuepress、 vue-devtools、 vue-ssr 爲首的 89 個開源項目,包括無數的 vue 相關的 UI 庫,vue 插件 甚至是近兩年淘寶提供的 Hybridweex 的支持react

截止今天 github 開源的 與 vue 相關的項目多達 167,752 個,與 angular 相關的多達 416,811 個,與 react 相關的 多達 594,272 個。webpack

統計時間 2018-09-01

我想有了這樣的生態支持,徹底能夠知足咱們中小項目的 95% 以上的需求,至於比較哪一個更強是沒有意義的 。git

由於比較熟悉讓我斗膽私自選擇 vue 做爲咱們的 SPA 主架構es6

4、畫出咱們指望的前端基礎架構模型

由於咱們上一章選型了 Vue,若是隻考慮前端咱們最初的想法:技術棧大概是這樣的:github

經過 node 和 webpack 的支持 把 vue 組件 build 打包成傳統元素,發佈到 http 服務中,請求後端服務。

隨後多是這樣的:web

隨着目前主流第三方庫的愈來愈多和技術的嚐鮮、客戶端的需求、或被動[不得不用]、或主動的去引用了 babel less sass *.loader 和 hybrid 等組件庫。

再後來的技術棧須要咱們根據真正踩坑以後纔會逐步完善

多是 polyfill 懶加載 xss protobuf 等 針對 瀏覽器兼容速度優化SEO通訊協議 等具體問題。因此,前期能夠不用過多考慮,咱們只要知道:這個問題咱們是能夠解決的,可是如今能夠先不去考慮,有些同窗,太過於「完美主義」以致於想法不錯,但動起手來作了幾天就不作了,完美主義害死人

瞭解 Webpack

WebPack 能夠看作是模塊打包機器,它能夠分析你的項目結構,找到 JavaScript 模塊以及其它的一些瀏覽器不能直接運行的拓展語言:Stylus、Scss、less、TypeScript、CoffeeScript 等,並將其轉換和打包爲合適的格式供瀏覽器使用。比較經常使用的還能夠經過 webpack-dev-server 進行開發模式的熱更新

WebPack 是一種模塊化開發的方案

當 webpack 處理應用程序時,它會遞歸地構建一個依賴關係圖(dependency graph),其中包含應用程序須要的每一個模塊,而後將全部這些模塊打包成一個或多個 bundle

webpack 經過 loader 能夠支持各類語言和預處理器編寫模塊,最後打包爲一個(或多個)瀏覽器可識別的 JavaScript css 文件

目前支持的 loader 列表

瞭解 ES6

官方說法

ECMAScript 6(簡稱ES6)是於2015年6月正式發佈的JavaScript語言的標準,正式名爲ECMAScript 2015(ES2015)。它的目標是使得JavaScript語言能夠用來編寫複雜的大型應用程序.

科普

不少人老是搞不清楚 ES 這些東西,這裏大白話講講:
他們的前後順序是:ES五、ES6(ES2015)、ES七、ES8

在 2015 年 6 月 ES6 的第一個版本發佈, 正式名稱就是 《ECMAScript 2015 標準》(簡稱 ES2015)算是 2011 年 ECMAScript 5.1 以後的 6.0版本
2016 年 6 月,小幅修訂的《ECMAScript 2016 標準》(簡稱 ES2016)[由於改動小,其實他是 6.1 版本,但總有人願意叫它 ES7 ,不標準的]
2017 年 6 月發佈 的《ECMAScript 2017 標準》(簡稱 ES2017) [由於改動小,其實他是 6.2 版本,但總有人願意叫它 ES8 ,不標準的]

就像 Kubernetes 人們開他起了一個 K8S 的名字 (KS 中間有 8 個單詞),他是不標準的

瞭解 Babel Traceur

Babel、Traceur 是一個編譯JavaScript的平臺,它能夠編譯代碼幫你達到如下目的:

JavaScript.next-to-JavaScript-of-today compiler

今天就使用將來的 JavaScript

截止發佈日期 (2018-09-04) ,沒有一款徹底支持ES6的JavaScript代理(不管是瀏覽器環境仍是服務器環境),因此熱衷於使用語言最新特性的開發者須要將ES6代碼轉譯爲ES5代碼。

讓你能使用最新的JavaScript代碼(ES6,ES7...),而不用管新標準是否被當前使用的瀏覽器徹底支持;

ES7 做者徹底沒精力看 ,不過 Bable 逐漸替代了 Google 的 Traceur 成爲主流了,我是個俗人,因此我選 Bable

瞭解 Sass Less Stylus

Sass 是否是違反了中國的廣告法了??

Sass 、Stylus 和 Less 之類的預處理器是對原生CSS的拓展,它們容許你使用相似於variables, nesting, mixins, inheritance等不存在於CSS中的特性來寫CSS,CSS預處理器能夠這些特殊類型的語句轉化爲瀏覽器可識別的CSS語句。

  • 一張表格對比三語言
語言 實現 特性 賦值 縮進
Sass Ruby 變量$開頭 $var: value 不須要
Less JavaSript 變量@開頭 @var: value 不須要
Stylus NodeJs 不能使用@開頭 var:10 均可以

你如今可能都已經熟悉了,上文講 WebPack 講過: webpack 裏使用相關 loaders 進行配置就可使用了,如下是經常使用的CSS 處理loaders:

Less Loader
Sass Loader
Stylus Loader

本身去找:loader 列表

像:哪一種語言更好、使用的更多、更簡單 容易引發爭議的 博主不想討論,看本身喜愛

瞭解 Electron

一個可使用使用: JavaScript, HTML 和 CSS 構建跨平臺的桌面應用的框架,也算 hybrid 的一種,主要場景是 PC 端,沒啥好說的。

值得一提的是 Visual Studio Code 、Atom、GIthub Desktop 都是基於此構建的,有時候按 CMD + option + i 有驚喜哦

基於 Electron 開發的APP列表

總結

這些也就基本是前端比較經常使用的主流技術棧組成的骨架了,以後的各類 webpack 插件,各類工具庫的選型隨着項目實戰引入更好,如今講你們也記不住。

別急實戰中的前端架構要比如今複雜得多,跟我一塊兒按部就班的的來。

下一章爲你們實戰:《如何快速構建項目並升級爲一個規範的前端骨架》

關於我

往期文章

《從零構建先後分離 WEB 項目》 序 - 開源的意義

《從零構建先後分離web項目》:開篇 - 縱觀WEB歷史演變

《從零構建先後分離web項目》探究 - 深刻聊聊先後分離架構

《從零構建先後分離web項目》準備 - 前端了解過關了嗎?前端基礎架構和技術介紹

相關文章
相關標籤/搜索