成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ThinkJS 作者李成銀:擇善而從之,篤行致遠(yuǎn)

alin / 1043人閱讀

摘要:非常有幸邀請到李成銀老師,進(jìn)行一期圖靈專訪。具體工作中,技術(shù)能力可能只占了,軟素質(zhì)方面的能力卻高達(dá)。大數(shù)據(jù)處理隨著大數(shù)據(jù)處理越來越熱門,很多項(xiàng)目都要在前端進(jìn)行大數(shù)據(jù)處理和展現(xiàn)。提案可以大大提升在大數(shù)據(jù)處理方面的性能。

非商業(yè)轉(zhuǎn)載請注明作譯者、出處,并保留本文的原始鏈接:http://www.ituring.com.cn/article/260246

李成銀,奇虎360前端技術(shù)專家,ThinkJS 框架作者,開發(fā)了Chrome擴(kuò)展版的Fiddler,以支持模板語法處理的Fl,等等。目前參與開發(fā)的一個項(xiàng)目是燕尾服,借助多進(jìn)程和 Ast/Token 大幅提高現(xiàn)在前端工作流的編譯性能,項(xiàng)目地址為:https://github.com/stcjs/stc。

非常有幸邀請到李成銀老師,進(jìn)行一期圖靈專訪。

關(guān)于 ThinkJS

什么原因促使你開發(fā)了 ThinkJS 框架?

提到 ThinkJS,可能有些人會想到,ThinkJS 是不是和國內(nèi)的 PHP 框架 ThinkPHP 有一些關(guān)系呢。沒錯,剛開始 ThinkJS 就是借鑒 ThinkPHP 來開發(fā)的。到2013 年下半年的時候,Node.js 框架主要還是 Express,但用 Callback 處理異步的方式讓人非常頭疼。一種比較好的方案就是用 Promise,所以我慢慢就有了借鑒 ThinkPHP,使用 Promise 機(jī)制開發(fā)一個 Node.js 框架的想法。

隨著項(xiàng)目復(fù)雜度的提升,ThinkJS、Promise 也暴露出一些弊端,例如不能很好的跳過一些中間環(huán)節(jié)和數(shù)據(jù)傳遞。我想到借助 Babel 編譯提前使用 ES2015 規(guī)范和 React 的新特性。對于異步處理方式,我也有了更好的方式——Generator Function 或者 Async Function。

2015年3月,我們完成了 ThinkJS 全新版本的設(shè)計(jì),目標(biāo)定位為能夠在項(xiàng)目里直接使用 Es2015+ 特性開發(fā),框架自動編譯及更新,大大方便 Node.js 項(xiàng)目的開發(fā);同時優(yōu)化 1.0 版本當(dāng)中不合理的架構(gòu)和設(shè)計(jì),脫離對 ThinkPHP 的依賴。2015年10月30日我們終于成功發(fā)布了 2.0 版本,而這天也是 Babel 發(fā)布 6.0 的日子!

據(jù)說 ThinkJS 不止局限于你們開發(fā)團(tuán)隊(duì)的內(nèi)部,外部越來越多的人員也開始使用。當(dāng)初開發(fā) ThinkJS 框架的時候,有沒有預(yù)想到它會如此成功?

ThinkJS 其實(shí)還算不上成功,到目前為止 GitHub 上的 star 數(shù)也才 1700,社區(qū)也不是太活躍。不過,現(xiàn)在確實(shí)有越來越多的公司在使用 ThinkJS 開發(fā)項(xiàng)目,有 PV 超過千萬的項(xiàng)目,也有一些秒殺的項(xiàng)目。

最近上線的 ThinkJS 2.2 在功能和性能上有哪些改進(jìn)?

2.2 版本主要支持將錯誤定位到源文件和支持?jǐn)帱c(diǎn)調(diào)試的功能。因?yàn)殚_發(fā)的時候使用了 ES6+ 的語法,然后使用 Babel 編譯,如果程序報(bào)錯,輸出的錯誤信息會是編譯后的代碼,這給調(diào)試帶來很大的麻煩,同時斷點(diǎn)調(diào)試只能調(diào)試編譯后的代碼,這對開發(fā)又是非常不利的。所以 2.2 版本致力于將報(bào)錯定位到源代碼,并且基于源文件進(jìn)行斷點(diǎn)調(diào)試。

