Unobtrusive的Web开发(2)
作者:March 来源:三月的蚁穴 发布时间:2007-11-23 13:13:00
为什么要Unobtrusive
首先,这不是必须的
大部分开发者都没有在用
一些比较值得一提的例子:
Google Maps (maps.google.com)
TWERQ (twerq.com)
Marlboro (marlboro.com)
Unobtrusive开发的优势
代码更佳简洁,并且易于维护
易读和易懂意味着更容易修改
修改全部的样式仅仅需要修改CSS文件
JavaScript能够很容易的修改
HTML的修改变得更加保险
能够提高可访问性(accessibility)
可访问性意味着所有人都可以访问你的内容
你不能揣测所有人
但你可以肯定的是所有浏览器都能够处理HTML
大约10%的访问者是不能够使用JavaScript功能(www.w3schools.com/browsers/browsers_stats.asp)
有些人使用的是屏幕阅读器,有些人无法使用鼠标
有利于搜索引擎优化
搜索爬虫无法解释CSS和JavaScript
搜索爬虫只会顺着
<a>
继续爬行JavaScript和Flash中的内容无法被搜索到
更多的内容,更结构化的HTML,使得页面相关性更高
不过有时,不得不使用JavaScript
当然,离了JavaScript,JavaScript游戏肯定无法运行
很多Web统计服务的脚本依赖于JavaScript
Google Ads需要JavaScript
对于Unobtrusive,只要尽量做到就好了
如何进行Unobtrusive的开发
不要去问别人,直接去做
从没有JavaScript开始入手
使用带有链接和表单的纯HTML
使用CSS来实现hover和滚动效果
使用HTTP的功能(比如用”Location”头来转向)
重视链接
页面上的所有链接,离了JavaScript都应该能够正常工作
这也意味着不使用
javascript:
伪协议甚至不要使用
<a href="#">
如果有链接一定要使用JavaScript,那么就用JavaScript来把链接添加到页面中
为CSS和JavaScript提供hook
给一个页面中唯一的元素加上ID
给重复使用的元素加上class
使用列表等其他有语义的结构
使用可靠的技术
从纯HTML和CSS开始
动态的为链接和表单添加高级交互功能
同时通过HTML和JSON/XML两种方式提供内容
为有或没有JavaScript的情况提供额外的CSS
为有JavaScript和无JavaScript的用户提供不同的应用
我的看法
Unobtrusive应该是对Web Standards的进一步深化,也可以理解为Web Standards的一个方面。但是,这种开发方式目前仍然是一种比较理想化的方式,也许在个人,或者小团队的开发中可以贯彻的很好。但是到了大型项目中,严格的执行未必是一种高效的方式。尽管代码的易维护性显而易见,但是大部分项目的前端代码不一定有维护(或者大量维护)的需求,而项目要求的更多是能够在最短时间内完成。
然而,Unobtrusive绝对是一个具有指导性的Web前端开发方式,实现得越接近,无论是对用户,还是对开发者,甚至对计算机,都会更有好处。


猜你喜欢
- 首先呢我去安装了一个那个pytorch,然后导入一下发现:连numpy都找不到,于是我表示很生气重新安装,它说安装过了,地址是balabal
- Python算法的分类对葡萄酒数据集进行测试,由于数据集是多分类且数据的样本分布不平衡,所以直接对数据测试,效果不理想。所以使用SMOTE过
- Python3 线程中常用的两个模块为:_threadthreading(推荐使用)使用Thread类创建import threadingf
- 平时在写asp代码的时候有很多重复的内容要写,麻烦的要命,比如在收集表单提交的数据时,特别是表单的输入域比较多时,要不断写好多的reques
- 我们在上传大文件时,可能会由于服务器的原因导致文件上传失败,文件过大时由于服务器的配置或响应事件过长导致上传文件失败,这时候我们可以将一个大
- 众所周知IE6不支持position:fixed,这个bug与IE6的双倍margin和不支持PNG透明等bug一样臭名昭著。前些天我做自己
- 目标打包Python selenium 自动化脚本(如下run.py文件)为exe执行文件,使之可以直接在未安装python环境的windo
- 首先介绍下怎么发现的吧, 线上的项目日志是通过 logging 模块打到 syslog 里, 跑了一段时间后发现 syslog 的 UDP
- pandas中对DataFrame筛选数据的方法有很多的,以后会后续进行补充,这里只整理遇到错误的情况。1.使用布尔型DataFrame对数
- df.sort_index()实现按索引排序,默认以从小到大的升序方式排列,如希望按降序排列,传入ascending = Falseimpo
- Doug Bowman,Google的Visual Design Lead离职了,一封带有感 * 彩的离职信惹发了大家不少的讨论。甚至还有人用
- 今天我们分享的主要目的就是通过在 Python 中使用命令行和配置文件来提高代码的效率Let's go!我们以机器学习当中的调参过程
- Python-apply(lambda x: )使用def instant_order_deal(plat, special_product
- 最近项目需要抓包功能,并且抓包后要对数据包进行存库并分析。抓包想使用tcpdump来完成,但是tcpdump抓包之后只能保存为文件,我需要将
- 首先要导入JDBC的jar包;接下来,代码:Class.forName(xxx.xx.xx)返回的是一个类Class.forName(xxx
- 有人把Go比作21世纪的C语言,第一是因为Go语言设计简单,第二,21世纪最重要的就是并行程序设计,而Go从语言层面就支持了并行。gorou
- 导语:目前点评“2008年10佳改版网站”也许为时尚早,但2008年毕竟已经过去了9个多月,周四又同时有Twitter和FriendFeed
- 导语:排版是一门艺术,也是一门技巧。我们每天都能在报纸,书籍等各种媒介上看到排版,或精美,或丑陋。如何能在准确传递信息的同时,又能排出精美的
- 第一部分:UI界面设计界面效果图如下:ui文件(可拉动控件自行创建一个button和text)<?xml version="
- 进行深度学习时,对图像进行预处理的过程是非常重要的,使用pytorch或者TensorFlow时需要对图像进行预处理以及展示来观看处理效果,