| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 从GitHub.com放弃使用jQuery说起 -> 正文阅读 |
|
[JavaScript知识库]从GitHub.com放弃使用jQuery说起 |
今天聊一点js的东西。 js和物联网领域的关系不是很大,为什么要关心js呢?其实关系也不小,它主要是负责直接和用户交互的那部分,也就是前端,前端基本都是离不开js的,甚至有些CS架构的程序也用js,比如 让我干唠是唠不出来什么的,因为咱没怎么用过js,只是最近在学习 原文链接: 以下为译文: 从 GitHub.com 网站前端移除 jQuery我们最近完成了一项里程碑式的工作,去除了GitHub.com 网站前端代码对 jQuery 的依赖。这标志着一个长达数年的与 jQuery 逐渐剥离的过渡工作的结束,我们现在已经能够完全删除该库。在这篇文章中,我们将解释一下我们最初是如何依赖 jQuery 的,又是如何意识到何时不再需要它的,并指出——我们能够使用标准浏览器 API 实现我们需要的一切(而不是用另一个库或框架替换它)。 为什么 jQuery 在早期有意义GitHub.com 网站在 2007 年底将 jQuery 1.2.1 作为依赖引入。回顾当时的时间节点,谷歌在一年后才发布了其 Chrome 浏览器第一个版本。那时候还没有通过 CSS 选择器查询 DOM 元素的标准方法,也没有实现动画效果的标准方法,并且 IE 开创的 jQuery 使操作 DOM、实现动画效果和发起“AJAX”请求变得简单。它使 Web 开发人员能够创建更现代、更动态的网站页面,所以脱颖而出。最重要的是,使用 jQuery 在一个浏览器中构建的 JavaScript 功能通常也可以在其他浏览器中使用,它对浏览器的兼容问题处理的比较到位。在 GitHub 的早期,它的大部分功能仍在不断完善,jQuery 这些特性允许小型开发团队快速原型化他们的产品并推出新功能,而无需专门针对每个 Web 浏览器调整代码。 jQuery 简洁的接口还使开发插件扩展变得很简单,构建 GitHub.com 网站前端的 我们将永远铭记 John Resig 和 jQuery 贡献者创建和维护这样一个如此有用且在当时必不可少的库。 近些年的Web标准这些年来,GitHub 成长为一家拥有数百名工程师的公司,并逐渐成立了一个专门的团队来负责把关 JavaScript 代码的规模和质量,这些代码会服务于 Web 浏览器。与此同时,我们也一直在寻找并排除技术债务,有时技术债务会随着依赖项的增多而增长,这些依赖项在一开始的时候给我们带来价值,但是随着时间推移和技术演变,价值会逐渐消失。 回到 jQuery 身上,我们将 jQuery API 与现代浏览器中支持的 Web API 进行了比较,并意识到一些问题:
此外,链接语法并不能满足我们未来想要编写代码的方式。例如:
这种语法写起来很简单,但按照我们的标准,并不能很好地传达意图。作者是否期望此页面上有一个或多个 js-widget 元素?另外,如果我们更新页面并不小心遗漏了 js-widget 类名,浏览器是否会报异常通知我们出了问题?默认情况下,当没有匹配到选择器时,jQuery 会默默地跳过整个表达式,对我们来说,这是 bug 而不是功能。 最后,我们开始使用 Flow 注解以在构建时执行静态类型检查,然后我们发现链接语法不适合静态分析,因为几乎每个 jQuery 方法调用返回的结果都是相同的类型。我们之所以选择 Flow 是因为当时 总而言之,与 jQuery 剥离意味着我们可以更多地依赖 Web 标准,让 MDN Web 文档成为我们前端开发人员事实上的默认文档,在未来维护更具弹性的代码,并最终从我们打包好的程序中移除30kb的依赖,从而加快页面加载速度和 JavaScript 执行速度。 逐步解耦虽然有一个目标在望,但是我们很清楚,用所有资源重写代码来替换 jQuery 是不可行的。如果冒然行动,如此匆忙的努力可能会导致网站功能出现许多倒退,然后很快将不得不淘汰这些倒退的功能。相反,我们采取循序渐进的方式:
这几年来,通过以上所述和诸如此类的努力,我们逐渐减少了对 jQuery 的依赖,直到不再有一行代码引用它。 自定义标签近年来引起轰动的一项技术是自定义标签,它是 自 2014 年以来,我们根据 在 jQuery 移除期间,我们寻找并提取出来那些适合通过自定义标签实现的对象。例如,我们将 我们追求渐进式增强的理念也延伸到自定义标签上。这意味着我们在标签中尽可能的保留原内容,只在其基础之上做行为添加。例如, 以下是如何实现
我们期待采用的一种 Web 组件是 Polyfills (特指JavaScript中的补丁代码)以下是帮助我们过渡到可以使用标准浏览器功能的补丁列表。我们仅在绝对必要时提供这些补丁,也就是说,它们只作为单独的 JavaScript 包提供给那些过时的浏览器使用以弥补兼容性的不足。 github/eventlistener-polyfill 译文完! 结语:本来就是件心血来潮的事,大周末的,寻思着两个小时也就弄完了,结果连看娃带吃饭,一天都没弄完,还是太天真。因为没能一鼓作气,难免半道泄气,期间多次强打精神总算翻译完了。 因为水平有限,再加上有些技术概念事先并不了解,有些地方还是比较难理解的,好在此篇并不着重讲具体技术,而是类似综述,于我本人而言,还是学到了一些方法论和“自以为新潮”的概念的,比如 Github 的工程师采用逐步解耦的方式慢慢与 jQuery 进行剥离的思想,放在其他软件开发领域也是有很强的指导性的,再比如新的 至于译文中难免存在错误的或者纰漏,欢迎批评指正! 本来都打算发布了,结果在查一个概念的时候发现之前有人已经翻译过了,就取长补短了一下。 参考文章 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 20:39:34- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |