如何正确地评价 Angular?

  • 1回答
  • 2浏览
  • 提问时间:2021-08-02
最佳答案 熟悉后端开发的工程师,尤其是javaweb开发的工程师,面对vanillajs的那种痛苦心情我历历在目,但是当我们把angular这种全面引入各种后端概念和结构的框架交给一群java工程师的时候,他们的脸上就立刻浮现出幸福的笑容,一切都是熟悉的味道,就连他们必须编写的业务逻辑部分,也完全可以用类java的代码来写,他们第一次感觉到,javascript其实就是scriptofjava。然而,对于一个传统的前端工程师而言,依赖注入,WTF?MVC,WTF?这些都是什么鬼?光是学习和了解这些概念并习惯这种框架回调和控制一切的模式,都得耗费他们好几个礼拜的时间,就算习惯之后,他们也会觉得,这一切,完全都是脱了裤子放屁。他们除了诅咒还能做什么?而与此同时,后端工程师们增大了双眼,看着痛苦的前端同行,说道:这些难道不是理所当然的吗?不这样写代码,不把程序组织成这样的结构,那还能叫程序吗?前端听闻此言,吐血三升,卒。严肃一点的说,angular的思路在工程上是有实际意义的,就我了解到的情况来看,在传统的企业应用开发领域,引入angular的项目越来越多了,原因就如同我上面所述,一切都是传统的后端工程师熟悉的味道,基本上是无痛的转移,这是其他任何前端js框架都难以做到的,就目前来看,只有angular能够满足传统企业应用领域的需求,那就是大量熟悉java开发并略通javascript的初级工程师能够合理的使用原有的后端开发知识进行比较前沿的前端开发工作。< img class="cto- img" src="https://s2.51cto.com/images/20210802/1627883058654988.jpg" title="1627883058654988.jpg" style="display:block;margin:auto;" alt="4.jpg"/>回过来,对讲究小快灵的互联网行业来说,angular这种繁琐的后端开发模型是非常非常麻烦的东西,因此才会有这么多跟angular竞争的MVVM框架出来,大家打的都是同一张牌,双向绑定,但同时,都试图解决angluar的问题--对前端工程师不够友好(体贴)。
问答分类:WEB开发

Angular有哪些设计缺陷?

  • 1回答
  • 2浏览
  • 提问时间:2021-08-02
最佳答案 这个问题下面提到了过度设计。说得罪人的话,这不是Angular的缺陷,而是你的缺陷。出于以下原因,我们不理解依赖注入、RxJS和Angular模块机制解决问题的意义。当项目复杂度提高后,你会发现DI+响应编程是跟踪应用程序状态变化最优雅的手段,DI和模块机制提供了合理的保存状态层次,RxJS可以对状态变化事件进行各种操作。类似redux架构需要你拆分状态树,组件需要维护一棵树,状态需要维护另一棵树;你需要用状态组件来包装和显示组件;如果你想知道从响应用户交互事件到界面变化的过程,你经常需要在各种文件中跳来跳去,想到就痛苦。TypeScript不是过度设计。项目大,领域模型复杂,没有静态检查就是维护灾难。三个框架都在积极拥抱ts,Vue3.0甚至需要重写。不要根据项目的需要选择合适的技术。三个框架的定位有重叠和差异,尤其是另外两个不使用周边仓库(或者很少使用)的场景可以用于轻量级场景——但是如果只去机场接一个人,为什么要开大巴?接二十个人为什么要开车来回跑五趟?(大公司能写好React的原因很像把小车装到大车上然后开着大车跑,umi,Next.js就是这样的大车,但是怎么把小车开到大车上,怎么开大车这都是问题。)人云亦云,这是前端圈各种撕逼的直接原因。< img class="cto- img" src="https://s2.51cto.com/images/20210802/1627882959977599.jpg" title="1627882959977599.jpg" style="display:block;margin:auto;" alt="7.jpg"/>前端项目的复杂度在不断提升,但其他领域的复杂度早就远远超出了前端领域,一些解决方案早在其他社区提出并实践多年了,没有理由不学习,说什么“前端不要搞Java那一套”是非常固步自封的想法。前端工程师只不过是比较专注于前端的软件工程师而已,而从软件工程的角度思考问题却是软件工程师的必备素质。不过软件工程在国内基本是不存在的。
问答分类:WEB开发

前端开发的门槛高吗?

  • 1回答
  • 2浏览
  • 提问时间:2021-08-02
