Ree's Movements

Moving all the time, capture it.

开发网站小知识

从软件工程的角度来说, 要做一个网站应该分为五个过程:

需求分析:

需求可以分为功能性和非功能性需求两种,对于确定功能性的需求得步骤主要是:

  1. 确定你的网站的主题,即做这个网站的目的是什么。
  2. 定位目标用户,谁将会来访问您的网站?业务上的客户?PC用户还是手机用户?男的女的?老的少的?亲戚还是朋友?自己还是别人?尽量列出所有可能来访问您网站的群体,并对其进行合理分类。
  3. 根据定位到的用户,分析每个用户在您网站上的行为,这时网站的功能需求也就浮现出来了。比如,客户希望展示在网站中了解到您产品的相关信息,所以这个网站中就有了展示产品这样一个功能。或者对于个人网站,我希望能够将我最近的一些想法写成博客并让所有人都可以看见并且评论, 那么就有了写博客,显示博客,允许评论等功能。如果不确定用户想要什么,抓几个亲戚朋友啥的来问问,访谈、问卷调查啥的都可以。
  4. 将所有的客户需求填写在表格中,并根据功能的重要性对其进行优先级划分,因为可能会出现矛盾的需求,或者需求过多,你根本无法支付得起那么多功能,这时只能选择放弃一些没有必要得功能。
  5. 参考竞争对手的网站(如果有的话),然后对上述表格进行调整与改进。

非功能性的需求有一下几方面:

  1. 界面的美观还是非常重要的,如果您希望更多的用户来访问并停留在您的网站上,那么请给予他们更友好的用户体验;
  2. 对于网站而言,兼容性还是非常重要额,操作系统、浏览器、屏幕大小的不同都可能会使得显示得结果有很大得区别;
  3. SEO优化,您一定也希望您的网站能够在搜索引擎中得第一页就得到显示吧;
  4. 网站得可靠性、稳定性、可维护性、可监控等等。

网站设计:

设计要考虑得问题很多,网站的结构、栏目的设置、网站的风格、颜色搭配、版面布局、文字图片的运用、用户的交互、开发难度等等。要做好这点,对网站设计与技术实现等相关的了解是很有必要的。 一般情况下,根据需求分析所得出来的需求表格,您就做的便是收集素材,然后用photoshop 等画图软件设计出每一个可能的页面。 如果要求不是太高的话,可以尽量将每个页面都设计成静态页面,即网页基本上只由html 和css 组成, 这样的网站开发是比较容易的。

网站的开发