性能方面的改進(jìn)是從 2.1 版本就開始的。雖然 ThinkJS 面向企業(yè)級應(yīng)用,封裝了很多基礎(chǔ)的功能,但性能上卻并不亞于 express/koa 這些輕便級的框架。而對于同樣面向企業(yè)級的 Sails.js 框架,ThinkJS 的性能是它的 4 倍。所以說 ThinkJS 的性能是非常卓越的。具體的性能測試數(shù)據(jù)可以見https://thinkjs.org/zh-cn/doc/index.html#toc-9c0

當(dāng)然在真實(shí)的項(xiàng)目中,框架損耗的性能占比非常小,不用太過關(guān)注,只要框架本身沒有內(nèi)存泄露等問題都是可以接受的。

我們知道 ThinkJS 相對于其他的 Node.js 框架來說,更適合企業(yè)級的大型項(xiàng)目。目前,360公司的哪些項(xiàng)目正在使用 ThinkJS 框架?

目前,360內(nèi)部的很多項(xiàng)目都是使用 ThinkJS 開發(fā)的,如線上項(xiàng)目“爆米兔” https://www.baomitu.com/ 以及其他一些商業(yè)級的項(xiàng)目,如http://shangyi.#/

ThinkJS 的成功帶給你怎樣的體驗(yàn)?或者說,該框架的成功開發(fā)對你的生活帶來哪些變化?

雖然 ThinkJS 現(xiàn)在還不算太成功,未來的路也還很長,不過在開發(fā) ThinkJS 過程中確實(shí)有很多的感受。

作為開源項(xiàng)目,除了開發(fā)本身的框架代碼外,還要寫豐富的測試用例。ThinkJS 現(xiàn)在的測試用例有 1700 多個,單元測試的代碼比框架本身的代碼要多得多,每次改動都要確保測試無誤。對于一些接口變動也不能隨意,需要考慮向后兼容等各種情況。同時,還要寫各種使用文檔,項(xiàng)目示例,等等。

需要花很多的時間處理 QQ 群/社區(qū)里提的各種問題。經(jīng)常有人問安裝問題、環(huán)境問題、簡單的使用問題,剛開始的時候,我要親自逐一進(jìn)行回答,不過現(xiàn)在社區(qū)慢慢成形了,簡單的問題會有成員幫忙回答,節(jié)省了我很多時間。

相對于國內(nèi)開發(fā)者索取為主,國外開發(fā)者更愿意積極貢獻(xiàn)。awesome-* 項(xiàng)目發(fā) pr,讓其添加 ThinkJS,也會主動修改文檔中的一些拼寫錯誤,然后發(fā) pr。更好玩的是,有個老外 EunseokEom 覺得 ThinkJS 的官網(wǎng)不太好看,就親自設(shè)計(jì)了一個新的https://github.com/75team/www.thinkjs.org/pull/60。雖然我們最終沒有采納老外設(shè)計(jì)的這個網(wǎng)站,但他的貢獻(xiàn)精神真的非常贊。這也讓我們有了優(yōu)化官網(wǎng)的想法。

ThinkJS 未來的規(guī)劃是怎么樣的?

ThinkJS 內(nèi)置了很多功能,這加大了框架本身的代碼量,也增加了學(xué)習(xí)的成本。我們計(jì)劃在未來的版本中精簡核心,將一些功能剝離出來,以插件的方式存在。同時,加強(qiáng)框架周邊的建設(shè),為企業(yè)級項(xiàng)目開發(fā)更好地保駕護(hù)航。

關(guān)于團(tuán)隊(duì)

360前端團(tuán)隊(duì)“奇舞團(tuán)”是怎樣的一個工作團(tuán)隊(duì)?團(tuán)隊(duì)合作帶給你怎樣的生活體驗(yàn)和專業(yè)提升?

“奇舞團(tuán)”是 360 最大的前端團(tuán)隊(duì),支持公司的很多業(yè)務(wù)。開放的團(tuán)隊(duì)鼓勵每個人利用業(yè)余時間開發(fā)各種工具、平臺,提高團(tuán)隊(duì)的開發(fā)效率。