最佳答案 以前可以用Photoshop和Dreamweaver制作网页。随着时代web前端设计的发展,仅仅掌握这些是不够的。 不管是开发难度还是开发方式,现在网页制作已经越来越接近传统的网站后台开发,所以现在不再叫网页制作,而是叫Web前端开发。 Web前端开发在产品开发中的作用越来越重要,需要专业的前端设计师来做好。近两年来,这方面的专业人士备受青睐。 前端设计师是一个非常新的职业,在中国乃至世界上真正受到重视的时间不超过5年。但是,随着Web2.0概念的普及和W3C组织的普及,网站重建的影响力以惊人的速度增加。 XHTML+CSS布局,DHTML和Ajax就像一阵旋风,席卷而来,包括新浪、搜狐、网易、腾讯、淘宝狐、网易、腾讯、淘宝等。,都重构了自己的网站。 其实前端开发的门槛很低。 其门槛低主要体现在两个方面:1.Web前端入门门槛低体现在HTML和CSS上。前者只是结构标签,后者是风格配置。入门很简单。可以在网上找一些相关视频学习,也可以找相关书籍,比如《HeadFirstHTMLandCSS》《CSS权威指南》等。虽然很无聊,但是只要能啃下来,就会发现真的很有用。 2.网络前端进入门槛低的另一个重要表现是符合82法则,即20%的东西利用率占80%。因此,它非常适合吞咽,所以我们的重点是学习这20%,首先要做的是找出这20%。前端这20%的东西大概是常用的html标签,css的盒子模型,基本的原生js,熟练使用jquery,ajax,常用浏览器兼容。拿下这些东西意义重大。一方面,它证明你适合做前端工作,另一方面,这些技能可以让你找到工作。让你从容学习剩下的80%。 总而言之,专注于处理最重要的事情,那些less、sass、angular等等,当你打好我之前说的基础后,学习起来畅通无阻,随学随用.< img class="cto- img" src="https://s2.51cto.com/images/20210802/1627882907583207.png" title="1627882907583207.png" style="display:block;margin:auto;" alt="image.png"/>
问答分类:WEB开发

Angular2 相比 Vue 有什么优势?

  • 1回答
  • 3浏览
  • 提问时间:2021-08-02
最佳答案 有Angular/cdk,而vue暂时还没有,这里Angular优势明显,毕竟是奔着平台的方向发展的。Angular的依赖注入是个好东西,谁用谁知道。开发时的报错,Angular更明确一些。vue报错会在一个runtime.js里(vue2.0),这里其实可以看做,用vue编码时,并不是vue实际运行时的状态,相当一部分工作是在帮助vue组织需要编译的代码。当然随着3.0的到来,相信这些问题都被解决的。对公司而言,“铁打的的营盘,流水的兵”。“兵”是来了又走的。一个大而全的框架(Angular)能包含项目大部分的解决方案,就减少了对第三方的依赖,只需要看官方文档就能继续维护。因为谁也不知道第三方以后是什么样的,撂下不管也是常有的事。这方面,Angular相对可能坑少一点。< img class="cto- img" src="https://s2.51cto.com/images/20210802/1627882834311318.jpg" title="1627882834311318.jpg" style="display:block;margin:auto;" alt="2.jpg"/>还有个优势就是,Angular还挺适合小公司的,小公司人少,一堆“菜鸟”,还不如直接用Angular,人家都把框架设计好了,风格约束定好了,解决方案自己取用,代码再差也差不到哪去。跟着学点大厂的设计思路也挺好、
问答分类:WEB开发

React.js,Angular.js学习哪个好?

  • 1回答
  • 1浏览
  • 提问时间:2021-08-02
