無標題文檔

Web 标准的观点语录

记得上次我的拙作 《谁会在意什么 Web 标准》 ,当 这篇文章放到蓝色经典论坛 的时候。吸引了很多对于标准有各自不同看法的人拍砖。

请允许我摘录几篇具有代表性的回复。是他们让我对于标准又有了一个新的思考,在这里感谢他们(注,观点不分先后,按照回复时间排序):

catest

同意文章部分的观点,「Web 标准其实是一种思想」这是肯定的。如果只是
一个很简单的页面,流量不大,也不奢求搜索引擎的收录,改动也不频繁,
那大可不必唯标准是从。

作者有的话只说对了一部分:「用户要的是效果、功能以及内容」。没错,
这些都是用户想要的,但用户的体验不仅仅是这些。一个表格构造的庞大
门户首页,让用户在等待中失去耐心,当用户使用移动终端登陆网站,却发
现难以阅读(不要说现在手机上网的人太少),在网站林立的互联网,在没
有绝对强势优势的网站,任何使用户感到不爽的体验都会致使用户的倒戈,
这样的代价小么?

不要说 Web 标准难,难是因为改变固有的思路难,知难而上是基本的职业
素质,当用的人多了,浏览器厂商妥协了,很多事就不是那么难了。

W3CSS

如果你书写的代码本身就符合标准~ 那么就不可能有所谓的「因为标准而标
准」 的问题。(不知道你能不能理解我的意思)

标准本身没有坏处,那么何乐而不为?

至于有朋友说到:「不是理想中的修改一下 CSS 就可以了,往往还要修改
html 文件"」

因为 html 和 css 都不是完美的~ 包括浏览器,而我们想要达到的目的太
理想化了。

soni

谁会在意呢?90% 的用户不会在意你的网站符合什么狗屁标准,通过了什么
验证。他们关心的内容,有没有他们感兴趣的信息,能不能完成他们访问你
的站点的目的。对他们来说,唯一的好处就是符合标准的网站访问起来一般
都很快。

在意是否符合标准的是网站的设计者。符合标准的网站,能够实现更多的功
能,能够更美观,制作也更快。修改更容易。对于统一网站的整体风格更容
易控制。

而且代码可重用,创建一个可重用的布局表格几乎是不可能的,而可重用的
CSS 布局代码则可以。

另外,对于一个符合标准的网页进行 JS 编码要容易很多,网络资源更加丰
富。

而且,我更喜欢打开记事本简单的编辑几下 CSS,而不是用我的破机器打开
Dreamweaver 来拉动表格。

leitu_studio

深入的了解表现、结构、行为,你就不会有这种想法了!合理的 css 在维护
起来还是很方便的...

在国外,可能手持设备用的比较多一些,所以国外的标准考虑的用户群体也
很多,标准是国外人制定的。

如果你想用这种技术去做东西,就要转换一下思想,脱离表格布局的思想。

感到麻烦的罪魁祸首还是浏览器厂商,如果他们都标准化,就不会有 hack 
了.....

更新,感谢 ChinaUnix 上 jhsea3do 兄弟的回复。

jhsea3do

我认为没有多少客户会去在意什么web标准,但绝对不能把这个范畴扩大到所
有人。

估计你是被IE的那些BUG折腾到没有意志了才说出这些气话。就我感觉,有一个
web 标准存在,并且开发人员遵循标准开发,可以减少很多不必要的开销,并
最大的保持程序的兼容性。

实际上,在 firefox 下制作的 html 在s afari, opera 下的表现基本上是一
致的,最后为了兼容市场占有率最大的 ie,不得不作些 hack。

正是 linux, mac 等桌面系统的存在,才没有让 windows 垄断桌面系统市场,
你的名字叫 AMD,我想你也不喜欢 INTEL 独行其道。

虽然我是一个宗教狂,但我讨厌 ie 不是因为 windows,而是形形色色的网页
病毒。

我发动身边的人用非 ie 浏览器来避免上网中毒,但是收效微弱,原因是 taobao,
网银不支持。

中国人在 web 标准的推广方面贡献太少,还不如台湾。

最后我想说 web 标准 存在的意义是对各大浏览器厂商进行约束,减少兼容性所
带来的麻烦。

w3c 的标准出了这么多年了,的确有考虑不周到的地方,比如 form 下的控件,
但这个标准带来的好处远比麻烦要多。