團(tuán)隊(duì)非常注重技術(shù)培養(yǎng),每周都有技術(shù)分享會,覆蓋新技術(shù)學(xué)習(xí)和使用、項(xiàng)目經(jīng)驗(yàn)和總結(jié)、算法優(yōu)化等各個方面。不光奇舞團(tuán)的同學(xué)可以參加,公司其他部門的前端同學(xué)也可以參加。我們還會邀請外面的一些團(tuán)隊(duì)來公司交流分享,讓每一位同學(xué)都能快速成長。

對外方面,奇舞團(tuán)每周都會發(fā)布《奇舞周刊》,方便團(tuán)隊(duì)以外的同學(xué)持續(xù)學(xué)習(xí)前端知識。

“眾成翻譯”是360前端推出的一款在線翻譯平臺。該平臺是否適用于出版行業(yè)的引進(jìn)版圖書翻譯工作?如果適合,這對外版書的翻譯工作會產(chǎn)生哪些積極作用?

“眾成翻譯”1.0 是“奇舞團(tuán)”在2016年5月10日發(fā)布的,這個項(xiàng)目由李松峰老師負(fù)責(zé),使用最新的 ThinkJS 2.0 開發(fā)。發(fā)布兩個月來,已經(jīng)翻譯文章200多篇,字?jǐn)?shù)超過了50萬字?!氨姵煞g”當(dāng)前的主要功能是推薦和翻譯技術(shù)文章,核心是為譯者提供便捷的翻譯輔助,提高翻譯效率和質(zhì)量。目前項(xiàng)目正在圍繞譯者翻譯體驗(yàn)的提升和優(yōu)質(zhì)內(nèi)容的展示做功能優(yōu)化。比如正在開發(fā)的翻譯問答功能,就是為譯者在翻譯過程中向翻譯高手求助牽線搭橋的。從社區(qū)形態(tài)來看,這個功能上線后將可能成為國內(nèi)第一個以技術(shù)翻譯為主的問答社區(qū),成為有助于廣大翻譯愛好者快速學(xué)習(xí)、鍛煉和成長的一個翻譯知識共享社區(qū)。由于“眾成翻譯”目前只支持文章的翻譯,所以在上面翻譯圖書會有些局限,必須手工把內(nèi)容拆分然后再合成。“眾成翻譯”未來有可能考慮協(xié)作翻譯和引進(jìn)版圖書翻譯的功能,為專業(yè)的翻譯、出版機(jī)構(gòu)和譯者提供一個可選的第三方工作平臺。希望到時候能夠依托已有的譯者隊(duì)伍,為更專業(yè)的翻譯工作提供有力的支持。

關(guān)于前端設(shè)計(jì)

一個好的前端工作者,應(yīng)具備哪些特質(zhì)。

我認(rèn)為一個好的前端工程師,最基本的就是要做事靠譜。而做事靠譜,不光需要技術(shù)能力,還需要溝通能力、責(zé)任心和執(zhí)行力等各個方面的軟素質(zhì)。具體工作中,技術(shù)能力可能只占了 40%,軟素質(zhì)方面的能力卻高達(dá) 60%。工作中,你很經(jīng)??吹郊夹g(shù)能力一般但能把事情做好的同學(xué),也會見到技術(shù)能力很強(qiáng),但把事情做砸的同學(xué)!

你認(rèn)為,未來新的ES標(biāo)準(zhǔn)將在哪些特征上做進(jìn)一步的改進(jìn)。

JavaScript 這幾年在語法糖和 API 上有了很大的改進(jìn),尤其是 ES2015 標(biāo)準(zhǔn)之后,每年都會發(fā)布一個新版本。這得意于前端行業(yè)的迅猛發(fā)展,前端技術(shù)已經(jīng)不再局限于瀏覽器端,它發(fā)展到了 Wed 服務(wù)端、手機(jī)端,甚至用 JavaScript 做一些硬件接口的開發(fā)和游戲的開發(fā)。

至于未來如何改進(jìn)不太好說,不過我比較看好下面幾點(diǎn):

語法改進(jìn):借鑒其他語言當(dāng)中一些比較好的特性,讓開發(fā)大型項(xiàng)目更加便利,如class 相關(guān)。