最佳答案 如果你开始学习,Vue.js应该更容易。关键是Vue.js可以和传统的Web服务器端开发紧密结合。半服务器端输出,半Vue.js还是可以混的很好的。React.js易学难精,不去几个坑,不知道React.js该做什么,不该做什么。使用React.js或Angular.js,需要做好持久战的准备(React.js也可以在半服务器端输出,但是真的有一些大材小用)。就实际应用层面而言,除非前端基础扎实,否则一个人可以打十个JS框架,以上任何JS框架都不是你自己轻松搞定的。假如你的团队没有引入三者中的任何一个框架,你想在团队中提倡使用其中一个,最终只会活活累死你自己。再者,Vue.js最终也只是一套模板+VM机制,他不会引导你进入更深层次的思考,当然你也可以用Vue.js去朝深。但是,在这方面,React.js有更多的天然优势,尤其是如果从更早的版本中接触到React.js,由于早期渲染的速度问题,是迫使你更精确地开发每个组件,必须时刻关注,组件state的变化,是否引起了全局DOM更新(当然v16这方面的顾虑很少,实际项目实测加载上万条数据输出都没有什么性能问题,太棒了)。大前端是未来Web的必然趋势和趋势。抛开框架的形式,其实更值得深思的是数据和组件的关系。如何更合理地规划本地数据缓存,当前组件的临时数据,如何对前端数据进行加密,是未来值得深思的方向。因为转用上述的任何一个框架,都会存在当拉取一段数据的时候,需要同时拉取相关联的其他附加数据,仅仅靠一次拉取是不够的(然而我们又需要减少不断从服务器拉取片段数据的次数)。我们会需要在前端建立一套更有效的数据池管理机制,这不是靠任意一个前端框架的全家桶可以简单解决的问题,乃至未来ajax也会渐渐被淘汰的。最后摆摆立场,我是坚定的React.js的用户。Vue.js和Angular.js是什么?这个世界上不存在这两个框架吧(开玩笑)。我从15年底开始,使用React.js开发了一整套纯前端的ERP系统,写了无数个组件,趟了无数个坑,不过好歹也算趟过去了。别的不说,就说诸多数据片段,足以塞爆你浏览器的内存池,这样的坑,我想现在也没几个React.js开发者体会过吧。< img class="cto- img" src="https://s2.51cto.com/images/20210802/1627882716460616.jpg" title="1627882716460616.jpg" style="display:block;margin:auto;" alt="9.jpg"/>后来v15的版本,后续我一直都没怎么再深挖过,一是忙别的事情,二是当时对于React.js输出大数据表格的优化一直没有更好的处理办法(react.rocks上的组件都试遍了,还是不理想)。现在好了,v16,真的解决大问题了,很多程序编写的思路都可以彻底改变了,马上准备大批量重写一些底层的组件,全部推倒重来(已经重写了Table组件,一次性加载上万条数据,每页50行20列,渲染速度极快,延迟几乎感受不到)。
问答分类:WEB开发

Angular到底哪些地方像Java?

  • 1回答
  • 1浏览
  • 提问时间:2021-08-02
最佳答案 Angular将后端(Java)的开发模式应用到前端时,Angualr1也就是现在的AngularJS。这个版本的Angular不是TypeScript写的,所以Angualr对Java哲学的体现与TypeScript无关。此外现在用TS写的JS库和框架也不少,而且他们的设计哲学大多和Java几乎没有关系,所以我暂时看不出用TS语言实现与框架设计哲学有什么关系。以Angular1(AngularJS)为例:Java后端早就流行MVC架构的Web应用设计,如SpringMVC和历史悠久的Struts,包括Controller、Service和RequstMapping(Angular中的路由)等概念。最重要的是,应用程序将另一个应用程序实现分层开发,这在传统的前端开发中是极其罕见的。Java上最著名的Spring框架的核心概念之一控制反转(InversionofControl,IoC)是通过依赖注入(DependencyInjection,DI)来实现的,DI的优势是Angular借鉴的。注意:在Java的Spring中DI是实现控制反转的方式,并不是拎出来互相独立存在的概念在Java中最知名的ORM框架Hibernate的实现中,有一种自动同步更新数据的基于“脏检查”的机制,而Angular对双向数据绑定的同步更新方式也是利用“脏检查”Angular中的过滤器(Filter)在Java中也存在,它可以在原生请求的出入前后进行一些操作,例如对请求自身进行修改,是实现中间件的基础技术。Angular则是在数据获取后和绑定前对数据本身进行修改同样的,Angular中$http可以定义拦截器,而且其作用跟我上面说的Java中的过滤器非常相似,不过在Java中也是有拦截器的。< img class="cto- img" src="https://s2.51cto.com/images/20210802/1627882519653510.jpg" title="1627882519653510.jpg" style="display:block;margin:auto;" alt="5.jpg"/>Java中的拦截器通常通过AOP技术实现,可以跟Servlet和Web请求无关(这是过滤器和拦截器的一个重要区别)。但是这不表示Angular中的拦截器就是AOP的体现在Angular中控制器有“继承作用域”这个特性,可以当做Java中的面向对象概念之一:继承的体现虽然现在很普遍了,但在当初Template的概念也是主要用在后端的,对应Java的就是JSP等模板引擎
问答分类:WEB开发

为何 Vue 在法国貌似不如 Angular 流行?

  • 1回答
  • 2浏览
  • 提问时间:2021-08-02
