`
hideto
  • 浏览: 2682306 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

正确使用Prototype,节省额外的100K

阅读更多
Part I: http://thinkweb2.com/projects/prototype-checklist/
1,错:
document.getElementById('foo')

对:
$('foo')


2,错:
var woot = document.getElementById('bar').value
var woot = $('bar').value

对:
var woot = $F('bar')


3,错:
$('footer').style.height = '100px';
$('footer').style.background = '#ffc';

对:
$('footer').setStyle({
  height: '100px',
  background: '#ffc'
})


4,错:
$('coolestWidgetEver').innerHTML = 'some nifty content'

对:
$('coolestWidgetEver').update('some nifty content')
$('coolestWidgetEver').update('some nifty content').addClassName('highlight').next().hide()


5,错:
new Ajax.Request('ninja.php?weapon1=foo&weapon2=bar')

对:
new Ajax.Request('ninja.php', {
  parameters: {
    weapon1: 'foo',
    weapon2: 'bar'
  }
})


6,错:
new Ajax.Request('blah.php', {
  method: 'POST',
  asynchronous: true,
  contentType: 'application/x-www-form-urlencoded',
  encoding: 'UTF-8',
})

对:
new Ajax.Request('blah.php')


7,错:
Event.observe('myContainer', 'click', doSomeMagic)

对:
$('myContainer').observe('click', doSomeMagic)


8,错:
$$('div.hidden').each(function(el) {
  el.show();
})

对:
$$('div.hidden').invoke('show')


9,错:
$$('div.collapsed').each(function(el) {
  el.observe('click', expand);
})

对:
$$('div.collapsed').invoke('observe', 'click', expand)


10,错:
$$('input.date').invoke('observe', 'focus', onFocus);
$$('input.date').invoke('observe', 'blur', onBlur);

对:
$$('input.date')
  .invoke('observe', 'focus', onFocus)
    .invoke('observe', 'blur', onBlur)


11,错:
$('productTable').innerHTMl =
  $('productTable').innerHTML +
  '<tr><td>' + productId + ' '
  + productName + '</td></tr><tr><td>'
  + productId + ' ' + productPrice +
  '</td></tr>'

对:
var rowTemplate = new Template('<tr><td>#{id} #{name</td></tr><tr><td>#{id} #{price}</td></tr>');
$('productTable').insert(
  rowTemplate.evaluate({
    id: productId,
    name: productName,
    price: productPrice
  }))
)


Part II: http://thinkweb2.com/projects/prototype/?p=3
1,轻松监听键盘事件
$('myInput').observe('keyup', function(e) {
  if (e.keyCode == Event.KEY_TAB)
    doSomethingCoolWhenTabIsPressed();
})


2,不需要事件capturing
$('productInfo').observe('click', displayProductInfo, false); // 'false' could be skipped
$('productInfo').observe('click', displayProductInfo);


3,聪明的insert()
new Insertion.Bottom('blogEntry',
  new Template('<div><h2>#{name}</h2><p>#{content}</p></div>')
    .evaluate({
      name: blogEntry.name,
      content: blogEntry.content
    })
);
// Insertion class is deprecated - it's recommended to use Element's insert method:

$('blogEntry').insert(new Template('<div><h2>#{name}</h2><p>#{content}</p></div>')
  .evaluate({
    name: blogEntry.name,
    content: blogEntry.content
  }), 'bottom'); // 'bottom' can be skipped

$('blogEntry').insert(new Template('<div><h2>#{name}</h2><p>#{content}</p></div>')
  .evaluate{(
    name: blogEntry.name,
    content: blogEntry.content
  }));


4,Form提交
$('register').observe('submit', function(e) {
  Event.stop(e);
  $(this).request();
})

$('register').observe('submit', function(e) {
  Event.stop(e);
  new Ajax.Request($(this).readAttribute('action', {
    parameters: Form.serializeElements($(this).getInputs('', 'email'))
  })
})

$('register').observe('submit', function(e) {
  Event.stop(e);
  new Ajax.Request(this.readAttribute('action'), {
    parameters: Form.serializeElements($(this).getElements()
      .reject(function(el) {return el.hasAtrribute('multiple')})
    );
  })
})

$('register').observe('submit', function(e) {
  Event.stop(e);
  new Ajax.Request($(this).readAttribute('action', {
    parameters: Form.serializeElements($$('#register input:not([multiple])'))
  })
})


Enjoy prototyping!
分享到:
评论

相关推荐

    使用prototype简化Ajax操作

    在"使用prototype简化Ajax操作"这个主题中,我们将深入探讨Prototype库如何使Ajax变得更加简单易用。 首先,Prototype为Ajax操作提供了一个统一的接口——`Ajax`对象。这个对象下包含了一系列方法,如`Request`、`...

    Prototype1.5.1使用手册

    《Prototype 1.5.1使用手册》是针对JavaScript库Prototype的一个详细指南,该库是Web开发中的一个强大工具,尤其在处理DOM操作、Ajax交互和函数增强方面表现卓越。本手册以.chm(Compiled Help Manual)格式提供,...

    prototype的使用

    然而,过度使用或不恰当的使用`prototype`可能会导致性能问题,因为每次访问`prototype`上的属性时都需要查找原型链。 总的来说,`prototype`是JavaScript中实现面向对象编程的关键部分,它帮助我们理解和实现对象...

    使用Prototype框架.pdfprototype源码分析.doc

    例解Prototype框架.doc 第21章__使用Prototype框架.pdf Prototype源码注释版.pdf proprototype源码分析.doc totype_1.3_源码解读.txt

    prototype使用文档

    《prototype使用文档》 在JavaScript的世界里,Prototype和Script.aculo.us是两个非常重要的库,它们极大地提升了开发者的效率,并且为网页应用带来了丰富的交互效果。Prototype是一个强大的JavaScript框架,而...

    prototype文件以及使用说明.rar

    通过在构造函数的`prototype`上添加方法,所有实例都可以共享这些方法,而不是每个实例都有一份副本,这样可以节省内存。例如: ```javascript Person.prototype.sayHello = function() { console.log('Hello');...

    prototype介绍和使用方法

    《prototype介绍和使用方法》 在JavaScript开发中,Prototype是一个重要的库,由Sam Stephenson创建,主要用于提升Web应用程序的交互性和用户体验,特别是在实现Web 2.0特性时。Prototype库的核心理念是通过提供一...

    prototype.js文件使用和讲解

    接下来,你可以开始使用`prototype.js`提供的功能。例如,要使用它的DOM查找功能,可以这样做: ```javascript var element = $$('div.someClass')[0]; // 查找第一个class为'someClass'的div ``` ### 3. `...

    prototype1.6.0prototype1.6.0prototype1.6.0prototype1.6.0

    这个页面可能展示了如何在实际项目中集成和使用Prototype库,或者包含了一系列用例和示例代码,供学习者参考。 "jspage_file"可能是一个文件夹,里面包含与"jsPage.html"相关的资源,如CSS样式表、图像或者其他...

    Prototype_1.4.doc,Prototype_1.5.1.chm 中文版

    Prototype是JavaScript库的一个早期且广泛使用的版本,它提供了许多实用的功能,如对象扩展、事件处理、Ajax操作等,极大地简化了JavaScript开发。"Prototype_1.4.doc"可能是一个关于Prototype 1.4版本的文档,以....

    prototype帮助中文文档

    Prototype 是一个广泛使用的JavaScript库,它为浏览器端的开发提供了许多强大的功能,特别是对于处理DOM操作、Ajax交互以及对象扩展等方面。这个“prototype帮助中文文档”涵盖了Prototype库的核心概念、方法和最佳...

    Prototype-1.6.0 中文版\英文版\Prototype.js

    Prototype.js 是一个广泛使用的JavaScript库,它为JavaScript语言增加了许多实用的功能,使开发Web应用程序变得更加简单。这个压缩包包含了Prototype的1.6.0版本,包括中文版和英文版的文档,以及源代码文件。 首先...

    非常有用的prototype实例

    这个例子展示了如何使用`prototype`来实现方法的共享,避免了在每个实例中重复定义相同的方法,节省了内存。 接下来,`prototype`还涉及到原型链。当试图访问一个对象的属性时,JavaScript会首先检查该对象自身是否...

    开源JS包Prototype使用指南

    ### 开源JS包Prototype使用指南 #### 1.1 Prototype是什么? Prototype是一个由Sam Stephenson编写的JavaScript库,它提供了一套简洁、高效且易于使用的API来简化Web应用开发过程中的许多常见任务。该库专注于简化...

    prototype-1.6.0.3.js+prototype1.4 、1.5中文手册+prototype1.6英文手册

    这个压缩包包含了Prototype库的多个版本的手册和源代码文件,便于开发者理解和使用。 首先,我们来看`prototype-1.6.0.3.js`,这是Prototype库的1.6.0.3版本的源代码文件。在这个版本中,Prototype提供了许多实用的...

    Prototype.js 161JS文件和中文说明书.rar

    欢迎使用 Prototype API 参考手册。在左侧的区域中列出了主要的目录,当你点击其中任一目录时, 详细的内容将显示在右方区域中。 我们尽力为你提供最新的、叙述清楚的、样例丰富的文档,最终的目标是:在你阅读这...

    prototype

    Prototype是一个广泛使用的JavaScript框架,它扩展了JavaScript的核心功能,简化DOM操作,提供了一些实用的工具函数,以及强大的面向对象特性。Prototype库的主要特点包括: 1. **DOM助手(DOM Manipulation)**:...

    prototype中文帮助文档

    Prototype.js 是一个广泛使用的JavaScript库,它为JavaScript编程提供了许多实用的功能,极大地简化了DOM操作、事件处理、Ajax交互以及对象扩展等任务。这个压缩包包含的“prototype.js”文件就是Prototype.js的核心...

    prototype_PrototypeJS1.6_

    它通过扩展JavaScript的`Object.prototype`,使得所有JavaScript对象都能直接使用一些方法,如`extend()`、`clone()`等,来实现对象的复制和扩展。 2. **DOM操作**:PrototypeJS提供了一系列便捷的DOM操作方法,如`...

    Prototype中文帮助文档

    Prototype 是一个广泛使用的JavaScript库,它为Web开发提供了强大的工具和功能。这个库的主要目标是简化JavaScript编程,通过提供面向对象的语法、强大的DOM操作以及Ajax功能,来提升开发者的工作效率。 ### 1. ...

Global site tag (gtag.js) - Google Analytics