[轉載]聽說2017你想寫前端?

来源:http://www.cnblogs.com/zhengjialux/archive/2017/01/20/6321955.html
-Advertisement-
Play Games

不好意思,沒有像其他公眾號一樣趕著發文章,每年到這個時候總有一大波什麼今年前端預測,技術框架預測什麼的。我這次寫這篇文針對的對象,是想在今年踏入前端這行的人們,不管你現在是徘徊在門口,還是已經半隻腳踏入這片未知領域,都可以參考一下先行者的經驗。 先來個大概預覽: 項目工程化 發展方向 職業環境 總結 ...


每年到這個時候總有一大波什麼今年前端預測,技術框架預測什麼的。我這次寫這篇文針對的對象,是想在今年踏入前端這行的人們,不管你現在是徘徊在門口,還是已經半隻腳踏入這片未知領域,都可以參考一下先行者的經驗。

先來個大概預覽:

  • 項目工程化

  • 發展方向

  • 職業環境

  • 總結要掌握的框架/技能


小結放在前:

  • 2017的前端與其說更殘酷,不如說更規範化,前兩年各種培訓了幾個月就出來隨口開價上萬,幾萬的新手將被市場淘汰。

  • 前端開發工具/編譯工具 逐漸成型,雖然比不上object-c, java, C+ 等排名靠前編程語言有完善的IDE環境,但是。工程化模塊化的概念開始深入人心,這年頭還編寫原始HTML CSS Javascript 代碼的,要麼就是小項目,要麼就是新手。

  • 前端的工作更具有挑戰性,方向更多樣化


假設我今年要入WEB前端開發的坑

這裡強調web前端是因為,現在很多iOS,安卓開發加入大前端的這個稱呼。主要是因為React同構的出現吧,很多開始混合在一起了。

首先我們來回顧一下我們老同學印象中的前端:

  • 老古董: PS切圖導出

  • 新手小白:  Adobe Dreamweaver 寫代碼

  • 懶人: UltraEdit, notepad++ …

或許你精通之後隨便找個能敲字的東西就可以開始寫代碼,但是我遇到過一個有著多年豐富經驗的前端老前輩,就是因為懶惰打開編輯器,手寫了一段代碼也沒有檢查,就直接提交,然後不小心敲錯字元,導致整個項目差點爛尾的事情。真正厲害的人,任何時候都應該是非常謹慎的。 請善用IDE的查錯糾錯功能。

跟以往不同,如果你今年要開始web前端的開發(下麵都簡稱前端),那麼至少你是不用去折騰太多的瀏覽器相容,但並不是完全不需要去關心,只是開發環境不像以前那麼多坑,因為各種編譯器的出現。

前端面對的國內最嚴峻的挑戰是:

落後的瀏覽器版本迭代。
我拿到過國內某500強手機企業的手機,我一看自帶webkit內核,居然是2003 的 Releases 版本 webkit. 我當時是比較震驚的,畢竟安卓內核也是 4.x, 我至今不知道他們是如何做到把一個那麼舊的瀏覽器內核塞進一個比較新的安卓系統的,也不知道這麼乾是幾個意思,當然即使是高通soc基帶,要升級一下系統也是登天還難,更別說其它soc基帶。

安卓版微信在截稿之前是大概Chrome35的版本(最新是Chrome55) 並且持續了1年不變,據說是為了穩定。

UC,百度,等套殼瀏覽器大行其道,但它們調用的只是系統的瀏覽器內核,你別跟我說優化了載入速度什麼東西,載入速度是網路狀態、系統硬體決定的,跟你一個套殼瀏覽器有半毛錢關係?所以我不知道它們幾十兆容量到底寫了什麼東西,細思極恐。

總之,在桌面時代,我們面對的是IE6,7,8這個毒瘤, 在移動時代我們面對的是安卓這個毒瘤(限國內)

推薦兩款編輯器:

  • ATOM 目前最熱門的編輯器

  • Sublime text 良心編輯器,雖然是收費的,但不強制,偶爾提醒而已

  • vscode 基礎插件完善但第三方插件更新緩慢

工欲善其事,必先利其器。

前端框架的高速發展,意味著各種插件的不斷快速迭代,那麼Dreamweaver這種半封閉式的大型工具,雖然單方面很強大,但明顯版本更新跟不上社區更新的腳步,即使我裝了最新的2017版本體驗了一下,我也覺得它無法勝任這個時代了

項目工程化

避免毫無意義的報錯

老實說,雖然前端開發工程化的概念終於開始普及,是一件好事,但事實上還是屬於初級階段,對入門新手並不友好。還不能像xcode一樣,直接建立一個工程,然後配置,然後就一條龍寫代碼搞定,雖然 macOS 平臺有個CodeKit已經做得非常好了,但由於更新力度跟不上各種框架發展的速度,所以,也只是能參考。