最佳答案 Vue自然有它的用户群。既然题主说身边的同学,我也说说身边的情况。没有数据调查的支持,只说自己的个人情况。坐标伦敦,混迹前端十几年。早年使用jQuery,后来Knockout等MVVM开始流行,然后AngularJS统一世界。React在几年后出现,AngularJS自废武功升级2.0,行业天平开始向React倾斜。然后Vue很快就出来了。这时,国内外发生了有趣的分歧。因为在此之前,国内趋势很简单,就是比国外滞后一年左右。当AngularJS开始流行时,中国可能刚刚听说过这样的事情。Bootstrap开始流行的时候也是如此。当时我带了一个国内的小徒弟,高中毕业参加了三个月的前端培训班。我没有任何资格就模仿了几个站。找了半天工作,连一个小作坊的面试都没有。我说你花一周时间看Bootstrap,写在简历里会很有帮助。结果两周后,人们去了36氪月薪8k。当时的信息如此不对称。Vue出来后,明显的国内趋势不是跟风国外,而是围绕Vue打造自己的生态圈。而且国外仍然是React慢慢蚕食Angular的市场。Vue的设计很讨巧,说“拿来主义”也许不厚道但整体设计理念属于最不容易出错的种类。而Angular和React在面世初始都有自身过于激进的地方,被市场所接受需要一定的时间。那说回正题,现在2019年,我自己所接触到的前端市场上React大概占了八成,Angular能有一成半,剩下Vue可能半成左右吧。数据源主要包括各种接到的猎头电话,邮件和LinkedIn邀请以及和同行及猎头聊天时获取的信息。因为我的Profile上基本cover了所有这三种。< img class="cto- img" src="https://s2.51cto.com/images/20210802/1627882418723940.jpg" title="1627882418723940.jpg" style="display:block;margin:auto;" alt="1.jpg"/>这边的人对三种框架的看法主要是:Angular-复杂/过时/学习困难,React-函数式编程/主流/唯一选择,Vue-新颖/适合初学者面试过一些老外哥们,我会问听没听说过Vue,一般回答都会说“听说过,据说是个新框架,也许会成为将来趋势”,可以说能体会到对这个框架有相当的认同度。还看过很多Vue相关的工作JD,从描述上也可以感受到同行对这个框架未来发展趋势的期待。但“不如Angular和React流行”,这个至少在今年的英国,仍然是客观事实。
问答分类:WEB开发

为什么绝大部分前端团队无法重视Angular?

  • 1回答
  • 2浏览
  • 提问时间:2021-08-02
最佳答案 把你的技术细节收起来,angular在国内发展不好,因为angular抓不住国内团队中能够决定业务技术栈的关键少数质量、效率、成本可以提高这三者中的两个,让技术负责人决定使用你。所以看看angular的情况,使用angular可以提高前端代码的质量,这在中美都是一样的,但后两点,在中美有很大的不同:班科生比例大,很多人都是考算法和设计模式进入公司后自己选择做前端还是后端,但人家基础是一样的,工资也是一样的,所以angular上手快,学习成本低,效率高,而且不会因为使用angular而招聘专职人员来增加成本。因此在美国,与传统前端相比,angular提高了质量和效率,但成本不变。在国内:你能花5000招个前端,能花5000招个angular么??有些angular推广者的论点是“前端浮躁,沉淀以后质量会好的”,这是一个枉顾中美环境差异下的判断,只能是个愿景。除非你能让其他行业的基层员工培训一两年以后都能赚6000,不然IT公司永远可以5000块钱招到前端,你敢用angular就会有一群平台的人问你使用angular的“必要性”,你能跟他们说明白么?< img class="cto- img" src="https://s2.51cto.com/images/20210802/1627875807323246.jpg" title="1627875807323246.jpg" style="display:block;margin:auto;" alt="11.jpg"/>但是你坚持就是要用angular,把手下一群人都培养起来,从TS开始学,为了让他们理解AOP和依赖注入,你还教他们学java,为了查文档学英语,那么,他们第二年就换高薪工作了呀。。。在国内的现状就是,使用angular对比传统前端,增加了质量,但是想保证效率高,成本就会提高,想保证成本不变,效率就会降低。那么这个框架意义也就不大了。
问答分类:WEB开发

为什么Vue和React相比较Angular应用范围那么广?

  • 1回答
  • 4浏览
  • 提问时间:2021-08-02
