尽可能写"友好"的"Javascript"代码


Posted in Javascript onJanuary 09, 2007

在Search Engine的robot搜索时,针对的type,text/html此类“文本”的友好度是最高的(现阶段text/xml除外),而text/javascript此类的友好度不理想,如果robot还要判断DHTML代码的话,那这个复杂度也是较高,而且划不来

因此,在DHTML编程时,如果要提升代码的友好度。采用的方法,较好的方法是“尽可能是把DHTML的代码简化成没有HTML的代码”。这句话如何理解?

e.g:
一个javascript menu。
方法一、采用常规的编程方法:
<script type="text/javascript">
var navi_menu = neverDHTMLmenu();
/* addItem method
 * @ pid 
 * @ id
 * @ text
 * @ href
 */
navi_menu.addItem("0","1","home","http://www.never-online.net");
navi_menu.addItem("0","2","blog","http://blog.never-online.net");
navi_menu.addItem("0","3","music","http://www.never-online.net/music");
navi_menu.init("navigator_Container");
</script>

二、采用对Search Engine较友好的编程方法

<script type="text/javascript">  
onload = function() {  
  var config = {  
    container: document.getElementById("navigator_Container");  
    // and more configuration code  
  }  
  var navi_menu = new neverCssDHTMLMenu(config);  
  navi_menu.init();  
</script>  <div id="navigator_Container" class="navigator_menu">  
  <ul>  
    <li><a href="http://www.never-online.net">home</a></li>  
    <li><a href="http://blog.never-online.net">blog</a></li>  
    <li><a href="http://www.never-online.net/music">music</a></li>  
    <!-- more... -->  
  </ul>  
<div> 

从方法一和方法二来比较,方法一把一些HTML封装到了neverDHTMLmenu()里,但这样做并没有实际的好处,虽然我们依然可以把CSS给到这个类里。
方法二中可以看到有很多好处,比如,可以将view与program分离,可以实现客户端的MVC。换个角度说,可以提高开发效率。

可能有些朋友会问,除了menu,还有哪些程序可以按上述的方法分离呢?
上面也提到了,一般与页面交互较多的,会产生大量的HTML的,会影响Search Engine的robot的,都可以采用这种方法,当然了,这些只是讨论对Search Engine的友好度,所以,任何代码都必须由实际情况而定。

也或者有朋友问,这样为何会提高开发效率?
比如,美工做好模板后,(假设此美工会一些相关的HTML编写)那么按照xhtml标准,(如上例如示)
假设我要把原本的home改成Default page,那么美工得和程序员沟通,说要改这个menu的字,沟通时间在开发中也会多了。因此,在开发进度上,这个时间要算进去的。假设要改模板了,那么还得沟通。再或者假如原来用js生成的HTML是table做成的menu,要改版了,那么这个程序还得改写。不利于维护...

这个方法建议大家可以试试,意思主要就是JS负责业务实现,而视图则仍然交由HTML来处理。

Javascript 相关文章推荐
showModalDialog 和 showModelessDialog
Jan 22 Javascript
FileUpload 控件 禁止手动输入或粘贴的实现代码
Apr 07 Javascript
jQuery动画animate方法使用介绍
May 06 Javascript
javascript字符串循环匹配实例分析
Jul 17 Javascript
js实现前端分页页码管理
Jan 06 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
Feb 11 Javascript
react实现菜单权限控制的方法
Dec 11 Javascript
详解node.js 下载图片的 2 种方式
Mar 02 Javascript
async/await地狱该如何避免详解
May 10 Javascript
Vuex 使用 v-model 配合 state的方法
Nov 13 Javascript
推荐一个基于Node.js的表单验证库
Feb 15 Javascript
js利用拖放实现添加删除
Aug 27 Javascript
添加到收藏夹代码(兼容几乎所有的浏览器)
Jan 09 #Javascript
Web版彷 Visual Studio 2003 颜色选择器
Jan 09 #Javascript
一个对于js this关键字的问题
Jan 09 #Javascript
JS控件autocomplete 0.11演示及下载 1月5日已更新
Jan 09 #Javascript
根据分辩率调用不同的CSS.
Jan 08 #Javascript
如何用javascript判断录入的日期是否合法
Jan 08 #Javascript
[IE&amp;FireFox兼容]JS对select操作
Jan 07 #Javascript
You might like
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
php扩展ZF――Validate扩展
2008/01/10 PHP
PHP截取指定图片大小的方法
2014/12/10 PHP
PHP安装memcached扩展笔记
2015/05/28 PHP
全面解读PHP的Yii框架中的日志功能
2016/03/17 PHP
php微信开发自定义菜单
2016/08/27 PHP
php上传excel表格并获取数据
2017/04/27 PHP
jQuery 数据缓存模块进化史详细介绍
2012/11/19 Javascript
js arguments对象应用介绍
2012/11/28 Javascript
JS分页效果示例
2013/10/11 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
前端轻量级MVC框架CanJS详解
2014/09/26 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
JavaScript驾驭网页-DOM
2016/03/24 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
详解js的异步编程技术的方法
2017/02/09 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
python模块导入的方法
2019/10/24 Python
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
护理学毕业生求职信
2013/11/14 职场文书
最新党员思想汇报
2014/01/01 职场文书
前台文员个人求职信范文
2014/01/05 职场文书
退休感言
2014/01/28 职场文书
班风学风建设方案
2014/05/06 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers