목차
回复内容:
웹 프론트엔드 H5 튜토리얼 在国内前端领域里优秀的人很多,为什么没人做出 angularjs 、jQuery 之类优秀的框架?

在国内前端领域里优秀的人很多,为什么没人做出 angularjs 、jQuery 之类优秀的框架?

Jun 07, 2016 am 08:41 AM
angularjs jquery

我个人感觉这个圈子里面貌似蛮多大神的,但是真正出来的东西在哪里?之前还看到某“大牛"评价jQuery 是大便,大家都在用大便。我个人比较难理解这种思维,求解惑,真的很牛为啥没做出angularjs 之类风靡的东西。

回复内容:

一个框架能不能火,最关键的不是技术实现上多 nb,而是在于这个框架是否代表了一种(在其所处的时代)先进的开发理念。

举例来说,在大部分开发者都在为浏览器兼容性和设计糟糕的原生 DOM API 叫苦连天的时候,jQuery 的横空出世自然显得光彩夺目。那个年代,大家根本不把前端当应用来写,能爽快的操作 DOM 就已经足够成为王道了。jQuery 简洁的语法,华丽的链式 API,同时掩盖了各种兼容问题,能不火吗?

慢慢地,大家发现前端要做应用,光有华丽的 DOM 操作也不够,还得有应用结构。所以 Backbone 出现了,把 MVX 的概念引入了前端,让大家发现原来前端也是可以有架构的。

再接着,大家发现 Backbone 的视图层依然需要手动侦听 model 的变化做各种 DOM 操作,数据到视图的映射依然繁琐。于是大家开始推崇 MVVM 数据绑定,(其实 Knockout 是和 Backbone 差不多时间出现的,只不过由于其实现不如 Backbone 来得简明易懂,所以不如 Backbone 火),于是 Angular 火了。

不得不承认,即使是放眼全球,前端开发理念相比软件开发的其他领域,也基本上是属于一个跟随的状态。比如最近函数式编程就在对前端开发产生着巨大的冲击 - 首当其冲的就是以幂等渲染函数为核心概念的 React。由于 React 本身的函数式血脉,以它作为渲染层引入其他函数式理念变得触手可及,于是我们看见现在国外前端在研究的都是 immutability, FRP, uni-directional data flow, stateless stores, isomorphic application 之类看上去高大上的话题。

如果你现在去基于一个已经普及的理念新写一个框架,即使实现得再好,也不过是造了一个轮子。当然,造一个同类理念中最好的轮子,还是会有很多人来用,但这毕竟只是一个改进的轮子,大家不会把你当做一个划时代的东西去推崇。只有当你把一个从没在这个领域出现过的理念实现了,才能够达到 jQuery, Backbone, Angular, React 这些里程碑式的框架所达到的地位。(顺便广告下,在前后端数据通信这块,Meteor 可以算是一个里程碑式的存在,Relay 可能是下一个)

所以说到底,能不能搞出风靡的东西,一部分是眼界,一部分是时势。首先只有把眼界开拓到当前领域的边界之外,才可能做出开拓这个领域的东西。国内的前端界目前基本是处于跟随国外前端界的状况(就像国外前端界跟随整个软件开发领域一样),从眼界上来说就差了一个身位,又如何奢求能够做出划时代的东西?

另一部分的时势,就是你所实现的理念是否正好顺应了当前业界的普遍需求。太超前或是太落后,都火不了。

需要说明的是,眼界和工程实力是两个东西。单就工程实力而言,我相信国内的工程师们完全不比国外的差,差距就在眼界上。首先如贺老所说,英语水平是一个整体上限制了眼界的障碍;其次,如今国外的前端工程师受过正统 CS 理论训练的比例估计也远远高于国内;最后,国内的公司加班严重,能完成工作任务就不错了,哪里还有力气搞开源(除非把开源弄成 KPI)。所以说到底是个大环境问题。还有一个原因,就是英语足够好的就肉身翻墙了,你懂的。 我一再说的是,成功是偶然的,无人问津才是正常的。

GitHub上几百万个repo,据说一半以上是从第一次发布后就无人问津的0关注项目,90%是没有几个fork的。真正有点人用的项目据说也就几万个。

