尽可能写"友好"的"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 相关文章推荐
新浪刚打开页面出来的全屏广告代码
Apr 02 Javascript
JQuery实现动态表格点击按钮表格增加一行
Aug 24 Javascript
jquery滚动到顶部底部代码
Apr 20 Javascript
javascript入门之window对象【新手必看】
Nov 22 Javascript
使用微信小程序开发前端【快速入门】
Dec 05 Javascript
JS实现根据密码长度显示安全条功能
Mar 08 Javascript
JS运动特效之同时运动实现方法分析
Jan 24 Javascript
新手快速上手webpack4打包工具的使用详解
Jan 28 Javascript
使用JS判断页面是首次被加载还是刷新
May 26 Javascript
Node对CommonJS的模块规范
Nov 06 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
Feb 12 Javascript
微信小程序中的上拉、下拉菜单功能
Mar 13 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
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
php cookie用户登录的详解及实例代码
2017/01/03 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
xtree.js 代码
2007/03/13 Javascript
Javascript String对象扩展HTML编码和解码的方法
2009/06/02 Javascript
js数字输入框(包括最大值最小值限制和四舍五入)
2009/11/24 Javascript
js 判断脚本加载完毕的代码
2011/07/13 Javascript
深入了解javascript中的prototype与继承
2013/04/14 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
javascript正则表达式使用replace()替换手机号的方法
2015/01/19 Javascript
JS实用的动画弹出层效果实例
2015/05/05 Javascript
jquery的幻灯片图片切换效果代码分享
2015/09/07 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
使用plupload自定义参数实现多文件上传
2016/07/19 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
javascript深拷贝和浅拷贝详解
2017/02/14 Javascript
angular十大常见问题
2017/03/07 Javascript
前端自动化开发之Node.js的环境搭建教程
2017/04/01 Javascript
ionic grid(栅格)九宫格制作详解
2018/06/30 Javascript
vscode中vue-cli项目es-lint的配置方法
2018/07/30 Javascript
webpack结合express实现自动刷新的方法
2019/05/07 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
jQuery实现简单飞机大战
2020/07/05 jQuery
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
vue router-link 默认a标签去除下划线的实现
2020/11/06 Javascript
python实现Decorator模式实例代码
2018/02/09 Python
Python 实现递归法解决迷宫问题的示例代码
2020/01/12 Python
python实现画图工具
2020/08/27 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
园林施工员岗位职责
2013/12/11 职场文书
产品销售员岗位职责
2013/12/18 职场文书
协议书样本
2014/04/23 职场文书
导游词之南京夫子庙
2019/12/09 职场文书
python3 sqlite3限制条件查询的操作
2021/04/07 Python
ORACLE中dbms_output.put_line输出问题的解决过程
2022/06/28 Oracle