現在寫前端,你起碼要建一個本地運行環境(localhost) 之類的。這是非常非常基礎的東西,請不要 再像以前那樣,雙擊HTML去預覽你寫的代碼,有個問題我在一些群里回答新手不止上百次: XXXXX  is not allowed by Access-Control-Allow-Origin , 基本上99% 就是直接雙擊HTML導致的(剩下1%是http跨域之類的)

既然都要建立 localhost 了那麼部署 IIS , os server, 之類的,都是非常麻煩的一件事至少我覺得是。 並且還涉及到一些付費軟體之類的,成本上升不少。

得益於nodejs的發展,現在 Browsersync , webpack dev server都能快速的部署起一個工程目錄,前提是你裝了node。

前端不再直接編寫CSS,HTML,JS

雖然這個小標題寫得有點誇張,但是一個趨勢。
瀏覽器運行鐵三角:css html js,這些必須文件,如果現有瀏覽器保持不變的話,那麼以後的工程師,獎越來越少直接編寫這些文件, 轉而通過 編譯工具,選擇一款自己喜愛的新興語言去編寫,然後編譯成瀏覽器可以認識的鐵三角文件,當然不排除以後瀏覽器可以直接運行 less、scss、ts 等文件,這都是有可能的。

最有名的例子就是 jQuery 的語法被ES2015 甚至被新時代的瀏覽器吸收並內置原生支持了(以前甚至傳出瀏覽器要內置jQuery)

CSS:

現在大部分都是通過 less、scss、sass 等去編譯成普通css文件
然後通過著名的postCSS插件,補全各種瀏覽器首碼。
舉個例子:

在less文件我們這麼寫:

.foo {
    display: flex;
    justify-content: center;
    flex-direction: column;
    .bar {
        flex-grow: 0;
        flex-shrink: 0;
        flex-basis: auto;
        &:hover {
            color:red;
        }
    }
}

 

編譯出來的css是這樣:

.foo {
  display: -webkit-box;    
  display: -webkit-flex;    
  display: -moz-box;    
  display: -ms-flexbox;    
  display: flex;    
  -webkit-box-pack: center;    
  -webkit-justify-content: center;    
  -moz-box-pack: center;    
  -ms-flex-pack: center;    
  justify-content: center;    
  -webkit-box-orient: vertical;    
  -webkit-box-direction: normal;    
  -webkit-flex-direction: column;    
  -moz-box-orient: vertical;    
  -moz-box-direction: normal;    
  -ms-flex-direction: column;    
  flex-direction: column;
}

.foo .bar {    
  -webkit-box-flex: 0;    
  -webkit-flex-grow: 0;    
  -moz-box-flex: 0;    
  -ms-flex-positive: 0;    
  flex-grow: 0;    
  -webkit-flex-shrink: 0;    
  -ms-flex-negative: 0;    
  flex-shrink: 0;    
  -webkit-flex-basis: auto;    
  -ms-flex-preferred-size: auto;    
  flex-basis: auto;
}

.foo .bar:hover {    
  color: red;
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 第一種方式:通過synchronized解決,性能下降 1 package singleton; 2 3 public class Singleton { 4 private Singleton() { 5 } 6 7 private static Singleton instance ; 8 9 ...
  • 分類搜索實現 1.添加搜索框 打開Index視圖,添加一個搜索框,代碼如下: ... <div class="portlet light"> <div class="portlet-title portlet-title-filter"> <div class="inputs inputs-full ...
  • 本篇博文,我們來說一下外觀模式。 一、案例 我們大家都買過股票嗎?即使沒有買過股票的,也大體知道炒股是什麼回事,說白了就是股票的買賣。 下麵我們用簡單的控制台應用程式來模擬一下股票買賣的場景。代碼如下: 客戶端: 二、演繹 嗯,然而,對於不瞭解股票的朋友來說,面對這麼多支股票,他們也不知道改如何買賣 ...
  • html 裡面的 role 本質上是增強語義性,當現有的HTML標簽不能充分表達語義性的時候,就可以藉助role來說明。通常這種情況出現在一些自定義的組件上,這樣可增強組件的可訪問性、可用性和可交互性。role的作用是描述一個非標準的tag的實際作用。比如用div做button,那麼設置div 的 ...
  • [1]z-index [2]fixed [3]overflow [4]定位父級 ...
  • <span style="vertical-align: middle;"> <input type="checkbox" id="agree" checked="checked"/> <label for="agree"> </label> </span> ...
  • 我的前面一張文章實現了用css3製作旋轉的效果,現在呢,我換另外一種方法來實現.就是使用js結合css3的方法來實現的.下麵我就先上圖給大家看看效果吧 下麵呢我先放上我的css代碼,代碼很簡單: 上面的代碼大家都看得懂,我就不介紹了.我重點講的是js的代碼部分. 我在這就把相對的難點講一下: ...
  • 按照官網安裝完protractor。 升級webdriver-manager,獲取selenium-server-standalone庫文件以及各種瀏覽器驅動文件。 升級後運行命令啟動webdriver-manager以便提供瀏覽器模擬服務。 運行後會出現錯誤“Error: Invalid or c ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...