前端的存在真的是要乾死各種開發工程師嗎?

桌面APP可以用Electron實現了,不信你看Atom,移動APP可以用react-native實現了,不信你看Instagram,而且還跨平台。前端這是要乾死各種工程師的節奏啊,大家怎麼看,這真的是大勢嗎?


這不是輕輕鬆鬆的事么?

要知道現在對於業務不複雜的應用都可以:一份代碼構建移動、桌面、Web全平台應用

著作權歸作者所有。

商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

作者:phodal

鏈接:一份代碼構建移動、桌面、Web全平台應用 - Phodal - 手工藝人 - 知乎專欄

來源:知乎

Web本身就是跨平台的,這意味著這中間存在著無限的可能性。

我是一名Web Developer,對於我來能用Web開發的事情就用Web來完成就好了——不需要編譯,不需要等它編譯完。我想到哪我就可以寫到哪,我改到哪我就可以發生哪發生了變化。

最近我在寫Growth——一個幫助開發人員成長的應用,在近一個月的業餘時間裡,完成了這個應用的:

  • 移動應用版:Android、Windows Phone、iOS(等賬號和上線)
  • Web版
  • 桌面版:Mac OS、Windows、GNU/Linux

截圖合併如下:

而更重要的是它們使用了同一份代碼——除了對特定設備進行一些處理就沒有其他修改。相信全棧的你已經看出來了:

Web = Chrome + Angular.js + Ionic

Desktop = Electron + Angular.js + Ionic

Mobile = Cordova + Angular.js + Ionic

除了前面的WebView不一樣,後面都是Angular.js + Ionic。

從Web到混合應用,再到桌面應用

在最打開的時候它只是一個單純的混合應用,我想總結一下我的學習經驗,分享一下學習的心得,如:

  • 完整的Web開發,運維,部署,維護介紹
  • 如何寫好代碼——重構、測試、模式
  • 遺留代碼、遺留系統的形成
  • 不同階段所需的技能
  • 書籍推薦
  • 技術棧推薦
  • Web應用解決方案

接著我用Ionic創建了這個應用,這是一個再普通不過的過程。在這個過程里,我一直使用Chrome在調度我的代碼。因為我是Android用戶,我有Google Play的賬號,便發布了Android版本。這時候遇到了一個問題,我並沒有Apple Developer賬號(現在在申請ing。。),而主要的用戶對象程序員,這是一群不土的土豪。

偶然間我才想到,我只要上傳Web版本的代碼就可以暫時性實現這個需求了。接著找了個AWS S3的插件,直接上傳到了AWS S3上託管成靜態文件服務。

幾天前在Github上收到一個issue——關於創造桌面版, 我便想著這也是可能的,我只需要寫一個啟動腳本和編譯腳本即可。

所以,最後我們的流程圖就如下所示:

除了顯示到VR設備上,好像什麼也不缺了。並且在我之前的文章《Oculus + Node.js + Three.js 打造VR世界》,也展示了Web在VR世界的可能性。

在這實現期間有幾個點可以分享一下:

  1. 響應式設計
  2. 平台/設備特定代碼

響應式設計

響應式設計可以主要依賴於Media Query,而響應式設計主要要追隨的一點是不同的設備不同的顯示,如:

這也意味著,我們需要對不同的設備進行一些處理,如在大的屏幕下,我們需要展示菜單:

而這可以依賴於Ionic的expose-aside-when="large",而並非所有的情形都是這麼簡單的。如我最近遇到的問題就是圖片縮放的問題,之前的圖片針對的都是手機版——經過了一定的縮放。

這時在桌面應用上就會出現問題,就需要限定大小等等。

而這個問題相比於平台特定問題則更容易解決。

平台特定代碼

對於特定平台才有的問題就不是一件容易解決的事,分享一下:

存儲

我遇到的第一個問題是數據存儲的問題。最開始的時候,我只需要開始混合應用。因此我可以用Preferences、或者SQLite來存儲數據。

後來,我擴展到了Web版,我只好用LocalStoarge。於是,我就開始抽象出一個$storageServices來做相應的事。接著遇到一系列的問題,我捨棄了原有的方案,直接使用LocalStoarge。

數據分析

為了開發方便,我使用Google Analytics來分析用戶的行為——畢竟數據對我來說也不是特別重要,只要可以看到有人使用就可以了。

這時候遇到的一個問題是,我不需要記錄Web用戶的行為,但是我希望可以看到有這樣的請求發出。於是對於Web用戶來說,只需要:

trackView: function (view) {
console.log(view);
}

而對於手機用戶則是:

trackView: function (view) {
$window.analytics.startTrackerWithId("UA-71907748-1");
$window.analytics.trackView(view)
}

這樣在我調試的時候我只需要打個Log,在產品環境時就會Track。

更新

同樣的,對於Android用戶來說,他們可以選擇自行下載更新,所以我需要針對Android用戶有一個自動更新:

var isAndroid = ionic.Platform.isAndroid();
if(isAndroid) {
$updateServices.check("main");
}

