第一部分:認識Framework
最近網頁設計正夯,很多朋友來問我,架設網頁的問題,因為想要做電商,但是不知道怎麼開始,所以利用機會,分享一下我的經驗。
想要做網頁設計,或是電商平台,第一件要做的事是,選擇一個 Framework(框架) 。通常我講完Framework這個字的時候,我得到的回應都是一臉黑人問號,到底什麼是Framework?
什麼是 Framework?
所謂的 Framework(框架),根據維基百科的說法,通常指的是為了實現某個業界標準或完成特定基本任務的軟體組件規範,也指為了實現某個軟體組件規範時,提供規範所要求之基礎功能的軟體產品,簡單說就是幫助你完成任務的一些工具及規範。
這裡我們用堆沙堡例子來,解釋什麼是Framework。來到沙灘參加堆沙堡比賽,為了做出完美的城堡,我必須把四個柱子做出來,這時候問題就來了,要怎麼做?
最傳統的做法,就是徒手刻,完全用自己的感覺,做出四支一模一樣的柱子。但這種方式想也知道很累,而且完全用手憑感覺,如果不是專業的高手,真的很難做出一模一樣的柱子。
比較好的方法是用水桶做。先用水桶當作是模子做出形狀一樣的圓柱體,在堆起來就好,不但快,而且形狀會一模一樣。
這個水桶就是個簡單的Framework,他在堆沙堡的過程中,擔任工具及規範的角色。工具讓你做得更快更輕鬆,而規範的地方讓你做出來的柱子都是一樣大的。
做網頁也是一樣的道理,在我們設計網頁的時候,如果全部自己手刻一定相當費時,所以我們可以用別人寫好的Framework加一些調整,做出自己喜歡的樣子,同時可使用在網頁的各個角落。
Framework的重要性
Framework的重要性,除了剛剛說的,加快你的開發速度,最重要的其實是規範。我們回到剛剛的沙灘,當我今天覺得一個人做沙堡小打小鬧的,我想要組個團隊,做一個超大的沙堡,這時候就會需要夥伴的加入。
夥伴的加入,應該會讓建造速度更快才對,結果發現,每個人都用自己的方法做柱子,做出來的都不一樣,也兜不起來,然後開始吵誰做的比較剛好,誰做的太大了,然後城堡還沒做出來,團隊散的跟沙一樣。
這時水桶又跳出來解危了。我們大家都用同樣的水桶,用同樣的大小的沙塊來做柱子,大家都一樣,沒得吵。
如果今天有新人加入團隊,只要把水桶給他,他也能很快做出一樣的柱子,不用先失敗個好幾次,還要一直麻煩老手看這樣對不對。
在網頁的世界,我們也常常需要向別人問元件如何寫,功能怎麼做,也常常需要找助手或夥伴,如果你沒有使用一套大家都熟悉的Framework,那你遇到不知道該怎麼解決的問題,沒人能幫你。想找人幫忙,還要自己全部教一遍,非常浪費時間。
第二部分:常見的Framework有哪些,以網頁為案例
目前,網頁上的Web Framework非常多,但是必須網頁設計的架構來選擇。這邊我們依照架構列出一些比較常用的Framework:
前端版面設計為主
前端SPA(Single Page Application)
SSR (Server Side Rendering)
更多Web Framework陸續增加中....
【資料引用資訊】
google關鍵字:什麼是網頁框架(Web Framework) @Soarogo 網頁設計免費教學
第三部分:Framework如何誕生,以MVC框架為案例
从HTML开始
静态HTML站
我们需要做的是一个网站,一个页面不够用,至少要有五个:
- 首页
- 列表页
- 内容页
- 关于页
- 联系方式页
可复用PHP页面
这五个页面有一些内容是一样的,比如说页面头部(header),足部(footer)。
我们就把这些内容抽出来,这样就有了可复用的页面。
我们就把这些内容抽出来,这样就有了可复用的页面。
这就是PHP静态网站。
内容管理系统(CMS)
我们要将现在这五个页面拓展成博客网站,实现以下功能:
- 可以自由地添加文章
- 文章存在数据库中
- 可以对文章进行分类管理
结构说明
内容管理系统(CMS)不同于简单地复用PHP页面,它有较复杂的结构:
- 列表页、内容页是可复用的,就将其变成模板文件
- 增加一个管理页面,能读取我们的输入,再替换模板文件,生成最后的页面
- 增加对数据库的增删改查功能
网站的结构变成了三层MVC,这就是内容管理器(CMS)。
新的需求
现在我们不光想做博客网站,还想做购物网站,工具类网站。对于这些网站,本质上仍属于内容管理,都能用内容管理系统(CMS)来实现。
艰难的二选一
我们要实现新的需求,可以有以下两种做法:
- 根据需求从头到尾重新写一个内容管理系统(CMS)
- 使用已有的内容管理系统(CMS)做定制开发
第一种做法:如果自己写一个内容管理系统(CMS),一切从头开始,费时费力;
第二种做法:使用现成的内容管理系统(CMS)来进行定制开发,还需要了解这个CMS的源码,同样很麻烦。
第二种做法:使用现成的内容管理系统(CMS)来进行定制开发,还需要了解这个CMS的源码,同样很麻烦。
框架的诞生
能否有一种简化的内容管理系统(CMS),去掉所有的模板,界面内容,仅保留对于数据库的交互,和自动生成页等易于拓展的基础功能?
关于不严谨的说明
以上就是不够严谨的框架说明。
既然不严谨,为什么还要列出来呢?
既然不严谨,为什么还要列出来呢?
因为框架的抽象不同于其他抽象概念,它并非某个人或机构提出来的有标准的东西,而是随着互联网发展,被不断出现的新框架不断地被更新出来的。
所以对于像框架这种没有标准的概念,只能是不断地通过不严谨的说法来进行修正。
【資料引用資訊】
google關鍵字:原来如此!一分钟了解什么是框架
第三部分:使用Framework注意事項
6 個使用「軟體框架」(Framework)前,你該自問的事情
首先解釋何謂「軟體框架」。如果你寫程式,從頭到尾不用軟體框架,一切都是自己來,如同你用「夯土法」蓋大樓,每一吋都是用手工打造成的。如果使用軟體框架,猶如你向鋼鐵廠購買房屋的「鋼樑」,建造速度不但快很多,也比「夯土法」結實。所以用「軟體框架」寫程式,就是在自己程式內,使用別人事先寫好的「函式庫(Library)」或「類別庫(Class Library)」,站在巨人的肩膀上挑戰世界屋脊一樣,較為輕鬆省力。常見的軟體框架有:微軟的 .NET Framework、JavaScript 裡的 jQuery、PHP 裡的 Zend Framework、Java 裡的 Spring、Ruby 裡的 Rail、Python 裡的 Django...詳細的軟體框架列表,可以參考本文末端的連結。
這六個你該自問的事情包括:
1. 你到底想從這個軟體框架,得到什麼功能:切記不要因為「流行」而使用,要為「需要」而使用。
2. 我是否需要軟體框架,讓整個團隊的程式碼架構,有個共通的基本結構(又稱「維持一致性」):就像電器可以隨便做,插頭規格可得統一!這「插頭規格」,就如同「軟體架構」一樣,會成為每個人自由發揮之餘,需要共同遵循的一致性架構。
3. 該軟體框架的使用說明是否豐富:主站應該有非常詳細、從安裝一直到參考手冊的文件。
4. 該軟體框架是否常常更新?是否有很多程式師使用它:超過兩年以上沒更新,或者到官方論壇一看,最近一次發文是一個月以上的軟體框架最好不要用。
5. 該軟體框架是否能執行於我要的環境裡:舉例來說,你可能會希望 JavaScript 的 jQuery,能執行於 IE、Firefox、Chrome、Safari 四大瀏覽器。
6. 是否有任何需要考慮的「政治因素」,來決定我要使用的軟體框架:如某公司就是要你使用 PHP 裡的 Zend,因為他們的舊系統通通使用這個軟體框架。此時你就不能一意孤行,硬要用自己喜歡的軟體框架。
2. 我是否需要軟體框架,讓整個團隊的程式碼架構,有個共通的基本結構(又稱「維持一致性」):就像電器可以隨便做,插頭規格可得統一!這「插頭規格」,就如同「軟體架構」一樣,會成為每個人自由發揮之餘,需要共同遵循的一致性架構。
3. 該軟體框架的使用說明是否豐富:主站應該有非常詳細、從安裝一直到參考手冊的文件。
4. 該軟體框架是否常常更新?是否有很多程式師使用它:超過兩年以上沒更新,或者到官方論壇一看,最近一次發文是一個月以上的軟體框架最好不要用。
5. 該軟體框架是否能執行於我要的環境裡:舉例來說,你可能會希望 JavaScript 的 jQuery,能執行於 IE、Firefox、Chrome、Safari 四大瀏覽器。
6. 是否有任何需要考慮的「政治因素」,來決定我要使用的軟體框架:如某公司就是要你使用 PHP 裡的 Zend,因為他們的舊系統通通使用這個軟體框架。此時你就不能一意孤行,硬要用自己喜歡的軟體框架。
【資料引用資訊】
google關鍵字:如何學習程式框架
沒有留言:
張貼留言