有了设计图之后,就可以开始写代码了。对于非技术人员,听到这个词可能会有些激动吧。 但是该从何处着手呢?这里先讲讲网站工作的过程: 首先,我们会在电脑的中打开浏览器,然后在地址栏中输入一个网址(比如 http://reeonce.github.io/2013/10/ ),回车后我们会发现浏览器中就显示了目标页面。那么这期间到底发生了什么呢?

  1. 网址的结构其实分为四个部分, 比如上述例子, http 指的是超文本传输协议(Hypertext transfer Protocol),即我们的这个请求的类型。目前大部分网页服务器都是只能接受http请求的,而部分网站为了追求更高的安全性会选择使用https协议,如Google、Facebook、Yahoo、Github的大部分网站。中间的部分reeonce.wordpress.com为域名,事实上它在最前面隐藏了默认的”www.”, 合起来标定了网络上的某个服务器主机,这个主机也可以理解为一台普通的计算机(可以是真的一台计算机,也可以是虚拟机)。之后又省略了另一部分,应该为”:80″,表示请求发送到的是服务器的80端口。最后的”/2013/10/”是服务器中的一个路径,表明所请求资源所在服务器的具体位置。
  2. 当这样一个请求被发送后,浏览器会先通过“reeonce.github.io”发送给DNS服务器,这样以获得服务器的ip地址(66.155.11.238)。由于每个连接在互联网上的结点都是通过一个唯一的ip地址来标识的,而域名只是作为这个ip地址的一个别名而存在的,因为人们记这样一个有字面意思的域名是比记那么一串无规律的数字来得容易得多的。当某台DNS服务器挂了或者繁忙的时候,可以通过更换电脑的DNS服务器来加快打开网页的速度。
  3. 浏览器获得服务器的ip之后,即作为User Agent的身份将请求通过http协议来发送给服务器。服务器接收到这个网络数据包之后,会通过端口号来选择分配到那个进程(程序)中,比如wordpress(以前的,现在已迁至Nginx)中配备80端口的程序应该是apache http server。Apache http server就是一个接收并响应Http请求的服务器软件,它通过执行php、C、perl等服务器端的脚本程序或者直接从文件中读取到html、css、js内容,然后将其返回给客户端的User Agent (在这里即是浏览器)。
  4. 浏览器通过html、css、js文件绘制出用户所观察到的界面。一般情况下,html中包含了网页的元素,如文本、按钮、输入框、图片、链接等元素,css (Cascading Style Sheets)则是用来控制这些元素的样式用的,包括元素的大小、位置、背景、布局、颜色等。Js作为客户端的脚本,使得网页更加丰富且更具交互性了。由于各个浏览器对html、css和js的支持并不是完全相同的,就导致了浏览器的兼容性问题,而操作系统的对字体和颜色的支持是不相同的,导致了系统的兼容性问题,而不同设备的屏幕大小、分辨率也不一样,也就导致了设备兼容性问题。

通过网站的工作原理,可以知道开发网站所涉及的语言包括:客户端的html、css,这是所有网站都具有的,如果你希望使网站更绚丽,由于flash大势已去,js是你的不二选择;服务器端,如果你有比较大量的数据,你可能会用到数据库管理系统来管理它们,目前用得比较多的有MySQL、Oracle、MS SQL Server,那么你需要了解SQL以进行数据库的相关操作。同时,你还需要一门服务器端的脚本语言来负责一些服务器端的逻辑,如操作数据库、设置cookie、检测登录、收集用户反馈等等,这个语言可以是php、jsp、asp、python、ruby、node.js。而这些语言运行的服务器软件(一般简称服务器)是不同的,Apache作为目前最受欢迎的网页服务器,支持php、perl、python,增加tomcat后能支持java;Nginx作为较新的一款高性能的服务器,越来越受大公司们的青睐,支持php、python、ruby、perl;iis作为微软的web服务器软件,由于其不是开源的,并不如前面两款受人追捧,主要还是对ASP.NET的支持。同时,apache和nginx主要都是运行在linux系统上,而iis则只能运行在windows server中。

因此,你想要在自己的个人电脑中开发网站的话,则需要先配环境。选择网页的服务器,不管你的电脑装的是Windows、OS X或者各个版本的Linux,都能找到这些软件相应的版本,选定服务器开发语言和数据库,安装语言的SDK包和数据库管理程序,然后在服务器软件的配置文件中修改相应的配置就完成了。

万事俱备,接下来就是大展身手的时候,开始你网站的开发吧。google、w3schools、stack overflow是开发人员最大的帮手,在这些地方你几乎能找到所有开发网站所可能遇到的问题。对于比较小的网站,功能性需求的实现是比较容易的,这时很有可能耗费大量时间在非功能性的需求中。

网站测试

对于线上的产品,任何的问题都可能被放大,而崩溃更是极差的用户体验。要保证网站的质量,还是多测测吧。

上线及维护

经过足够多的测试,网站差不多可以上线了。需要的工作是先找台配备固定ip的服务器主机,这里建议购买linode的vps,最低的一个月只要$20,性价比非常高。同样的配置好环境之后就可以将网站安装到线上,然后在浏览器中通过ip即可访问到您的网站啦。再去买个域名,现在域名也便宜,.com、.cn的域名也就50左右一年,然后在购买域名的网站上将其对应到服务器的ip,经过几十分钟后即可通过域名来访问你的网站了。算一算,一年的费用将是1400人民币左右,算很便宜了。