漫談網頁設計的變化:從HTML到WordPress

前言:一個業余者的網頁設計經歷/體驗

學網頁設計大概是上大學那會兒(不到2000年)吧,記得一上手就是Dreamweaver,是學Flash的時候順帶著學的。反正“所見即所得”,也就學著玩唄。那時候的流行的方法主要是表格定位,先Photoshop做好設計,然后切換ImageReady切片,輸出HTML再用Dreamweaver打開編輯。記得當時老是會錯位,很討厭。

CSS也比較早就出現了,主要也是輔助做版式,大部分的工作還是在Dreamweaver中“所見即所得”來完成。<div>還是個比較稀罕的玩意,大部分教程中都沒有建議用<div>來定位,現在想來原因可能是當時的主流瀏覽器對<div>的支持還不完善或者服務器開銷有點大的原因吧。

服務器端開始出現PHP了,但主流還是ASP。

在QUT那幾年,因為Communication Design課程的原因,需要做Flash+PHP的交互。PHP看了一下跟編程似得,就頭大了。當時的作業其實是找同學幫忙完成的,我做Flash部分,交互都交給一個跨專業過來修課的新加坡人了(他主修計算機圖形圖像的)。這時候其實CSS+PHP的主流地位就已經奠定了,只是我還不是很有概念。

等到2012年要做動畫教學視頻庫的時候,才真正下定決心(痛定思痛)開始研究PHP,因為需要去從頭開始建一個帶數據庫交互功能的網站,純HTML肯定是不夠用的了。很頭大,但必須咬牙啃。

看了好幾個星期的幫助文檔,最后還是放棄手寫PHP,轉而借助PHP 框架來曲線救國。PHP環境的搭建選擇的是PHPNow,而框架則選擇用CodeIgniter。CI是國外比較流行的PHP框架,國內其實貌似用ThinkPHP的比較多,但我覺得ThinkPHP貌似更復雜,所以挑了個簡單點的。

來自百度百科:

CodeIgniter是一個簡單快速的PHP MVC框架,它為組織提供了足夠的自由支持,允許開發人員更迅速地工作。

自由意味著使用CodeIgniter時,您不必以某種方式命名數據庫表,也不必根據表命名模型。這使CodeIgniter成為重構遺留PHP應用程序的理想選擇,在此類遺留應用程序中,可能存在需要移植的所有奇怪的結構。

CodeIgniter不需要大量代碼,也不會要求您插入類似于PEAR的龐大的庫。它在PHP4和PHP5中表現同樣良好,允許您創建可移植的應用程序。最后,您不必使用模板引擎來創建視圖,只需沿用舊式的HTML和PHP即可。

做的時候還是滿糾結,CI寫起來跟編程也蠻像的,加上還要從頭開始理解MYSQL語句。好在之前搞過一段Maya的MEL腳本,玩Unity3D的時候又寫過一點點C#,勉強能夠跟上吧。HTML前端這時候已經進化到較少使用<table>來定位了,改為大量采用CSS+DIV結構。

2015年10月,剛剛通過Comfirmation Colloquium的我發現后續的研究可能需要用到數據庫,加上代購業務上也需要有個在線的記錄系統,所以就動念做個網站,權作練習PHP+MYSQL。一上手還真是不習慣,2008年積累的那一點點知識居然都忘光了,只好從頭開始看視頻。好在撿起來還是比新學習要快,至少可以少走很多彎路。比如現在知道了可以用set_value()函數來直接獲得表單提交的變量,而不用頻繁去get或者post

與08年的視頻教學庫相比,這次做網站完全沒有用到Dreamweaver(部分原因也是這次的網站不需要太多視覺設計的東西,簡單能用就行),所有代碼都是直接在Notepad++中寫,而且view中能用CI函數的就盡量不直接寫html代碼,比如anchor()add_row()echo $this->table->generate();等等。

網站空間上,08年的時候用的國內的“九零起航”最便宜的那款,這次選擇的是“BYET”的免費空間,反而更大更方便,沒有被墻,速度也還行。整個網站制作上花了將近2周吧,這個周期比之前還是短了很多,如果馬上要再去做一個網站,我相信應該也不會很慢。

