漫谈网页设计的变化:从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阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,279评论 7 249
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,423评论 25 707
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,016评论 4 62
  • 昨天起就开始断断续续飘起小雪,一点一点小雪花轻飘飘的在天空飞舞。许久才慢悠悠落地,很是可爱。 睡到中午才起床。记得...
    指针妹妹zz阅读 270评论 0 0
  • 1. 今天你学到的还记得什么? 1.1 一定要为自己制定一个计划,这样方向感就会更明确,对于时间的管理能力也可以加...
    三木七阅读 215评论 0 0