而jQuery、Angular这种“风靡”级别的,全世界也就那么几个。

如果不是总45度角仰望,放低下脑袋,那还是可以看到一些的,比如百度的echarts(你可以看到star数,fork数,issue数,PR数都很高,说明这个项目有很高的活跃度)。个人为主的项目我也随手拿一个做例子: @sofish 的sofish/pen · GitHub,在github上已有3000+ star。


至于最风靡的框架/库为什么不出在中国,有很多原因。比如说英语能力(不要小看这个的影响)。请参考在前端领域,国内和国外的的互联网公司有差距吗? - 贺师俊的回答


PS. 说jQuery是大便,我是不同意的。但是你听别人说什么,需要考虑语境,也可能只是讲话者要表达观点时用了一个略激烈的修辞,不代表他的观点就是不对的,就是没有价值的。

---- 以下是与主题无关的内容 ----
jQuery是历史上最成功的前端框架/库,但毋庸讳言,第一jQuery早期代码是很挫的(所以很多老的前端高手看不上他),第二现在看jQuery已经过时了(所以今天真正明白前端未来大势的人不会再来给你讲jQuery如何好blablabla)。

当然,这些并不能掩盖jQuery的光辉。

如何看待jQuery,我认为有两种错误,一种是认为jQuery的成功纯属偶然,或者认为jQuery只是满足了小白。另一种是认为jQuery就是好,认为所有其他的框架/库都没必要。

这两种错误的原因其实是一样的,就是不明白jQuery到底好在哪里。不明白这个,也就不明白为什么jQuery的时代已经过去了(尽管我们还会继续使用它好长时间)。

有空我会好好写一下这个话题,这里先打住。 框架要流行只需要做一点:解决大多数人当前的问题。

有些框架技术上很厉害但不解决大多数人的问题,那再厉害也没有。有些框架解决大多数人过去的问题,例如很多人说自己能写个 jQuery,但现在谁还需要?还有些框架解决大多数人未来的问题,例如我 2009 年就写过等价于 Promise 的 Async, @赵劼 写过等价于 async generator 的 Wind.js,但在 callback hell 还不是大多数人的问题时这没有价值。还有些框架,明明问题是能解决的,但就是清高,不愿意帮助小白用户上手,一样死路一条。用 jQuery 作者 John Resig 的话说,如果一门技术的社区,老人总叫新人 RTFM,这门技术两年内完蛋。

总而言之就是,写一个framework是需要经过特殊的训练的,这并不是任何一个领域的专业知识所能搞定的事情。


并不是你前端写的熟练就可以搞出jquery

并不是你C++用得熟练就可以自己发明stl

并不是你make敲得多就懂得怎么写build system

很多朋友说国内程序员浮躁,我这是完全不赞同的。
首先 你拿jQuery比较是不合适的,这就好比你为什么不再造一个J2EE的道理是一样的
其次你认为那些牛逼的开源项目都是一帮人义务劳动吗?显然不是。那些知名的牛逼的开源前端项目,都是出自知名公司的,Angular,React,包括再偏ui一点的bootstrap。去看看他们背后的公司是谁。都是知名公司在做。这个是行业现象。
包括现在很多开源社区的名人,身后都是有公司支持的,Linux,webkit,webrtc,crosswalk,openstack等等等等。。。许多外企公司都有开源项目部(Intel就有 SSG OTC),专门来做开源项目以提高行业话语权。
所以,不是国内前端工程师浮躁,也不是国内工程师水平的问题,而是国内公司大环境的问题,目前来看,提高开源社区话语权显然不是国内it公司当下要做的事情,虽然也有一些小的开源项目在做,但都不是专门设置一个开源部门来做。 国内的环境造就了一大批伪专家,只会用别人的代码,用熟了就开始批判以显示自己牛逼,比这个牛逼一些的会参考别人的代码自己造些轮子,声称自己的轮子强过jQuery,angular多少云云,实际上水平的差距还是比较大的。总体来说就是我们现在的实力只能够做到跟随而不能做到首创,加上国内环境让大批伪专家横行,在前端这行搞个几年你不敢声称自己是专家你都不好意思和同行交流。 表面上看是:懒累穷抄
实际上,jquery 等是实际项目和需求+优秀程序员+高质量社区的结果。
要有鱼首先要有水。
某些“大牛”分不清楚,“做出好东西需要掌握的技术我都会” vs "我会用掌握的技术做出好东西" 之间的巨大差别。 牛逼哄哄的中国码农做不出来的(或者做出来不便公开的),岂止前端框架,岂止 AngularJS、jQuery?现在大家日常用的主流开源框架、程序库、平台、开发工具,有几个是中国的编程高手创造的?几乎都是拿来的。软件工程上的这种差距不是 1-2 年,而是 8-10 年,甚至更长。

