1.借船與借力
三國時期,曹操率大軍想要征服東吳,孫權、劉備聯合抗曹,「草船借箭」即**於此,意即運用智謀,憑藉他人的人力或財力來實現自己的目標。我們來看看這個故事的幾個關鍵環節。
為了籌集十萬支箭,諸葛亮找到魯肅。諸葛亮說:「這件事要請你幫我的忙。希望你能借給我20只船,每只船上30個軍士,船要用青布慢子遮起來,還要一千多個草把子,排在船兩邊。」第三天四更時候,諸葛亮邀請魯肅一起,把船用繩索連起來向曹操對岸開去。那天江上大霧迷漫,對面都看不見人。當船靠近曹軍水寨時,諸葛亮命船一字兒擺開,叫士兵擂鼓吶喊。曹操以為對方來進攻,又因霧大怕中埋伏,就派六千名弓箭手朝江中放箭,雨點般的箭紛紛射在草把子上。過了一會,諸葛亮又命船掉過頭來,讓另一面受箭。
太陽出來了,霧要散了,諸葛亮令船趕緊往回開。這時船的兩邊草把子上密密麻麻地插滿了箭,每只船上至少
五、六千支,總共超過了十萬支。魯肅把借箭的經過告訴周瑜時,周瑜感嘆地說:「諸葛亮神機妙算,我不如他。」
2.順勢而為
「明者因時而變,知者隨事而製」這個用典,出自漢代桓寬《鹽鐵論》卷二之枕邊第十二篇。漢宣帝的中興之道,得益於諸多方面,根本的一條就是「明者因時而變,知者隨事而製」,了解民情,把握趨勢,與時俱進,開放而謀實。同樣,作為開發團隊,在網際網路競爭時代,也要幹很多事。有些事很順利,有些卻坎坎坷坷的,有些根本就幹不成。細想一下,事情的成敗原因可以歸結為乙個字,勢,順勢而為,如水推舟,事半功倍;逆勢為之,則逆水行舟,艱難險阻,功敗垂成。
勢是什麼,就是一種趨勢,一種方向,一種潮流。順勢而為,關鍵在於乙個「勢」字,要有一雙慧眼,判明大勢進退;要有一顆名亮亮的新,悟達通透。做到「順勢而為,乘勢而上」。
3.框架開發的「借力」與「順勢」
基礎的框架開發並不難,但是要想做得優雅、健壯並不容易,要做出乙個好的框架往往會花費大量的時間、人力財力。衡量乙個框架是否優秀,往往有這些考量因素。
(1)清晰的**庫,簡單易用。**復用是把乙個功能寫成乙個模組,以便當再次需要相同功能的時候,可以直接使用,而不用重新開發。舉個例子,假如你的**需要驗證碼,你就可以把驗證碼這個功能單獨提取出來以便復用。通常**復用是通過類與物件來實現的,這也是物件導向程式設計與面向過程程式設計最主要的區別之一。以響應式網頁設計為例,實現起來並不困難,但是要讓它在所有的目標裝置上都正常運作會有一點小棘手。而框架可以讓這一工作變得簡單。利用框架,你可以花最少的力氣建立響應式且符合標準的**,一切都很簡單並且具有一致性。還有很多好處是顯而易見的,比如說簡單快速,以及在不同的裝置之間的一致性等等。也就是說,框架最大的「勢」就是簡單易用,即使只掌握少量的web知識,你也可以毫無障礙的使用它們。
(2)粉絲使用過程的「倒逼」,強大的框架創新體系,營造良好的社群生態環境。「倒逼」是一種被動行為,是「迫使」、「反推」等詞的公升級版,該詞強化了反常規、逆向促動之義。時下「倒逼」正在成為美談,並曾經入選年度十大流行詞。各行各業的問題動輒倒逼,似乎「倒逼則靈」。在許多領域,「倒逼」的確是這樣大顯身手的。作為一種開源力量,「倒逼」未嘗不是一種正向力量!堅實的社群基礎和積累,以及豐富的模板系統,往往可以為框架樹立良好的口碑,形成一種「引力場」。尤其是需要有大量忠實的社群粉絲,也是框架實力的最好支援。作為社群**,也要站在運營者角度和使用者角度雙方面來考慮上諸多問題。在使用者角度上完善**產品,去滿足使用者的核心需求,幫助使用者解決問題。
(3)簡單的學習曲線,與相關應用整合更加容易。學習曲線的定義為「在一定時間內獲得的技能或知識的速率」,又稱練習曲線(practice curves)。人們為了知道學習程序中的現象和進步的快慢的詳情,作為以後努力的指標,應用統計圖的方法作一條線,把它表示出來。它源於「二戰」時期的飛機工業,當產量上公升時,生產每架飛機的勞動時間會極大地下降。隨後的研究表明,在許多行業都存在這種現象。同樣,在框架應用中,我們需要的不僅僅是模板,還更想要陳述式的可重用的模板框架。尤其需要能夠建立可擴充套件的網際網路應用。
(4)文件支援與引導系統。寫文件不容易同時也是需要花費一些時間的。作為潛在的使用者,我們第一次接觸開源專案,很可能就是通過閱讀readme檔案。我們需要確保它很棒並且包含了有用的資訊。以tiny框架為例,我們始終認為文件是能為使用者做的最好的事了!文件不僅能夠節省使用者大量的時間,也可以讓使用者確信,我們的確是把他們當做上帝,而且,我們是一幫有血有肉的人,不是乙個產生**的機器。
(5)向後相容,同時把握大勢,對主流技術發展有乙個準確的判斷。關於軟體開發的一件很令人生氣的事,就是當你公升級乙個庫但是數百個測試失敗了。更讓我生氣的就是我還要重寫我一半的基礎**,因為有人在沒有任何警告的前提下決定打破公共的api。因此,向前看齊,同時致力於維護向後相容性,也是我們重點把握的方向。以tiny框架為例,我們常常會關注,使用這個專案有幾個月了嗎?是否覺得它還是不完整的?是否希望api在下乙個版本會徹底地修改?是否在要求最多並且很老的專案中也能穩定安全的使用?當考慮到向後相容時,也能有乙個很好的跟蹤記錄。
(6)可延續的技術支援。有些人可能關心許可證,但是真正使用框架或庫的人很關心的是有保障的後續服務和支援。所以真正可用的框架包含了框架的可用及有保障的支援和服務,這樣才能讓客戶在使用過程中更加放心。
鄭和下西洋,沒有人關心他使用的是什麼船;諸葛亮借箭,也沒有人關心他使用的是誰的船。不過,他們都很輕鬆的完成了自己的目的。造船下海,還是借船下海,關鍵還是在於順勢而為,把握大勢!
。本例涉及的**和框架資料,將會在社群分享。《自己動手寫框架》成員qq群:228977971,讓我們一起動手,了解開源框架的奧秘!
第4波活動:寫書評,送精美開發圖書!
《開源框架那點事兒15》 借船下海還是造船下海
1.借船與借力 三國時期,曹操率大軍想要征服東吳,孫權 劉備聯合抗曹,草船借箭 即 於此,意即運用智謀,憑藉他人的人力或財力來實現自己的目標。我們來看看這個故事的幾個關鍵環節。為了籌集十萬支箭,諸葛亮找到魯肅。諸葛亮說 這件事要請你幫我的忙。希望你能借給我20只船,每只船上30個軍士,船要用青布慢子...
《開源框架那些事兒21》 巧借力與借巧力
同樣做前端ui,為什麼有人花了一點力氣,就可以做好?而有的人費盡全力,仍然錯誤百出?我們可以先看看幾個故事。故事1 巧借力,烏鴉也可以吃核桃 有乙個盛產核桃的村子,每年秋末冬初,成群的烏鴉總會來到這裡,到果園裡撿拾那些被果農們遺落的核桃。核桃仁雖然美味,但是外殼那麼堅硬,烏鴉怎麼才能吃到呢?原來烏鴉...
《開源框架那些事兒21》 巧借力與借巧力
相同做前端ui。為什麼有人花了一點力氣。就能夠做好?而有的人費盡全力,仍然錯誤百出?我們能夠先看看幾個故事。故事1 巧借力。烏鴉也能夠吃核桃 有乙個盛產核桃的村子,每年秋末冬初。成群的烏鴉總會來到這裡,到果園裡撿拾那些被果農們遺落的核桃。核桃仁儘管美味。可是外殼那麼堅硬。烏鴉怎麼才幹吃到呢?原來烏鴉...