尽可能写"友好"的"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 相关文章推荐
定义JavaScript二维数组采用定义数组的数组来实现
Dec 09 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
Dec 30 Javascript
jQuery实现折叠、展开的菜单组效果代码
Sep 16 Javascript
最全的Javascript编码规范(推荐)
Jun 22 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
Aug 17 Javascript
Jquery树插件zTree实现菜单树
Jan 24 Javascript
JS实现给json数组动态赋值的方法示例
Mar 19 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
Dec 28 Javascript
Vue中render方法的使用详解
Jan 26 Javascript
值得收藏的八个常用的js正则表达式
Oct 19 Javascript
vue实现双向绑定和依赖收集遇到的坑
Nov 29 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
Mar 24 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
用Socket发送电子邮件
2006/10/09 PHP
Linux下将excel数据导入到mssql数据库中的方法
2010/02/08 PHP
PHP单例模式详细介绍
2015/07/01 PHP
Code:findPosX 和 findPosY
2006/12/20 Javascript
用javascript实现的激活输入框后隐藏初始内容
2007/06/29 Javascript
nodejs npm install全局安装和本地安装的区别
2014/06/05 NodeJs
Js实现滚动变色的文字效果
2014/06/16 Javascript
JS动态显示表格上下frame的方法
2015/03/31 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
Vue 2.0 服务端渲染入门介绍
2017/03/29 Javascript
详解vue-cli中配置sass
2017/06/21 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
vue拖拽排序插件vuedraggable使用方法详解
2020/08/21 Javascript
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
vue打开其他项目页面并传入数据详解
2020/11/25 Vue.js
python操作MongoDB基础知识
2013/11/01 Python
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
详解python中TCP协议中的粘包问题
2019/03/22 Python
详解python编译器和解释器的区别
2019/06/24 Python
PyTorch中clone()、detach()及相关扩展详解
2020/12/09 Python
HTML5文档结构标签
2017/04/21 HTML / CSS
澳大利亚牛仔裤商店:Just Jeans
2016/10/13 全球购物
Gap工厂店:Gap Factory
2017/11/02 全球购物
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
Linux如何压缩可执行文件
2013/10/21 面试题
接待员岗位责任制
2014/02/10 职场文书
护士求职自荐信范文
2014/03/19 职场文书
信息工作经验交流材料
2014/05/28 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python
总结Pyinstaller打包的高级用法
2021/06/28 Python