所经历的 JS 框架使用及迁移(一)
由于 Prototype 的出现,比 jQuery 早,早期网站使用了 JS 框架 Prototype,后来由于一些快速开发的需要,同时启用了 jQuery ,jQuery 的简洁灵活,功能强大,让人爱不释手。因此在代码中,就有了两份代码并存。再到现在,由于前端缩身、效率等的需要,需要将 Prototype 移除,所以就开始了一个比较繁琐的迁移过程。所幸的是,Prototype 的依赖还不是特别的深。
Prototype 和 jQuery 都作为优秀的 javascript 框架,在实现的内容上,核心库本身,都封装了 Ajax 操作、抽象了浏览器兼容问题、DOM 操作,方便地使用 CSS 选择器功能、事件处理等,并无太多不同。重要的区别在于实现的形式和由此带来的使用方式上。Prototype 的重点是面向对象,扩展了 javascript 本身,为功能更加强大而开发。jQuery 则专为方便使用、本身高效而开发,全闭包、链式操作、隐式迭代,强大的事件绑定,短小精悍。从业界来说,jQuery 的使用占据了4成以上的份额。
下面来看 Prototype 到 jQuery 的迁移所做的工作。
由于需要将 Prototype 与 jQuery 并存,所以 $ 由 Prototype 所使用,而 jQuery 的 $ 被重新赋值为:$j。
var $j=jQuery.noConflict();
将 JS 代码从 Prototype 向 jQuery 迁移主要有如下操作:
A、DOM 操作部分
取元素:
Prototype:
$ 的用法是 $("id") 或者是 $(htmlelement), CSS 选择器 用 $$,并且返回数组。
相对应的,在 jQuery 中
$j 的用法是 $j("#id") 或者是 $j(htmlelement),另外 $j 就同时支持 css 选择器。
这个要注意的地方,在于 Prototype 在取 id 成功之后,返回的是 HTML 元素对象。而 jQuery 返回的是 jQuery 对象,在 Firebug 中 console.log 出来之后象数组,所以如果要改变对象的属性,比如 innerHTML,可以用 jQuery 提供的 html()方法,而不能用 innerHTML,要想取得 HTML 元素对象,得用 get(0) 去取,如:
$j("#id").get(0) 跟 Prototype 的 $("id") 效果一样。
$j("#id").html() 和 $j("#id").get(0).innerHTML 效果一样。 如果用 $j("#id").innerHTML ,只是凭空为 jQuery 对象增加了一个属性。
由此,也带来迁移中一个容易出错的地方。
看如下两段代码:
Prototype 版:
var no = $("no");
console.log(no);
if(!no)
{
console.log("no not exists!");
}
jQuery 版:
var no = $j("#no");
console.log(no);
if(!no || no.length == 0)
{
console.log("no not exists!");
}
由于返回值的不同,对元素是否存的检测也是不同的。
下面是在chrome 控制台上的测试输出。
Prototype 版:
var no = $("no");
undefined
console.log(!no);
true
undefined
jQuery 版:
var no = $j("#no");
undefined
console.log(!no);
false
undefined
分享到:
相关推荐
近年来,移动设备的兴起,特别是智能手机和平板电脑的广泛使用,促使应用程序进一步向移动平台迁移,形成了多样化的移动应用市场。 ### 计算机语言的发展历程 计算机语言的发展同样经历了从机器语言到高级语言的...
ABP框架的目标之一是加速开发过程,通过提供一系列现成的工具和服务简化常见的开发任务,使开发者能够专注于业务逻辑而非繁琐的基础架构搭建。 **2. 遵循DDD原则** ABP框架遵循领域驱动设计(Domain-Driven Design...
Querious Migration是一个基于JavaScript的数据库迁移框架,主要用于管理和执行数据库结构的变化,以保持数据库的一致性和可维护性。在软件开发过程中,随着项目需求的不断变化,数据库的结构也可能会经历一系列的...
美容美发行业也不例外,通过采用现代信息技术,尤其是一个强大的后端框架——Django,这个行业正在经历着变革。Django作为一个高级的Python Web框架,它鼓励快速开发和干净、实用的设计,且遵循DRY(Don't Repeat ...
Java EE框架项目的一大特点就是其可移植性,由于其遵循Java EE标准,应用程序可以在符合相应规范的应用服务器上无缝迁移。这种平台的中立性大大减少了应用程序的维护成本,并为企业的IT策略提供了更大的灵活性。 ...
特别是对于即将毕业的大学生来说,完成一个基于现代技术栈的Web项目,如校园新闻网站,不仅能够锻炼自身的技术能力,还能够将其作为一种学习成果展示,这在求职过程中是非常有价值的经历。 本项目是一个典型的B/S...
Vue.js是一个渐进式JavaScript框架,主要用于构建用户界面,它的设计哲学是incrementally adoptable,即允许开发者从核心功能开始,逐步使用更丰富的功能。 MySQL是一种开放源码的关系型数据库管理系统(RDBMS),...
Vue.js是一个流行的前端JavaScript框架,自2021年起其发展生态经历了重大的更新和扩张。标题“VueConf CN 2021.pdf”暗示了这一年中国社区围绕Vue.js所举办的大会,而描述“2021vue发展生态”直接指向了2021年度Vue....
Vue.js是一种构建用户界面的渐进式JavaScript框架,核心库只关注视图层,它易于上手,且在单页面应用(SPA)开发中有极佳的表现。将SpringBoot和Vue.js结合,可以构建出一个既拥有强大后端逻辑处理能力,又具备现代...
使用Webpacker时,我们可以创建一个entry point,如 `app/javascript/packs/application.js`,并在此处导入所需的模块。例如: ```javascript import 'bootstrap/dist/js/bootstrap'; import './controllers'; ...
"ShoppingListApp:ShoppingListApp 存储库从 googlecode 迁移" 这个标题表明这是一个关于名为 "ShoppingListApp" 的应用程序的代码存储库,它最近经历了从 Google Code 平台到另一个平台的迁移。Google Code 是一个...
综上所述,《Tango with Django 1.9》是一本为Python和Django初学者量身打造的入门指南,它不仅仅是教会读者如何使用Django框架,还融入了实际的项目开发经验,指导读者如何在实际开发中应用所学知识。同时,这本书...
Ember.js是一个流行的JavaScript框架,用于构建Web应用。在Ember的发展过程中,其架构经历了多次改进,其中之一就是从传统的Classic模式向Pod结构的转变。Pods是Ember的一个设计模式,旨在提高代码组织和可维护性。...
Vue.js是一种流行的前端JavaScript框架,它允许开发者使用声明式的编程方式来构建用户界面,其数据驱动的特点使得状态管理变得简单直观。而BootstrapVue是基于Bootstrap 4的Vue.js组件库,它为开发者提供了一套丰富...
移动互联网时代的前端开发正经历着迅猛的发展,其中,小程序成为推动这一发展的关键力量。为了应对小程序研发中的挑战,mpvue应运而生,它不仅将Vue.js的优势带到了小程序开发领域,还致力于提高开发效率和代码复用...
Vue.js是近年来备受推崇的轻量级前端JavaScript框架,它以其响应式数据绑定、组件化开发和易于上手的特点,为开发者提供了高效构建用户界面的工具。 首先,Vue.js的核心概念包括虚拟DOM、指令系统和组件化。虚拟DOM...
它不仅展示了如何使用ssm框架和Vue.js技术构建一个完整的物流信息管理系统,还提供了实际的部署流程和环境配置,有助于学习者更好地理解理论与实践的结合。 基于ssm的物流信息管理系统的设计与实现,不仅提高了物流...
Angular与AngularJS是两款由Google开发的前端JavaScript框架,它们在多个方面有所不同,从设计哲学、核心功能到代码实现都经历了显著的转变和发展。 AngularJS最初发布于2010年,它的核心理念是通过MVC模式简化前端...
Vue.js则是一种构建用户界面的渐进式JavaScript框架,专注于视图层。它易于上手,设计理念先进,能够通过组件化的方式构建复杂的单页应用。Vue.js的响应式和组件化特性使得它非常适合用于构建现代化的前端界面,易于...
**正文** 标题提到的"Jsguangjia"很可能是一个基于AngularJS...同时,随着技术的发展,AngularJS也经历了多个版本的更新,如AngularJS 1.x和Angular 2+(不再使用JS后缀),了解它们之间的差异和迁移策略也是必要的。