国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ThinkJS 作者李成銀:擇善而從之,篤行致遠

alin / 1040人閱讀

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

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

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

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

關于 ThinkJS

什么原因促使你開發了 ThinkJS 框架?

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

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

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

據說 ThinkJS 不止局限于你們開發團隊的內部,外部越來越多的人員也開始使用。當初開發 ThinkJS 框架的時候,有沒有預想到它會如此成功?

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

最近上線的 ThinkJS 2.2 在功能和性能上有哪些改進?

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

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

當然在真實的項目中,框架損耗的性能占比非常小,不用太過關注,只要框架本身沒有內存泄露等問題都是可以接受的。

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

目前,360內部的很多項目都是使用 ThinkJS 開發的,如線上項目“爆米兔” https://www.baomitu.com/ 以及其他一些商業級的項目,如http://shangyi.360.cn/

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

雖然 ThinkJS 現在還不算太成功,未來的路也還很長,不過在開發 ThinkJS 過程中確實有很多的感受。

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

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

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

ThinkJS 未來的規劃是怎么樣的?

ThinkJS 內置了很多功能,這加大了框架本身的代碼量,也增加了學習的成本。我們計劃在未來的版本中精簡核心,將一些功能剝離出來,以插件的方式存在。同時,加強框架周邊的建設,為企業級項目開發更好地保駕護航。

關于團隊

360前端團隊“奇舞團”是怎樣的一個工作團隊?團隊合作帶給你怎樣的生活體驗和專業提升?

“奇舞團”是 360 最大的前端團隊,支持公司的很多業務。開放的團隊鼓勵每個人利用業余時間開發各種工具、平臺,提高團隊的開發效率。

團隊非常注重技術培養,每周都有技術分享會,覆蓋新技術學習和使用、項目經驗和總結、算法優化等各個方面。不光奇舞團的同學可以參加,公司其他部門的前端同學也可以參加。我們還會邀請外面的一些團隊來公司交流分享,讓每一位同學都能快速成長。

對外方面,奇舞團每周都會發布《奇舞周刊》,方便團隊以外的同學持續學習前端知識。

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

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

關于前端設計

一個好的前端工作者,應具備哪些特質。

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

你認為,未來新的ES標準將在哪些特征上做進一步的改進。

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

至于未來如何改進不太好說,不過我比較看好下面幾點:

語法改進:借鑒其他語言當中一些比較好的特性,讓開發大型項目更加便利,如class 相關。

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

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

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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80006.html

相關文章

  • ThinkJS2 mongoose 使用

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

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

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

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

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

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

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

    desdik 評論0 收藏0

發表評論

0條評論

alin

|高級講師

TA的文章

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