桌面應用

對於桌面應用來說也會有類似的問題,我遇到的第一個問題是Electron默認開啟了AMD。於是,直接刪之:

&
//remove module for electron
if(typeof module !== "undefined" amp;amp; module amp;amp; module.exports){
delete module;
}
&

類似的問題還有許多,不過由於應用內容的限制,這些問題就沒有那麼嚴重了。

如果有一天,我有錢開放這個應用的應用號,那麼我就會再次獻上這個圖:

未來

我就開始思索這個問題,未來的趨勢是合併到一起,而這一個趨勢在現在就已經是完成時了。

那麼未來呢?你覺得會是怎樣的?

源碼:phodal/growth · GitHub

更多內容請關注我的微信公眾號:phodal

http://weixin.qq.com/r/mnVYQHrEVicprT4j9yCI (二維碼自動識別)


謝邀。

趨勢是這樣子。但不能因為 Atom、vs code 用 web 實現了,QQ 、微信裡面也有 web,支付寶、淘寶、天貓、京東等等app 都大量依賴 web,這個現象,你就認為所有的軟體都必然被 web 取代吧?

那麼大家不要驚慌!抱緊我!工作總會有的!


這個要看前端的定義了。傳統狹義的前端指會 HTML、CSS、會切圖、會寫 JS 的。

其實從大前端的角度考慮,桌面端 APP、移動端 APP 這些都是通過界面向用戶展示,負責接收用戶的操作,處理轉換為一些請求等,讓後端理解要做什麼,從而對資料庫、伺服器等做相應操作。從這個角度來看,其實部分客戶端開發者,也可以歸類於前端。

所以我更傾向於這種區分規則:一個應用中,看得見的是前端,看不見的是後端。只會寫 HTML、CSS、切圖、客戶端 JS 的,應該叫 Web 前端(Web 領域的前端)。

==== 所以

這個問題不成立啊,大家都是前端。


會幹死崗位不等於會幹死人,只是挪個窩干同樣的事。你更關心崗位還是人呢


但是electron這些是前端弄出來的么?


「JavaScript 會統治世界嗎」

這是去年就已經討論過的問題,早在 2014 年初 CSDN 就有人提出過「Javascript 將統治世界 」的觀點,那時的 NodeJS 還未在生產中大範圍使用。

事實上那篇文章中的許多觀點論據都不充分,從現在來看,也充斥著很多未經證實的傳言。

推薦 PuYart 在 segmentfault 寫的一篇文章——

「 JavaScript 就要統治世界了? 」

JavaScript 就要統治世界了?

文中系統化梳理了如今的 JavaScript 在各個領域的應用,而結論也很明顯。

最後就用他的話結尾吧:

JavaScript 固然可以做很多事情,從前端到後端,從桌面到移動,從應用到遊戲,彷彿幹了所有的事情一樣。然而,也正是 JavaScript 固有的語言特性,使其在很多場景並不適用,調用硬體(經 @zhangyang 提醒 nodebots 可以控制硬體)、大數據、高強度計算等等這些考驗性能和執行效率的事情 JavaScript 是萬萬做不到的不太擅長的;儘管 JavaScript 可以移動開發,然而真正採用 JavaScript 來開發移動端是一個很需要魄力的選擇,沒有生態支持、沒有歷史可借鑒,究竟有多少人願意這樣做也是一個問題。細細一想,JavaScript 成熟的應用空間也只剩下了前端、輕量級後端和遊戲了吧。然而當 ES6 大量部署的時候,這個世界會是什麼樣,誰又知道呢?

PS:

我想你應該也不是 Atom 從出生到現在的死忠用戶。


要是所有東西都是前端這些技術搞出來的,絕壁卡死了


如果這些都要精通的話,其實學習成本並不比重新學一門相應的語言低多少


所有可以用js來寫的程序,最終都會用js來寫!


這個根乾死不幹死沒什麼直接關係,這些做法都是有條件的,並不是所有的東西都適合用js來搞


這不是前端要乾死各種工程師,而是各種開發都在借鑒前端的優勢,但後端以及其他非前端的思想仍然是關鍵!


放心,那些東西那麼簡單,隨便啥工程師倒騰倒騰都能上。

反正都是API monkey,哪個山頭的monkey不是monkey。

原來真有時覺得用了個牛B的工具自己就變強了。手動滑稽


等哪天Chrome OS或者Firefox OS超越Windows或者Android的時候,才能下題主的這個結論。

現階段html5隻乾死了Xamarin。


推薦閱讀:

當今的互聯網傾訴為什麼越來越難了?
未來幾年互聯網發展的方向在哪?
感覺這兩年支持用手機號註冊的互聯網服務越來越多了,有什麼特別的原因嗎?
移動端(手機)網站應該注意什麼問題?
中國的互聯網從業者,如果想出國發展,最可行的方案是什麼?

TAG:Web開發 | 移動互聯網 | 前端工程師 | 工程師 | 電腦軟體 |