【開源專訪】Sea.js創始人玉伯的前端開發之路

2020-12-17 CSDN技術社區

在Web應用程式的用戶體驗越來越被重視的今天,前端開發的地位也上升到了前所未有的高度,而隨之而來的也有更多的挑戰。

為了將前端開發者繁重的工作變得簡單,框架應運而生。國內也不乏一些非常優秀的前端開發框架。本期【開源專訪】我們邀請到了國內前端大牛玉伯(@玉伯也叫射鵰),請他為我們分享一些關於前端框架、前端開發的那些事,以及前端大牛是如何煉成的。

玉伯(王保平),淘寶前端類庫 KISSY、前端模塊化開發框架SeaJS、前端基礎類庫Arale的創始人。


CSDN:先介紹一下自己和目前的工作吧!

玉伯:我叫王保平,阿里花名玉伯。目前在支付寶前端技術部工作,從事前端基礎類庫、工具等產品的研發。喜歡編碼,熱愛思考,努力把每一天過得平淡又精彩。

CSDN:Sea.js是什麼?致力於解決什麼問題?

玉伯:Sea.js是一個很純粹小巧的模塊加載器,它只解決一個問題:前端代碼的模塊化。通過Sea.js,可以將大量JavaScript代碼封裝成一個個小模塊,然後輕鬆實現模塊的加載和依賴管理。

有了Sea.js,我們就可以書寫模塊了。Arale則是一套滿足支付寶需求的通用模塊集合,是一套基於模塊化的前端基礎類庫,目前具備100多個模塊,簡單易用。

CSDN:發起Sea.js項目的初衷是什麼?它的本質意義是什麼?

玉伯:2008年,在前端開發過程中,經常會出現一個單文件幾千行甚至近萬行的情況。這種大文件,對協作開發、後續維護、性能調優等都不利。Sea.js初衷是幫助前端開發工程師將大文件拆分成小文件,能保持小顆粒度的模塊化開發,同時不需要過多考慮依賴關係,讓依賴管理輕鬆自如,讓模塊化開發變得更自然,就像瀏覽器原生提供的一樣。

Sea.js的本質意義是通過模塊化開發,來提高代碼的可維護性。對工程師而言,是關注度分離,更將更多精力聚焦在代碼本身的邏輯上。

CSDN:Sea.js的設計思想是什麼?是如何具體實現的?

玉伯:Sea.js的核心設計思想是保持簡單。有兩層含義:

  1. 對外保持使用接口的簡單。Sea.js的常用API只有7個,使用者一旦了解,基本沒什麼記憶成本,可以快速上手。
  2. 內部實現代碼儘可能簡單。追求內部實現的簡單有很多好處,比如別人可以比較容易讀懂源碼,這樣就能參與進來協同開發。源碼簡單,往往也意味著不太會有晦澀的bug存在。Sea.js的內部實現,一直在往「簡單得明顯沒有bug」的方向努力。

除了保持簡單,Sea.js的設計理念還有職責清晰、性能優先和適度完備。

職責清晰是讓Sea.js的範疇明確,隨時知道自己應該做什麼,不應該做什麼。一個框架,最怕的是需求膨脹,最怕的是複雜化。

性能優先是因為Sea.js是底層加載器,倘若性能不好,直接會影響頁面性能,因此源碼中有不少地方會刻意追求性能。

適度完備是從功能的層面看Sea.js的API是否能滿足常用需求,同時又能通過插件機制對外提供適度的可擴展性。Sea.js不追求能夠滿足所有需求,而是追求2/8原則。

具體代碼實現純文字不太好描述,感興趣的可以閱讀源碼:https://github.com/seajs/seajs,所有源碼都在上面,歡迎閱讀,歡迎給出建議。

CSDN:Sea.js開發過程中,最大的困難是什麼?是如何解決的?

玉伯:這個說起來比較有意思,在開發過程中,Sea.js最大的困難,不是編碼,而是模塊定義規範的確定。

在業界,目前流行的模塊定義規範,有CommonJS的Modues/1.x規範,還有RequireJS倡導的異步模塊定義規範AMD。這兩個規範,在社區裡存在比較大的討論,各有利弊,適用於不同的運行環境。Sea.js最後採用的是延自CommonJS Modules/2.0規範的通用模塊定義規範CMD。這個至今都有爭議,不同的團隊,不同的場景下,喜好和選擇都有可能不同。

隨著Sea.js的推廣,CMD規範目前在國內已經有相當多人認可。接下來會進一步國際化,希望能得到更大社區範圍內的認可。這條路還很長,不能說已解決了,一切還在解決的路上。

不過,這些都不是關鍵。即便Sea.js以後死掉,只要大家對模塊化開發理念有深度認可了,那一切也就值了。

CSDN:Sea.js和Arale目前分別應用在哪些地方?