異步處理:雖然 async/await 還沒正式發(fā)布,不過狀態(tài)已經(jīng)是 stage-3,明年可以如期發(fā)布,這樣 JavaScript 在異步處理上將有質(zhì)的改變。另外 Asynchronous Iterators 提案,可以在 iterators 里直接處理異步的情況。

大數(shù)據(jù)處理:隨著大數(shù)據(jù)處理越來越熱門,很多項(xiàng)目都要在前端進(jìn)行大數(shù)據(jù)處理和展現(xiàn)。SIMD.JS 提案可以大大提升 JavaScript 在大數(shù)據(jù)處理方面的性能。

再次感謝您參與本次的訪談!

更多精彩,加入圖靈訪談微信!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/80006.html

相關(guān)文章

  • ThinkJS2 mongoose 使用

    摘要:根據(jù)李成銀大大的文章示例想做的使用,發(fā)現(xiàn)有部分問題直接使用創(chuàng)建,每次創(chuàng)建實(shí)例導(dǎo)致重新創(chuàng)建新的連接,導(dǎo)致數(shù)據(jù)庫連接無限上漲將緩存使用,導(dǎo)致的復(fù)寫將這兩個問題修復(fù)后,代碼如下不過修改,自動編譯不會的不會直接修復(fù),需要重啟服務(wù)生效創(chuàng)建連接連接數(shù)據(jù) 根據(jù)李成銀大大的文章示例想做ThinkJS的mongoose使用,發(fā)現(xiàn)有部分問題:1、mongoose直接使用createConnection創(chuàng)建...

    Jeff 評論0 收藏0
  • 篤行雜記Zookeeper SessionTimeOut分析

    摘要:前言本文為篤行日常工作記錄,爛筆頭系列。最終通過分析源碼了解到最終的確定是一個協(xié)商的過程,而不是簡單的配置生效。根據(jù)客戶端上報(bào)的和服務(wù)端自身的。如果上報(bào)的小于則設(shè)置為如果上報(bào)的大于則設(shè)置為如果介于兩則之間,則以上報(bào)的時間為準(zhǔn)。 0.前言 本文為篤行日常工作記錄,爛筆頭系列。 源碼前面,了無秘密 — by 侯杰 近期的一個C++項(xiàng)目里使用了Zookeeper做服務(wù)發(fā)現(xiàn),期間遇到了Sess...

    mcterry 評論0 收藏0
  • 京東DNN Lab首席科學(xué)家:用深度學(xué)習(xí)搞定80%的客服工作

    摘要:京東更是已經(jīng)實(shí)現(xiàn)深度學(xué)習(xí)的初步運(yùn)用。目前深度學(xué)習(xí)推廣的條件已經(jīng)成熟。李成華表示,隨著深度學(xué)習(xí)的發(fā)展和成熟,的機(jī)器學(xué)習(xí)算法將會被取代。京東研究深度學(xué)習(xí)的初衷客服對電商發(fā)展的重要性毋庸置疑。隨后深度學(xué)習(xí)技術(shù)的風(fēng)靡,加深了京東完善的想法。 說深度學(xué)習(xí)(Deep Learning)算法是當(dāng)前人工智能皇冠上的明珠并不過分。通過深層神經(jīng)網(wǎng)絡(luò)(DNN)模型的運(yùn)用,深度學(xué)習(xí)已成為目前最接近人腦的智能學(xué)習(xí)方法...

    blastz 評論0 收藏0
  • Vue+thinkJs博客網(wǎng)站(二)thinkJs的使用

    摘要:插件機(jī)制可以說是自定義的鉤子函數(shù)。首先在新建文件夾,新建文件以為例更新內(nèi)容緩存里對應(yīng)的數(shù)組表示鉤子函數(shù)的調(diào)用名,具體調(diào)用的是下面的方法。 一.簡介 這個個人博客網(wǎng)站最初制作的目的就是練習(xí)使用thinkJs,這一篇就主要講一下thinkJs的一些特性和注意事項(xiàng)。涉及到了文件上傳,thinkJs的插件機(jī)制,model層建立以及CURD的編寫方式等。本項(xiàng)目github地址在這里。 項(xiàng)目thi...

    desdik 評論0 收藏0

發(fā)表評論

0條評論

alin

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<