这是一种市场现象,也是一种文化现象。

导致这一现象的原因很多,我分析几个主要的原因:

原因 1、落后的软件工程教育和浮躁的大环境导致缺乏大量优秀、经验丰富、有创造力的职业软件设计师

像研发 AngularJS、jQuery、Spring、Struts、RoR 等等之类的优秀框架,背后是需要强大的技术实力、编程思想支撑的。没有独到的顶尖专家型思维、成熟的编程方法论(如 OOAD)、扎实的软件科学基础(如算法与数据结构)、领先的软件架构设计知识与能力(如架构模式与设计模式)、良好的编码素质与习惯、娴熟的软件工程与团队管理水平。。。,能开发出优秀的框架?所有这些编写专家级、优秀框架代码的要素,都需要一个创新者起码拥有 10 年以上的积累。

关于积累,@张盟 的评论很到位,我引过来:

我觉得最主要的是国内35+到50岁以上的前端er太少了,或说老一辈的技术转前端的寥寥,大多都转管理或自己创业做产品了。根本原因是顶尖层次的前端coder少,3-5年经验的水平大家55开,到10年这个分水岭,国外领先太多。

同感!国外 30-50 岁是出成果的黄金年龄段,而国内大多是 30 岁以下廉价使用的娃娃劳动力。缺乏深厚的技术经验积累与沉淀,确是一个主因。我们这个社会太浮躁了,人人都想着捞快钱。没有那种耐得住寂寞、精益求精、持续打磨的工匠精神,要想做到世界一流,堪比登天。

OOAD 方法论的兴起、争论与繁荣是在上世纪 90 年代,2000 年后已趋于成熟,成为国外职业软件工程师的核心基础技能,而伴随这一时期的正是 C++、Java 等 OO 语言和大量开源框架的兴起与强盛。

反观国内,OOAD 进入国内大学课程主要是在 2005 年以后吧,一直存在着时间差。至今,江湖上的许多人连一个 Object Model、Design Pattern 还整不明白,还在忽视、贬低 OOAD,鼓吹“裸编”、伪敏捷,以为“设计就是代码”。。。在这样的一个大环境、烂江湖里,能培育出世界一流的框架设计?

这道理其实与糟糕的中国足球很类似,没有扎实、强大的足球基础教育,与崇尚专业精神的文化和环境,何谈冲出亚洲?中国有几个世界级的球星?光知道砸钱(中国人不差钱),搞人海战术(中国人多),给高薪(重赏之下必有勇夫),加班文化(中国人勤奋、耐力好,擅长加班)。。。有 P 用?做梦吧。

关于浮躁,楼上某匿名用户的评论很精彩,我引过来:

国内的环境造就了一大批伪专家,只会用别人的代码,用熟了就开始批判以显示自己牛逼,比这个牛逼一些的会参考别人的代码自己造些轮子,声称自己的轮子强过jQuery,angular多少云云,实际上水平的差距还是比较大的。总体来说就是我们现在的实力只能够做到跟随而不能做到首创,加上国内环境让大批伪专家横行,在前端这行搞个几年你不敢声称自己是专家你都不好意思和同行交流。

浮躁的、盛产牛逼哄哄的伪专家的大环境能产生出世界级的编程大师,尤其是敢于秀代码的开源大师么?很难。

原因 2、与国内的开源市场大环境还不成熟有关