對網頁制作相關技術/工具的分析與介紹

HTML+Browser:基礎平臺的建立

有了瀏覽器之后才有HTML。HTML是超級文本標記語言,其本質上的功能其實是網頁設計者的輸入工作,用相對較簡單的標記語言來寫HTML,然后交給瀏覽器將其翻譯成我們所見到的頁面。HTML和瀏覽器一起,起到了一個標準化的作用,不管客戶使用的是什么操作系統,只要通過標準的瀏覽器來翻譯符合HTML標準的text,就能顯示出幾乎完全一致的結果頁面。

我這里說“幾乎”,是因為早期不同瀏覽器對HTML的解釋結果會略有差異。而這種“差異”,給當時的網頁制作者帶來了一個麻煩:兼容性。HTML必須在不同瀏覽器的不同版本上測試無誤才能上線,而且對新技術的采用(比如CSS+DIV)顯需要非常的謹慎。

可以說,瀏覽器這一工具(toolkit)通過引入標準( standardization)的方式給網頁制作這一創作(creation)帶來促進(facilitation)的同時,也帶來了新的限制(limitation)(我稱這種限制為功能可見性:affordance)。

CSS:對HTML外觀的補充(supplement)

單純HTML的功能還是蠻有限的。在排版方面,HTML標記對文字的格式化基本上沒問題,但版式設計方面就很弱。早期用<table>來做其實是無奈之舉,也很受限制。對于“網頁版式”這一項creation來講,“表格化排版”這一創意路徑帶來的限制遠大于促進,雖然“切片(slicing)”這一個技術(ImageReady和DW同門的Fireworks都主打slicing功能)大大的促進了“表格化排版”,但它最終還是被“CSS+DIV”所完全取代。

“CSS+DIV”是從CSS發展而來的,CSS一開始是為了簡化HTML的格式功能(format),但配合<div>標簽就能實現幾乎完全不受限制的版式功能(layout)。

JavaScript:對HTML功能的外掛(add-on)

單純的HTML并不具備太多的交互功能,純粹是一個用來展示頁面的工具。HTML原生標簽應該只有<form>能夠有一點點交互功能吧。但隨著互聯網的發展,用戶有時候也需要在網頁上添加一些小功能,于是JavaScript被設計了出來。

來自百度百科:

JavaScript是一種直譯式腳本語言,是一種動態類型、弱類型、基于原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是在HTML網頁上使用,用來給HTML網頁增加動態功能。

在1995年時,由Netscape公司的Brendan Eich,在網景導航者瀏覽器上首次設計實現而成。因為Netscape與Sun合作,Netscape管理層希望它外觀看起來像Java,因此取名為JavaScript。

我傾向于把JS看做是HTML的外掛(add-on),它雖然被寫在HTML文檔中,但卻是被非常生硬的插入HTML代碼的,瀏覽器必須同時具備解釋HTML和解釋JS的功能,才能正確顯示網頁。相比較而言,CSS對HTML的補充更為自然,JS只能說是勉勉強強,同時也給網頁帶來了很多問題。這一toolset的命運我認為應該和“表格化排版”類似,最后會被更好的方案所取代。

PHP+MYSQL:對HTML功能的擴展(expansion)

原生HTML是靜態的(static),而PHP是動態的(dynamic)。之所以對動態網頁產生需求,是因為需要被用來展示在網頁上的內容不僅其信息量越來越大,而且還處于不斷更新的狀態。而動態頁面較之靜態頁面的最大優勢,比如新聞網頁,如果采取靜態方案,每則新聞都要手動制作一個頁面,且沒添加一個新頁面,導航頁都要進行修改。但如果采取動態方案,則可能一次性寫不超過5個PHP就能實現同樣的結果,省時省力。

來自百度百科:

PHP(超文本預處理器)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利于學習,使用廣泛,主要適用于Web開發領域。PHP獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯后代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。