JavaScript 数组的 uniq 方法

请给 Array 本地对象增加一个原型方法,它的用途是删除数组条目中重复的条目(可能有多个),
返回值是一个包含被删除的重复条目的新数组。

Lazy 兄弟给出了它自己的解法,而我个人认为这样的解法算法上还有需要改进的地方。正如回复中 fdcn 兄弟所说,如果将数组:[1, 2, 3, 3, null, null, 2] 带入 Lazy 兄的函数,那么按照循环判断条件就会退出,导致数组之后的元素就不会判断了。

下面给出我的解决方法:

Array.prototype.uniq = function(){
    var tmp    = new Array;
    var length = this.length;

    for(var i = 0; i < length; i++) {
        var push = true;
        var item = this[i];

        for(var j = i + 1; j < length; j++) {
            if(this[j] == item) {
                push = false;
            }
        }

        if(push == true) {
            tmp.push(item)
        }
    }

    return tmp;
}

Lazy 兄弟也说到每次循环都将重新计算 length 会有开销,那么我将 legth 定义为一个常量,原数组为「只读」,那么 length 相对不变,就不要重复计算了。然后再定义一个数组往里面扔「垃圾」。

数组嵌套循环并不遍历原数组的每一个元素,仅判断剩余没有出现的值。最后获得一个是否 push 的布尔值,然后跳出循环判断是否插入。

最后,欢迎大家交流讨论。


更新,和 Lazy 兄弟讨论后,我发现此函数写得也不是非常的严谨。因为它没有修改原函数的元素,于是我又作了如下的修改:

Array.prototype.uniq = function(){
    var tmp    = new Array;
    var length = this.length;

    for(var i = 0; i < length; i++) {
        var push = true;
        var item = this[i];

        for(var j = i + 1; j < length; j++) {
            if(this[j] == item) {
                push = false;
            }
        }

        if(push) {
            tmp.push(item)
        }
    }

    this.length = tmp.length;
    for (var i = 0; i < tmp.length; i++) {
        this[i] = tmp[i];
    }

    return tmp;
}

但这样又出现了一个问题,就是重复赋值会不会增加时间长度。因为我是在取出来了以后再做一次循环重新赋值给原数组。按照我这样的写法实现已经没有问题,但是效率可能需要进一步的调整。

继续改进ing


不好意思,再次更新。根据上述的问题,我重新优化了下算法,并将 Lazy 兄弟的「思想」加了进来,于是就有如下的代码了:

Array.prototype.uniq = function(){
    var i = 0, j = 0;
    while (undefined !== this[i]){
        j = i + 1;
        while(undefined !== this[j]){
            if (this[i] === this[j]) {
               this.splice(j, 1);
            }
            ++j;
        }

        ++i;
    }

    return this;
}

是的,非常的短,不过却能完成题目所给的要求了。这个相对我以前的函数,有一个好处就是没有生成另外的一个数组。而且也没有像第二个函数这样的重复赋值。

嗯,我想目前这个样子已经能满足题目的要求了。

Vim/Cscope 入门指导

Cscope 确实能给开发带来不少的方便。这篇篇幅不长的 Vim/Cscope 入门指导 可以让大家很快熟悉怎么使用 Vim 编辑器 调用 Cscope。

由于翻译的时间比较短(加上本人水平不高又很懒),有错误的地方请兄弟们不吝指出。废话不多说,下面是一些下载链接:

HTML 版本 PDF 版本 ZIP 打包(PDF 版本)

另,需要学习 Vim 的朋友可以看下上次翻译的 清单式学习 VI 编辑器 文档。

-- UPDATE--

2008-09-24 更改下载链接

我的照片

您好!我叫「明城」,八零后、码农、宁波佬,现居杭州。除了这里,欢迎您通过 GitHubTwitterInstagram 了解我的更多动态。

本博客原名 Gracecode.com 、现更名 「無標題文檔」「精于心、简于形」以此践行极简、务实的理念。 在工作之外的个人生活方面,我崇尚简单、追求平淡,偶尔也带着一些可能不被所有人理解的幽默感。

同时为避免争议和麻烦,在此郑重声明:本站所有内容为非 AI 生成,所有观点及立场均仅代表我个人,不代表任何我所就职或关联的公司与组织。

如果您想联系我,可以发我邮件 `echo bWluZ2NoZW5nQG91dGxvb2suY29tCg== | base64 -d`

分类

搜索

文章