原因 3、国内的真正高手、大牛肯定是有的,只是他们在忙其他更有价值的事情,精力还顾不及开源。

这可能不是一个能力问题,而是一个值不值,以及时机和切入点的问题。所以我看好下个十年。

待续。。。 1. 有价值的轮子已经被造了无数遍,值得造的轮子并不多了。
2. 写框架和调接口(应用层)需要完全不同的mindset,是两个不同的工种。大部分职业程序员是调接口的。
3. 任何一个产品包括开源项目,都需要推广宣传才能流行起来。大部分理工科的人有个单纯的执念:If I build it, they will come,并不懂distribution.
4. 国内大部分程序员,写代码只是混口饭吃,工作以外的,实在有心无力;对于大部分企业,写一个框架并不能直接转化成效益、流量。内外都缺乏驱动力。
5. 语言引起的交流障碍。开源项目都需要一个国际性的社区,成员可以用英文顺畅交流,中国人不占优势。 1、理念落后一些,总是跟着别人走
2、为了kpi和沽名钓誉造轮子,怎么能造出最好的轮子?
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

jQuery 참조 방법에 대한 자세한 설명: 빠른 시작 가이드 jQuery 참조 방법에 대한 자세한 설명: 빠른 시작 가이드 Feb 27, 2024 pm 06:45 PM

jQuery 참조 방법에 대한 자세한 설명: 빠른 시작 가이드 jQuery는 웹 사이트 개발에 널리 사용되는 JavaScript 라이브러리로, JavaScript 프로그래밍을 단순화하고 개발자에게 풍부한 기능을 제공합니다. 이 기사에서는 jQuery의 참조 방법을 자세히 소개하고 독자가 빠르게 시작할 수 있도록 구체적인 코드 예제를 제공합니다. jQuery 소개 먼저 HTML 파일에 jQuery 라이브러리를 도입해야 합니다. CDN 링크를 통해 소개하거나 다운로드할 수 있습니다.

jQuery에서 PUT 요청 방법을 사용하는 방법은 무엇입니까? jQuery에서 PUT 요청 방법을 사용하는 방법은 무엇입니까? Feb 28, 2024 pm 03:12 PM