PHP是在服務器端對文檔(包括.html.php文檔)進行解釋,生成針對特定終端的HTML頁面再反饋到用戶的瀏覽器。這是一個對信息進行自動化(automation)處理的過程,而原生HTML僅僅是直接發送信息。從百度百科的解釋可以看出,PHP不是第一個,也不是唯一一個用來做這項工作的語言,只是PHP最終變成了標準,笑到了最后而已。回顧當時,它的優勢在于“更快”、“更方便”。而著眼現在,它的最大優勢我認為應該是它已經成為了標準,且功能上沒有嚴重缺陷

MYSQL自然不是網頁獨有的東西,對于信息的儲存和處理,使用數據庫是最好的選擇。但原生HTML是不能處理數據庫的,這就需要PHP的幫助了。在這項工作上,PHP起到了橋(bridge)的作用。

原生PHP調用MYSQL的方式是這樣的:

$dbhost = '127.0.0.1';
$dbuser = 'mysql_user';
$dbpass = 'mysql_password';
$dbname = 'mysql_databaseName';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error with MySQL connection');
mysql_query("SET NAMES 'utf8'");
mysql_select_db($dbname);
$sql = "SELECT COUNT(*) as total FROM `FileList` WHERE `class` = 0;";
$result = mysql_query($sql) or die('MySQL query error');
while($row = mysql_fetch_array($result)){
    echo $row['name'];
}

可以看出來是直接把SQL語句寫到$sql中然后通過mysql_query()來調用,這要求使用者完全了解如何使用MYSQL才可以,且必須在執行PHP頁面時才能驗證SQL語句是否正確(當然也可以在PHPMyAdmin中驗證好語句再復制過來)。PHP從4開始提供了一些SQL函數,但依然不夠方便。

CodeIgniter:對PHP和HTML的輔助(facilitation)

CI是PHP框架,所以CI并不能實現PHP不能實現的功能,它只是讓使用者更方便的寫PHP。

CI提供輔助的方式依然是將PHP和HTML標準化(standardization)。CI文件的后綴同樣是.php,所以它其實就是PHP,只不過是按照MVC規范化之后的PHP。

來自百度百科:

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典范,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件里面,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用于映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。

這個規范來源于軟件設計領域的多年經驗積累(當然,網頁設計與軟件設計其實從根本上來說是一致的)。對于程序員出身的用戶來說,這個規范的邏輯是不言而喻的,但對于從寫HTML起步的網頁設計員(比如我自己)來說,一開始感受到不是便利,而是限制。

PS:我在開始寫MEL腳本的時候是完全沒有編程概念的,甚至覺得使用function()都是多此一舉的麻煩。直到在用C#寫Unity腳本時才感受到程序結構的重要性。可惜的是,編程的入門門檻太高,我至今還沒能摸到編程結構的門檻。主要原因也是我之前一直寫的東西都是些小的不能再小的腳本,MEL是基于Maya運行的,C#是基于Unity運行的,壓根不能算程序。我倒是希望能夠學習一門程序語言來著,可惜本科Basic都差點不及格的說。

經歷過一個熟悉過程之后,用戶才會真正體會到便捷性。比如上述PHP查詢MYSQL數據庫的語句,在CI中就變成這樣:

$this->load->database('database');

$this->db->where('name', $name);
$query = $this->get($table);
return $query->result();

而對數據庫的設置則干脆變成了專門的config文件夾下database.php中對所需參數(4個左右)的填寫。

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
        'dsn'       => '',
        'hostname' => '',   //需要填寫的參數1
        'username' => '',   //需要填寫的參數2
        'password' => '',   //需要填寫的參數3
        'database' => '',   //需要填寫的參數4
        'dbdriver' => 'mysql',
        'dbprefix' => '',
        'pconnect' => FALSE,
        'db_debug' => (ENVIRONMENT !== 'production'),
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array(),
        'save_queries' => TRUE
);

對比CI中的SQL查詢語句和原生的SQL查詢語句,不管是可讀性和便捷性上都有很大的提升。至少,讓我這個“菜鳥”也不至于畏難到下不去手。

