第二十期 AMA 掘金團隊騰訊 Omi 框架 ( github.com/Tencent/omi ) 和 Cax 渲染引擎做者,AlloyTeam 開源負責人之一 dntzhang(張磊)作了爲期三天的 Ask Me Anything (AMA) 活動(活動已結束)。 咱們在此精選了一些來自用戶的提問及 dntzhang 的回答。css
騰訊 Omi 框架(github.com/Tencent/omi) 和 Cax 渲染引擎做者,AlloyTeam 開源負責人之一。html
dntzhang 是 2009 年接觸的前端,一干就是十年。日月流轉,歲月殺豬,細數過去十年,創過業,當過老師,作過遊戲,辦過工做室,作過獨立開發者,也炒過股,作過直銷,各類折騰,沒賺到錢,甚至虧損,但收穫頗豐。體驗了世態炎涼,感覺過資本貪婪,眼看生活黑暗沒有盡頭,卻能在混混沌沌中看到但願。在 2015 年初舉家從北京遷移到了深圳,加入騰訊。來了騰訊以後,已經是一雙兒女的父親,變得愈來愈保守和求穩,不敢再大動做折騰,就只折騰技術。dntzhang 熱愛編程且一直在一線編程,但願再幹一個十年。前端
前端高速發展這十年,從刀耕火種(各類模板引擎,各類模塊化框架,各類打包工具各類批處理)到現代化統一科技(webpack,jsx,babel,typescript,web components,小程序雲開發),微信小程序更加擴大了前端的邊界,將開發體驗和用戶體驗作到了史無前例的高度,這一批技術的背後是一批偉大的公司(谷歌、臉書、騰訊、微軟),是一批優秀工程師日夜打磨,是一廂讓世界更低成本運做、讓世界更美好的願景。新生事物的產生都有其背後設計的哲學,不應只學習技術自己,更應瞭解其產生的動機和緣由,這樣在面對新生事物和學習之時可以更加從容。vue
您好,我想問一下前端熟練掌握原生js真的是重中之重嗎?有人說看js能力定工資水平是否是真的?找工做是隻會用各類框架就行仍是必須熟悉底層原理node
js能力佔前端技能樹的很小一部分了,因此js能力定工資必定是片面的。定工資最主要的因素是上一家的工資,以上一家工資爲基準,給予必定比例的提高做爲工資(前提是經過面試)。框架底層原理仍是要知道個大概,對性能優化,觸類旁通,用好框架,選合適的框架,造個更好的框架都有幫助。react
目前你的工做中,Webgl的應用場景有哪些webpack
目前我接觸的工做來看仍是不多,上次在線上環境使用 webgl 仍是用來兼容安卓不支持 filter 的狀況下在 webgl 裏處理圖片模擬高斯模糊效果。不過既然渲染模式能夠切換,甚至不少 2d 都使用 webgl 渲染的話,場景應該是很是多的。固然還有QQ裏的勳章牆是我前同事作的,酷炫的 3d 勳章,不過模型是外包給別人設計的,同事只是 tween + three.js + 事件交互包裝了一下。git
可視化方向該從何學起呢,svg?canvas?仍是看炫酷的demo,學three.js D3這種框架?github
我不知道可視化方向究竟是什麼方向?可是必定不是精通可視化框架的使用,而是擼一個可視化引擎。好比你列舉的svg canvas webgl 共性的 matrix 變換是否瞭解?好比 canvas 和 webgl 裏的事件綁定怎麼處理?像素級別事件和box級別事件怎麼處理?2d 和 3d的事件綁定有什麼差別?有什麼共性?好比濾鏡怎麼作?原理是什麼嗎?高斯模糊有幾種方式?各有什麼差別?好比threejs裏的group嵌套體系是怎麼疊加屬性的?貝賽爾曲線相關原理和做用?貝塞爾曲線包圍盒計算?貝塞爾曲線相交檢測?vector2d 和 vector3d 全部的方法的幾何意義?盛金公式是幹什麼的?這個公式在可視化裏的使用場景是什麼?這些也許就是方向。web
大佬,對於大數據量,您推薦使用svg嗎?對於頻繁操做dom有什麼好建議?謝謝🙏
能夠先試試 svg,撐不住再試試 canvas。頻繁操做 dom 的解決辦法能夠借鑑 dom diff或者 vdom diff的解決方案,用數據驅動diff再局部更新視圖,操做 dom 變成操做數據。
你好,想問一下大公司喜歡作框架的緣由是什麼?錢多?
相反,錢少,或者準確點爲了省錢,節約人力成本,讓更少的人能夠建立更大的價值。大公司技術人員不少,當一個框架能減小重複性勞動,提升公司總體運做效率,公司確定會投入人力物力來研發框架。固然不少框架都是我的發起,你能夠說他是有晉升須要,也許有改變世界的宿願,固然這些都不是使用框架者該關注的,框架使用者最應該關注的是框架自己技術和設計哲學,關注它能給你或者你的項目帶來什麼價值亦或是那麼一丁點啓發,就算你不使用它。而該框架究竟是增長了世界的運行成本仍是下降了世界的運行成本是框架做者或團隊會去操心,不用使用者或者圍觀者操心,若是框架重複了,或者沒有價值,會慢慢從大衆視線消失。
我是自學前端的,就是各類學本身不會的,沒據說過的,如今流行的。最後接觸的面廣了,可是深度不深。想從新再學一遍或者鞏固一遍卻有點眼高手低。能不能給點建議或者是主要的方向。謝謝
因此要了解新生事物產生的動機和設計哲學,而且學以至用+興趣驅動。主要方向我已經列舉文章裏,現代統一科技,用什麼學什麼,愛什麼學什麼。
我是非科班碩士,工做晚,見識的世界太少,感受瞬間被年輕人超越,看到大家這麼豐富的履歷,我很羨慕。能給一些人生建議嗎
碩士起點會更高一些,不用後悔工做晚。最近面了幾個碩士(95-98年出生)都很優秀,雖然前端技能不足,可是基礎技能很紮實,職業生涯必定會發展得比我好。作過決定就不要後悔,人生建議給不了,本身還沒過好這一輩子。
應屆生求職中,怎麼拿到一份前端offer?中大廠招人最看中的是什麼?你沒有工做的時候(假設),是怎麼提高技術的?
社招看基礎和經驗,應屆看基礎(溝通表達、數據結構與算法、數學(我偏心問線性代數、高數等)、算法設計、參賽經驗、在校成績等)、計算機原理、計算機網絡。關於怎麼提高技術,我我的的習慣是:有空的時候會給本身虛構一個比較有挑戰編程任務在規定的時間完成,而後寫一篇文章總結一下。
大佬您好,在平時工做中pc端爲主,並且有的技術很老舊,涉及面也不廣,兩年前端開發好像並無學到什麼東西,請問下要如何自我提升一下呢?有什麼學習建議嗎?
準確來講,pc的項目比移動端交互和展現都要複雜一些。因此不要認爲pc項目沒有技術含量,固然若是pc項目依然還使用老掉了牙的技術棧,這確實會成爲跳槽或者提升的瓶頸。可是,工做之餘能夠搞些移動端項目,作作小程序什麼的能有不小收穫。
你好,想請教一下:數據可視化這一塊的職業發展發現
就前端這個行業總體來看,應該沒有專門這樣的崗位,可是面試是加分項。而加分的不是你由於精通使用 echarts d3 g3 什麼的,而是理解他們設計的哲學,以及底層引擎的渲染管線等。
當總作了十年的前端工做了,跟隨時間的推移,前端發生翻天覆地變化。這裏有3個問題,1.請問前端是什麼?2.爲何須要前端?3.前端在整個項目中的定位是什麼?
這個問題有點追根溯源的感受了。前端是什麼?我理解就是entry,用戶交互的界面和爲用戶提供服務的入口。這也就解釋爲何須要前端,沒有entry就無法到達提供的服務。將來的趨勢很明顯,端+雲,目前初見雛形的好比小程序雲開發模式,小程序承載端的能力。小程序雲開發必定程度上擴大了前端的職業範圍,一個前端一門語言搞定先後端一切,這是的很好趨勢。前端將來的定位和競爭力依然是深挖視覺、交互、體驗,將來 serverless 普及,大量傳統的後端也會撲向前端一塊兒開發,先後邊界愈來愈模糊,一個方法的調用直接上雲。總之趨勢就是:一人多端,先後通吃。
大佬好😃😃 您認爲數據可視化的發展潛力在哪呢 或者說數據可視化之後如何更多地與需求和業務相結合呢?
潛力沒看出多少。他只是前端技能樹的一部分,是面試前端的加分項,圖表類可視化比純數字展現更加人性化和直觀,固然其餘應用好比3D機房監控,3D地鐵,VR AR看房,全景圖(固然這是僞3D)、模型預覽等也屬於可視化範疇,這些更加實用,也有不少應用在使用,比圖表要有技術含量,可是涉及到的技能和專業遊戲建模和開發沒有太大區別了。
大佬好,我必定多多關注。 請教問題以下: 中級前端工程師應該掌握哪些技能。 問題描述:我是17年畢業的前端,如今的目標是正在從初級工程師邁向中級工程師,但不知道中級工程師應該掌握哪些重要技能,應該怎樣學習。好比去看vue,react源碼有意義嗎,好比webpack應該深刻掌握嗎,中級工程師具體應該掌握哪些東西呢,掌握到什麼程度呢
在騰訊,中級前端(2.1-2.3)可以承擔前端核心模塊的設計和開發工做。若是具體技能,我文章中列舉的都包含,具體看源碼有沒有意義,必定是有的,可是要看收益的比例,好比你是爲了性能優化仍是更好得使用框架或者瞭解設計思路看?爲了看源碼而看源碼是沒有意義,爲了成爲中級前端看源碼更沒有意義。webpack 不只要會配置,至少能寫些 webpack 插件,理解 webpack 設計哲學和插件體系的設計。
您好,我是一名二本在校生,課餘學習前端一年了,如今我面臨的問題是:已經明確但願未來從事前端工做了,還要不要去考研。不考研的話擔憂本身學校實力不強,面試機會少,考研又不知道選擇什麼樣的專業。大概就是這樣,但願能被翻牌,感謝!
先工做仍是先考研簡直就是老婆和老媽掉水裏先救誰同樣的問題了。個人觀點是:家裏有礦就繼續學習(修行),工做的同時伴隨着失去自由。若是是普通家庭先工做,或者邊工做順便考個研?固然研究生起點會更高,可是獲取知識不必定非要在學校或者考研一個途徑,哪裏不能夠學習。證實本身的方式不只僅只有研究生文憑一種。
您好,請問您是在創過業,當過老師,作過遊戲,辦過工做室,作過獨立開發者,也炒過股,作過直銷,各類折騰的狀況下爲何還從新回到了前端行業。 我如今作前端小有三年,過兩年也到30了,對於本身將來的職業規劃有所迷茫。想嘗試更多的行業,可是又怕一事無成。
辭職窮三月,換行窮三年。雖然折騰過不少東西,可是本質沒有離開前端,好比咱們工做室遊戲是用 js 寫的,獨立開發的遊戲也是 js 寫的,當老師也是教 div + css,炒股和直銷不用全職的。因此勸你別換行,選擇不三思,過後兩行淚。
我想知道的是你編程時的思路或者結構上的思路
問題劃分最小單元,逐個擊破
您好,我是大三在校生,請問一下,如今的大前端如此的火,單前端來講分支也挺多,如何在步入工做後準肯定位本身,找到本身最想要發展的方向去努力?在追求的道路上能夠不以給一些意見或建議?
走正統到道路吧~~ 先頁面重構(html+css),再學習腳本語言(js、ts),再綜合前面所學加一個組件化框架進行組件化開發,再工程化(這裏主要是使用 webpack ,node 等)。再學習 nodejs,也算是一門後端語言了、再圖形圖像可視化,再各個階段均可以興趣驅動深刻,持續學習。
omi-UI 有支持小程序計劃嗎?taro-UI能通用嗎
omiu 支持小程序的問題 Omi 團隊正在規劃中,taro ui用不了,taro是react語法,和 omi 語法不同。
請問,omi 的小程序和微信的原生小程序,兩個同樣麼?仍是說omi指的小程序是native?不太懂😅
同樣的。Omip開發小程序只是把jsx和css寫的omi組件編譯成wxml和wxss等,最後發佈上線和原生小程序本質是同樣的。
omi解決了前端的哪些痛點呢?
JSX 與 Web Components 很好的融合,並提供了Web Components向下兼容(omip)和 ssr(omis) 的解決方案,會持續跟進小程序和小程序雲開發,提供優秀的開發體驗(好比omip、mps 都是 omi 團隊汗水的結晶)。
Omi目前只支持微信小程序及H5應用,而Taro支持一套代碼能夠打出多端(微信、支付寶、百度、字節跳動)小程序、H五、React Native應用,與Taro相比以爲Omi的優點在哪裏?
Omip 是基於 taro 也支持其餘端,只是我沒試過。
omi框架是否是重複造輪子? omi與vue,react有什麼理念上的不一樣? 相比於virtual dom,web component有什麼優缺點。
Omi 既是 virtual dom 又是 web components,很妙。
小宣同窗: 我記得web components是用shadow dom,這個shadow dom 相比virtual dom有什麼優缺點
0mi渲染用的shadow dom,diff 和 create都是基於 virtual dom,shadow dom 和 virtual dom沒有可比性,各司其職。
mps 是什麼?爲何須要 mps?先列舉幾個現狀:
因此,就有了 mps。 讓開發者直接在原生小程序使用 JSX 寫 WXML,實時編譯,實時預覽。更多介紹見《騰訊 Omi 團隊發佈 mps - 原生小程序支持 JSX 和 Less》
因爲篇幅緣由,本期只摘錄了部分問題,dntzhang 也回答了不少其餘的技術、非技術問題,歡迎去他的 AMA 下面交流技術喲,傳送門。