最佳答案 第一,Angular是框架,Vue和React是组件库。从功能齐全的角度来看,框架和库没有可比性。因此,与React和Vue相比,AngularComponent在功能上解决了同样的问题。三大技术栈都取代了上一个时代以操作dom为核心的开发模式,但是不同的技术栈对数据的处理是不同的。Angular延续了Angular1的脏检查机制,拦截了浏览器异步api。在任务队列的最终检查数据的变化以更新domVue,通过定义对象的get和set方法监控数据的变化,然后根据需要更新domReact,更接近函数式。在Angular架构中,Service更适合编写一些数据操作的逻辑。通过将这些逻辑与Component分离,Component可以更加注重显示数据和响应用户的交互行为,提高组件的可用性。同时,不同的Service处理不同的业务也使得Service之前保持足够的边界。确实借助Angular对DI的实现,Service可以以单例的方式缓存一些数据,但从设计上Service并不是做这件事的,所以可以发现在Angular官方的例子中使用了angular-in-memory-web-api作为数据缓存的方案。在React和Vue中并没有Service的概念,许多对数据的操作逻辑要么写在Component中,要么写在全局的状态管理Vuex中,写在组件中会降低组件的复用性,都写在全局状态中又让全局状态十分臃肿和繁琐,该写在哪从两个库的角度并没有做限制和指导。< img class="cto- img" src="https://s2.51cto.com/images/20210802/1627875698930482.jpg" title="1627875698930482.jpg" style="display:block;margin:auto;" alt="4.jpg"/>相反的,从React的容器组件到Webhook,Vue的compositionapi都致力于将数据状态剥离于组件,显然二者更加关注组件本身。Vue和React都很好解决了组件实现的问题,但没有解决设计的问题,虽然Vue和React更易上手但如果没有良好的架构设计,后面的维护工作将面临更多挑战。
问答分类:WEB开发

为什么我觉得Vue相比较Angular用起来不那么舒服?

  • 1回答
  • 2浏览
  • 提问时间:2021-08-02
最佳答案 身为资深三系框架搬砖码农,我觉得这个问题我还是可以分享一下个人的看法,不喜勿喷。第一,技术偏好是非常主观的东西,你喜欢NG,他喜欢React或Vue,当讨论为什么xx框架比xx框架好这种月经问题时,很容易陷入无休止的争执,但大多数观点,不外乎拿一个框架的优点,去比较另一个框架的缺点,大概就是这样。事实上,如果你仔细想想,你总是说一个框架有多好,但是另一个人根本没有用过,自然不会意识到你说的那些优点?换句话说,你的问题描述中提到的NG的优点,对于用过的人来说,自然理解,对于没用过的人来说,他们不会理解。因此首先回答楼主的第一个问题,使用React和Vue的公司很多,不是你的问题,也不是其他公司的问题,而是由许多其他客观原因造成的:Ng2正式发布的时间点落后于React和Vue,同时学习门槛对于没有太多接触过OOP的前端开发者来说,门槛较高,这还没有涉及到rxjs等响应性编程的东西,所以国内使用的人很少是很正常的现象。Ng2和Ng1在概念上,完全是两个维度的框架,导致迁移成本较高,所以很多使用Ng1的公司可能还在使用1.5或1.6的版本,其实以前,Ng1在国内是很流行的,我接触过的很多项目,都是因为第一个原因用它来做的。国内的培训机构,以及技术博主,肯定更倾向于投入时间和资源到Vue和React上面,毕竟用Ng2的公司少,学的人自然也就少,我曾经在SegmentFault专栏写过关于Ng的一些列文章,基本就没什么人看,但后来转移到React和Vue上之后,浏览数相比较之前最少翻几倍。一叶知秋,当时我就知道大概是个什么情况了最后一点再说下题主个人的原因,你已经说了你有自学java的背景,同时题目描述也包含“希望不要用java程序员更喜欢Angular,或者Angular就是后端那一套这种答案来回答我”这样的描述。这足以证明,Ng必然更受有服务端编程经验的后端程序员的偏爱,因为它更加OOP,虽然也不是太严格的OOP,但相比较Vue和React足够了,反过来说,没有OOP概念的前端程序员必然更加排斥它所以你能发现,Ng在现在不那么流行的原因。< img class="cto- img" src="https://s2.51cto.com/images/20210802/1627875529812814.jpg" title="1627875529812814.jpg" style="display:block;margin:auto;" alt="1.jpg"/>只是滚雪球没滚过其他两个框架罢了,虽然它足够优秀和好用,我读过小部分的源码,能够感受到Ng本身的架构和设计,都是非常先进和优秀的,只要你能够熟练掌握Ng,再回头学习其他mvvm框架,你真的感觉和玩一样。然后我再来说几点关于其他两个框架的看法,算是帮助题主客观认识另外两个框架,而非有这么多的偏见,就依次按你的描述来说就好。
问答分类:WEB开发