CI雖然便捷,但其實還是需要一個相對較長的學習周期的,且對于業余者而言,它還是太復雜了。比如,如果完全沒有PHP或者MYSQL的基礎,是不可能用CI做出具備哪怕是稍微復雜一點功能的網站的。所以,以上(包括CI)都是專業工具(proffesional toolkit)。

WordPress/PrestaShop

對于特定用途的網頁,其實還有更簡單的制作方法。比如WordPress之于個人博客,再比如PrestaShop之于獨立電商平臺。我將這些工具稱為模板化創作工具

模板化創作工具其實已經可以被看作是一個應用軟件(Application)了,用戶可以完全不用接觸底層代碼(代碼并不一定被封裝起來或者被編譯過),而直接用“所見即所得”的方式來完成創作過程。

比如WordPress,將下載包解壓上傳到網站空間,訪問域名就可以開始設置,首先選擇“語言”,然后配置數據庫信息(4個參數),最后設置站點基本信息(5個參數),這個個人博客就可以直接使用了。對于業余者來說,頂多再到主題庫去挑選一個自己喜歡的外觀主題模板,讓自己的博客顯得與眾不同。

PrestaShop甚至不需要用戶自己擁有網站空間,其在線版本與WordPress的設置過程類似:填入最基本最必須的信息,點擊確認,就可以使用了。

當然,博客的精髓在于文章,電商平臺的精髓在于商品,這兩項都不是模板能夠提供給用戶的,需要用戶自己去創作(寫作/添加商品信息)。

模板化創作可以被集成為一項服務,從而進一步減少用戶在內容創作之外的勞動,同時產生規模效應。WordPress再進一步集成就成了新浪博客,PrestaShop再進一步集成就是淘寶或者微店,這都是大眾非常熟悉的產品。

從創意生產的角度看網頁制作的變化

網頁剛誕生的時候,其實是程序員的禁臠,普通人很難掌握,甚至都接觸不到。瀏覽器的出現第一次讓普通人能夠接觸到網頁(雖然還不能,但至少可以)。然后,在瀏覽器+HTML這個最根本的框架下,網頁的功能性和視覺性被層出不窮的新技術和新工具所強化和擴展。

在較早的時期,雖然“業余創作”這一需求還未出現,“專業創作”同樣需要更好更新的工具來完成工作,這種環境對業余創作者是不利的,因為他們只能選擇專業工具來完成其創作,故而不得不付出與職業者同等的代價才能進行其創作,同時他們又不太能像職業者一樣從其創作中獲得回報(物質上的回報幾乎為0,精神上的回報也僅只是自我滿足感而已),甚至還要被迫與職業者同臺競爭。等到“業余創作”的需求出現并普及以后,創作工具才逐漸出現分化,業余創作工具被獨立出來,其要求和特征逐漸同專業創作工具區分開,這才是有利于業余創作者的環境。

對于網頁制作來說,HTML和Browser是基礎,PHP、MYSQL、JS甚至包括CI在內都是專業工具,只有WordPress和PrstaShop屬于業余工具。CI在專業工具中似乎可以起到承前啟后的作用,它能夠引導初學者逐漸學習PHP的基本規范,但無需掌握所有的PHP語法、函數及技巧。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,818評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,185評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,656評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,647評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,446評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,951評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,041評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,189評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,718評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,800評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,419評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,420評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,755評論 2 371

推薦閱讀更多精彩內容

  • Swift版本點擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 25,468評論 7 249
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,603評論 25 707
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,151評論 4 61
  • 昨天起就開始斷斷續續飄起小雪,一點一點小雪花輕飄飄的在天空飛舞。許久才慢悠悠落地,很是可愛。 睡到中午才起床。記得...
    指針妹妹zz閱讀 287評論 0 0
  • 1. 今天你學到的還記得什么? 1.1 一定要為自己制定一個計劃,這樣方向感就會更明確,對于時間的管理能力也可以加...
    三木七閱讀 219評論 0 0