jQuery에서 PUT 요청 방법을 사용하는 방법은 무엇입니까? jQuery에서 PUT 요청을 보내는 방법은 다른 유형의 요청을 보내는 것과 유사하지만 몇 가지 세부 사항과 매개 변수 설정에 주의해야 합니다. PUT 요청은 일반적으로 데이터베이스의 데이터 업데이트 또는 서버의 파일 업데이트와 같은 리소스를 업데이트하는 데 사용됩니다. 다음은 jQuery에서 PUT 요청 메소드를 사용하는 구체적인 코드 예제입니다. 먼저 jQuery 라이브러리 파일을 포함했는지 확인한 다음 $.ajax({u를 통해 PUT 요청을 보낼 수 있습니다.

심층 분석: jQuery의 장점과 단점 심층 분석: jQuery의 장점과 단점 Feb 27, 2024 pm 05:18 PM

jQuery는 프런트엔드 개발에 널리 사용되는 빠르고, 작고, 기능이 풍부한 JavaScript 라이브러리입니다. 2006년 출시 이후 jQuery는 많은 개발자가 선택하는 도구 중 하나가 되었지만 실제 애플리케이션에서는 몇 가지 장점과 단점도 있습니다. 이 기사에서는 jQuery의 장점과 단점을 심층적으로 분석하고 구체적인 코드 예제를 통해 설명합니다. 장점: 1. 간결한 구문 jQuery의 구문 디자인은 간결하고 명확하여 코드의 가독성과 쓰기 효율성을 크게 향상시킬 수 있습니다. 예를 들어,

jQuery를 사용하여 요소의 높이 속성을 제거하는 방법은 무엇입니까? jQuery를 사용하여 요소의 높이 속성을 제거하는 방법은 무엇입니까? Feb 28, 2024 am 08:39 AM

jQuery를 사용하여 요소의 높이 속성을 제거하는 방법은 무엇입니까? 프런트엔드 개발에서는 요소의 높이 속성을 조작해야 하는 경우가 종종 있습니다. 때로는 요소의 높이를 동적으로 변경해야 할 수도 있고 요소의 높이 속성을 제거해야 하는 경우도 있습니다. 이 기사에서는 jQuery를 사용하여 요소의 높이 속성을 제거하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. jQuery를 사용하여 높이 속성을 연산하기 전에 먼저 CSS의 높이 속성을 이해해야 합니다. height 속성은 요소의 높이를 설정하는 데 사용됩니다.

jQuery 팁: 페이지에 있는 모든 태그의 텍스트를 빠르게 수정하세요. jQuery 팁: 페이지에 있는 모든 태그의 텍스트를 빠르게 수정하세요. Feb 28, 2024 pm 09:06 PM

제목: jQuery 팁: 페이지에 있는 모든 태그의 텍스트를 빠르게 수정하세요. 웹 개발에서는 페이지의 요소를 수정하고 조작해야 하는 경우가 많습니다. jQuery를 사용할 때 페이지에 있는 모든 태그의 텍스트 내용을 한 번에 수정해야 하는 경우가 있는데, 이는 시간과 에너지를 절약할 수 있습니다. 다음은 jQuery를 사용하여 페이지의 모든 태그 텍스트를 빠르게 수정하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 먼저 jQuery 라이브러리 파일을 도입하고 다음 코드가 페이지에 도입되었는지 확인해야 합니다. &lt

jQuery를 사용하여 모든 태그의 텍스트 내용 수정 jQuery를 사용하여 모든 태그의 텍스트 내용 수정 Feb 28, 2024 pm 05:42 PM

제목: jQuery를 사용하여 모든 태그의 텍스트 내용을 수정합니다. jQuery는 DOM 작업을 처리하는 데 널리 사용되는 인기 있는 JavaScript 라이브러리입니다. 웹 개발을 하다 보면 페이지에 있는 링크 태그(태그)의 텍스트 내용을 수정해야 하는 경우가 종종 있습니다. 이 기사에서는 jQuery를 사용하여 이 목표를 달성하는 방법을 설명하고 구체적인 코드 예제를 제공합니다. 먼저 페이지에 jQuery 라이브러리를 도입해야 합니다. HTML 파일에 다음 코드를 추가합니다.

jQuery 요소에 특정 속성이 있는지 어떻게 알 수 있나요? jQuery 요소에 특정 속성이 있는지 어떻게 알 수 있나요? Feb 29, 2024 am 09:03 AM

jQuery 요소에 특정 속성이 있는지 어떻게 알 수 있나요? jQuery를 사용하여 DOM 요소를 조작할 때 요소에 특정 속성이 있는지 확인해야 하는 상황이 자주 발생합니다. 이 경우 jQuery에서 제공하는 메소드를 사용하여 이 기능을 쉽게 구현할 수 있습니다. 다음은 jQuery 요소에 특정 속성이 있는지 확인하기 위해 일반적으로 사용되는 두 가지 방법을 특정 코드 예제와 함께 소개합니다. 방법 1: attr() 메서드와 typeof 연산자를 // 사용하여 요소에 특정 속성이 있는지 확인

jQuery에서 eq의 역할 및 적용 시나리오 이해 jQuery에서 eq의 역할 및 적용 시나리오 이해 Feb 28, 2024 pm 01:15 PM

jQuery는 웹 페이지에서 DOM 조작 및 이벤트 처리를 처리하는 데 널리 사용되는 인기 있는 JavaScript 라이브러리입니다. jQuery에서 eq() 메서드는 지정된 인덱스 위치에서 요소를 선택하는 데 사용됩니다. 구체적인 사용 및 적용 시나리오는 다음과 같습니다. jQuery에서 eq() 메서드는 지정된 인덱스 위치에 있는 요소를 선택합니다. 인덱스 위치는 0부터 계산되기 시작합니다. 즉, 첫 번째 요소의 인덱스는 0이고 두 번째 요소의 인덱스는 1입니다. eq() 메소드의 구문은 다음과 같습니다: $("s

See all articles