玉伯:Sea.js目前已應用在阿里、騰訊、網易、百姓網等很多公司,具體可以查看seajs.org首頁下面的logo牆,目前國內有大量中小網站採用Sea.js。

Arale的使用範圍是支付寶,還有阿里巴巴ICBU部門,在一小部分國內創業型公司中也有使用。

CSDN:您之前還開發過前端類庫KISSY,而Arale也是一個基於Sea.js的前端類庫,兩者有什麼不同?這是在「造輪子」嗎?它們的開發初衷是什麼?目標又是什麼?

玉伯:Kissy和Arale都是前端基礎類庫,從組件提供的功能來講,存在很大重合度。但從理念上來講,這兩個類庫有比較大的不同。

Kissy是大教堂式思路,所有組件,從底層基礎組件,到上層UI組件,都是自主研發。這和業界的YUI3、Sencha等類庫的思路是一樣的。

Arale有所不同。Arale的首要理念是開放。開放不光意味著將自己做好的貢獻給社區,開放更意味著將社區已有的優秀組件直接拿進來用。在開放的理念下,Arale類庫裡,直接引入了jQuery、Backbone、Moment、Handlerbars等業界成熟組件。在這種思路下,Arale能與開源社區緊密互動,彼此快速共進。

Kissy和Arale的初衷都很簡單,Kissy是解決淘寶的前端基礎類庫問題,Arale則是解決支付寶的前端基礎類庫問題。兩者的目標,都是減少前端開發過程中的重複工作量,儘量提高前端開發的工作效率,同時在通用組件層面保障全站的用戶體驗。

CSDN:Sea.js和Arale未來會如何發展?目標是什麼?

玉伯:從2.0開始,Sea.js的發展目標是做簡單、純粹的模塊加載器,甚至希望從2.x的某個版本開始,就不需要更新了,就能滿足絕大部分需求,能非常穩定下來,不需要再升級。

Sea.js穩定後,更多精力會放在Arale等前端基礎類庫的建設上。Sea.js名稱中的Sea,是海納百川、有容乃大的意思。Sea.js希望是一片海,通過CMD規範,可以容納各種各樣的模塊,希望能形成一個模塊的生態圈,能形成生態鏈,能促進良性循環,能讓整個前端開發界都受益。

接下來,玉伯為我們分享了他的開源感悟和前端開發之路,請看第2頁。

