前端的存在真的是要乾死各種開發工程師嗎?
桌面APP可以用Electron實現了,不信你看Atom,移動APP可以用react-native實現了,不信你看Instagram,而且還跨平台。前端這是要乾死各種工程師的節奏啊,大家怎麼看,這真的是大勢嗎?
這不是輕輕鬆鬆的事么?要知道現在對於業務不複雜的應用都可以:一份代碼構建移動、桌面、Web全平台應用
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世界的可能性。
在這實現期間有幾個點可以分享一下:
- 響應式設計
- 平台/設備特定代碼
響應式設計
響應式設計可以主要依賴於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。於是,直接刪之:
&
類似的問題還有許多,不過由於應用內容的限制,這些問題就沒有那麼嚴重了。
如果有一天,我有錢開放這個應用的應用號,那麼我就會再次獻上這個圖:
未來我就開始思索這個問題,未來的趨勢是合併到一起,而這一個趨勢在現在就已經是完成時了。
那麼未來呢?你覺得會是怎樣的?
源碼: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。推薦閱讀:
※當今的互聯網傾訴為什麼越來越難了?
※未來幾年互聯網發展的方向在哪?
※感覺這兩年支持用手機號註冊的互聯網服務越來越多了,有什麼特別的原因嗎?
※移動端(手機)網站應該注意什麼問題?
※中國的互聯網從業者,如果想出國發展,最可行的方案是什麼?