实例:尽可能写友好的Javascript代码


Posted in Javascript onOctober 09, 2006

在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 相关文章推荐
JavaScript 函数式编程的原理
Oct 16 Javascript
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
Jan 20 Javascript
js 本地预览的简单实现方法
Feb 18 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
Jun 10 Javascript
基于jQuery实现Div窗口震动特效代码-代码简单
Aug 28 Javascript
详解JavaScript基于面向对象之继承
Dec 13 Javascript
jQuery插件编写步骤详解
Jun 03 Javascript
js生成随机数(指定范围)的实例代码
Jul 10 Javascript
浅谈JS函数定义方式的区别
Oct 30 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
Sep 29 Javascript
angular将html代码输出为内容的实例
Sep 30 Javascript
Openlayers实现测量功能
Sep 25 Javascript
splice slice区别
Oct 09 #Javascript
获取DOM对象的几种扩展及简写
Oct 09 #Javascript
js几个不错的函数 $$()
Oct 09 #Javascript
使用Javascript和DOM Interfaces来处理HTML
Oct 09 #Javascript
激活 ActiveX 控件
Oct 09 #Javascript
自动更新作用
Oct 08 #Javascript
许愿墙中用到的函数
Oct 07 #Javascript
You might like
PHPMailer 中文使用说明小结
2010/01/22 PHP
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
PHP基于单例模式实现的数据库操作基类
2016/01/15 PHP
Zend Framework教程之Application和Bootstrap用法详解
2016/03/10 PHP
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
2011/06/02 Javascript
基于jquery的时间段实现代码
2012/08/02 Javascript
js实现div的切换特效上一个下一个
2014/02/11 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
JS模拟实现方法重载示例
2016/08/03 Javascript
AngularJs bootstrap详解及示例代码
2016/09/01 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
jQuery生成假加载动画效果
2016/12/01 Javascript
JS产生随机数的用法小结
2016/12/10 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
2017/03/23 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
layui数据表格重载实现往后台传参
2019/11/15 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
Django如何配置mysql数据库
2018/05/04 Python
全网首秀之Pycharm十大实用技巧(推荐)
2020/04/27 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
Canvas高级路径操作之拖拽对象的实现
2019/08/05 HTML / CSS
拾金不昧的表扬信
2014/01/16 职场文书
行政助理工作职责范本
2014/03/04 职场文书
学校开学标语
2014/10/06 职场文书
资产运营委托书范本
2014/10/16 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
Python+Appium新手教程
2021/04/17 Python
详解Python内置模块Collections
2022/03/22 Python
Python if else条件语句形式详解
2022/03/24 Python