相關焦點

  • Ember.js和Vue.js,哪種框架更適合前端開發?
    隨著前端技術的發展,比起純JavaScript腳本,大多數開發人員更喜歡使用基於JavaScript的框架來開發Web應用,如Vue、React等。這些框架大大簡化了你的代碼,也使你能夠完
  • 細數國內外前端大牛的知乎與博客
    國內玉伯簡介玉伯(王保平),淘寶前端類庫 KISSY、前端模塊化開發框架SeaJS、前端基礎類庫Arale的創始人。2003-2006 年,中科院物理所研究生,Fortran 與 C 程式設計師,喜愛實驗模擬和數值計算。 2006-2008 年,在中科院軟體所網際網路實驗室從事項目管理軟體的研發,C# 與 Java 愛好者。
  • 開源前端框架縱橫談
    近年來隨著Web應用交互複雜度的提升,前端開發也迎來了一個高速發展的時期。除了一些老牌框架紛紛推出改動較大的升級之外,還湧現出一批新生代的開源庫和框架,推動著Web應用開發理念向越來越強調前端架構的方向發展。當下的前端技術可以說是處在一個新舊交替的過程之中,同時存在著許多不同的觀念和實踐。
  • 【知識庫】八款你不得不知的開源前端JS框架
    本文推薦了八款比較熱門和經典的Javascript 開源框架,並給出了相關學習資料,有興趣的朋友可以看看~angular.jsAngular.JS是一個開源的JavaScript框架,最適於開發客戶端的單頁面應用。
  • 適合JS 新手學習的開源項目——在 GitHub 學編程
    出發,前進 成神第一式:打好根基1.1 前端成長之路:WebHG #vol.036 Web 是一個前端入門的圖文教程,記錄了作者從 0-1 學習前端的過程。作為一個入門的圖文教程,Web 遵循了事無巨細原則,在所有的介紹中詳細講 HTML、CSS、JS 等知識點,簡單的移動端開發、Vue 等框架使用、Node.js 介紹也略有涉獵。值得一提得失,它所有的示例中代碼注釋清楚地標註了使用某個函數時你所需要注意的事項,貼心到不行。
  • 2020年的前端工程師請收下這幾個Vue.js開源框架
    vue是一套用於構建用戶界面的漸進式JavaScript框架,簡單說Vue是類似於view的前端框架。vue開發核心是關注視圖層,同時它更加容易與第三方庫結合,再者我們在現有的項目中可以直接整合一起。目前vue技術社區在英文或中文都非常豐富,社區都有很多經驗豐富的開發人員,其功能也非常豐富與使用性,屬於輕量級框架。
  • 5年前端開發經驗的我,寫了本Vue.js實戰開發,開源高清PDF下載
    Vue作為目前發展最迅速的前端框架越來越多的受到前端T程師青睞,Vue社區也是Web前端最活躍的社區之一。更多的公司在轉為Vue框架,但針對Vue優秀權威、實戰的圖書相對欠缺,梁灝著《Vue.js實戰》簡明扼要從實戰出發,結合大量實例詳實地講解Vue各種使用方法。
  • 前端高效開發必備的 js 庫梳理
    作者: 徐小夕 來源:趣談前端之前有很多人問學好前端需要學習哪些 js 庫, 主流框架應該學 vue 還是 react ? 針對這些問題, 筆者來說說自己的看法和學習總結。前端由於入行門檻低, 更新換代很快, 每年都會有大量新的框架和庫出現, 也有大量庫被淘汰(比如 JQuery, 但是學習它的設計思想很有必要). 所以我們大可不必擔心, 保持自己的學習步伐, 按需學習即可.
  • 騰訊Node.js基礎設施TSW正式開源
    經過六年的迭代與沉澱,騰訊Tencent Server Web (以下簡稱TSW)這一公司級運維組件於今日正式開源。TSW是面向WEB前端開發者,以提升問題定位效率為初衷,提供雲抓包、全息日誌和異常發現的Node.js基礎設施。
  • 前端開發為什麼要學Node.js?小白如何深入理解Node.js?
    隨著網際網路的高速發展以及市場需求推動,Node已經成為前端知識棧必備技能之一,千鋒廣州Web大前端老師也發現很多企業在招聘中也會著重考察求職者對Node的掌握程度。有人好奇從事Web前端為什麼要學習Node.js?今天千鋒廣州Web前端培訓老師就給大家詳細的分析一下。
  • 百度、餓了麼、美團專家齊聚SDCC2015,剖析前端開發核心技術
    赫門曾提出:前端每18月會難一倍。前端開發人員該如何從容應對?前端開發技術論壇力邀業界多位知名前端開發技術專家,除帶來對當前開發熱點和難點的深入剖析、實戰分享外,還將面對面與廣大前端開發者探討前端開發未來之路、應對之道。
  • 騰訊Node.js 基礎設施 Tencent Server Web 正式開源
    TSW是面向WEB前端開發者,以提升問題定位效率為初衷,提供雲抓包、全息日誌和異常發現的Node.js基礎設施。TSW每天為百億次請求提供穩定服務,廣泛應用在QQ空間、微視、微雲、QQ音樂、全民K歌、騰訊雲等三十多個重要業務當中。
  • 推薦一些 GitHub 上值得前端學習的開源實戰項目,進階必看!
    Vue.js1. vue-element-adminvue-element-admin 是一個後臺前端解決方案,它基於 vue 和 element-ui 實現。2019 年 TypeScript 將會更加普及,能夠熟練掌握 TS,並使用 TS 開發過項目,將更加成為前端開發者的優勢。
  • SDCC講師專訪:淘寶樸靈談Node.js
    本期我們採訪的講師是淘寶數據平臺產品部資深前端開發工程師 樸靈。曾經是一個專職的前端工程師,曾在SAP做Mobile Web App的研究開發,2011年期間在上海組織CNode社區的線下分享會,2012年加入淘寶的數據產品團隊專職參與Node的開發。曾在InfoQ上主持《深入淺出Node.js》專欄。
  • 前端頁面開發之Node JS初學者指南
    【IT168技術】目前,Node.js是在前端頁面開發中十分受歡迎的,它是一套用來編寫高性能網絡伺服器的JavaScript工具包,在本文中,將帶領各位初學者介紹Node JS的基本知識,要求本文的閱讀對象為有一定Javascript和其他開發語言基礎的讀者。
  • 谷歌也發布了Web前端機器學習庫,就叫deeplearn.js
    不過這還沒完,在瀏覽器上以 WebApp 的形式做模型推理甚至模型訓練也有重要的開發和應用需求。以往大家對前端機器學習庫的關注度較低,不外乎人們認為 JavaScript 運行速度低、應用範圍窄、支持前端的庫少等幾個原因。
  • 前端開發大盤點:2015最流行前端框架TOP20
    2015年已經過去了,作為一個親歷前端開發多年的開發者,目睹和見證了前端開發從最初的Javascript 語言類庫到HTML5標準定稿後帶來的Web Components 跨終端組件的快速發展。
  • 009 | 快速入門Web前端開發的正確姿勢
    入門標準很簡單,就一條:達到能參與 Web 前端實際項目的開發水平。請注意,是實際項目,這就需要了解如今的實際項目開發都用了哪些技術棧。HTML/CSS/JavaScript 這三大基礎技術棧肯定是需要掌握的,但要能參與實際項目開發,肯定還要掌握其他一些主流的框架體系。