为什么要使用前端框架来构建页面?
一、要使用前端框架来构建页面的原因
因为提高开发效率,对于企业来说,时间就是效率,效率就是钱。
在没有前端框架之前,我们前端需要经常的操作DOM元素;在项目中,vue能够简化DOM操作,让程序员根本不用操作任何DOM元素,就能渲染 页面;企业中,使用框架,能够提高开发的效率;提高开发效率的发展历程:原生JS -> Jquery之类的类库-> 前端模板引擎->Angular.js/Vue.js(能够帮助我们减少不必要的DOM操作;提高渲染效率;双向数据绑定的概念【通过框架提供的指令,我们前端程序员只需要关心数据的业务逻辑,不再关心DOM是如何渲染的了】)在Vue中,一个核心的概念,就是让用户不再操作DOM元素,解放了用户的双手,让程序员可以更多的时间去关注业务逻辑;增强自己就业时候的竞争力基础JS基本功,JS高级,PHP,Jquery,H5C3+移动Web提高Nodejs,前端三大框架,React-Native(使用前端的技术HTML+CSS+JS,去开发手机App)延伸阅读:
二、前端框架到底解决了什么问题
框架其实就解决了一个问题——使用声明式语法,描述组件对象的嵌套关系,并自动生成与dom对象的对应关系。
自己敲过框架轮子的人一定明白我在说什么——你在自己写框架的时候,最难处理的不是数据驱动,observable库有的是,也不是事件监听,那玩意儿jquery已经做的很好了,更不是模板语法,谁还写不出个模板转render的函数?真正有点麻烦的问题是:
dom对象以及他们的从属(同时是传递关系)关系,是通过html自动生成的,然而当你把“组件”抽象为js对象,你怎么能实现子组件的自动创建,自动销毁,自动数据传递,自动render,自动事件监听(不一定是dom事件)?怎么把js组件对象存在它应该在的地方(我的标题图截得是preact源码解决这个问题的部分,preact的子组件实例,是存在dom节点上的),并且rerender的时候能把js组件对象和dom节点对应起来?什么时候需要new,什么时候复用原来的组件?组件重渲染之后,怎么commit到dom上?这套机制,才是前端框架真正替你省力的“脏活”,因为不如此,你的组件根本集成不起来,“组件化开发”、“数据驱动”也就无从谈起。至于框架对外提供的那些特性和语法糖,其实都见仁见智,有人喜欢有人不喜欢。但是我前面说的那些脏活,才是一个框架之所以是一个框架的理由。
关于这套机制,类angular框架和类react框架分别讲了两个故事——
angular讲的故事是“模板编译为能精细感知model变化事件的dom-commiter”。react讲的故事是“model怎么变不重要,我只要model当前状态,我有办法给你patch到dom上”。表面上看起来是很不一样的,但是本质上都是做同一件事——你在模板里面也好,jsx里面也好,使用组件时写的的都是组件的类型,然而实际render的时候,框架帮你自动创建了组件实例。第二次render的时候,框架又帮你做了两件事,名列前茅件事是,帮你找到应被复用的组件实例,指挥他重新render一遍,第二件事是,帮你把render的结果commit到正确dom节点上。
相关推荐HOT
更多>>mysql的MEMORY引擎为什么没有redis的应用广泛?
一、mysql的MEMORY引擎为什么没有redis的应用广泛从kv缓存的作用看,mysql优点不在kv缓存上,用它做kv缓存维护成本高,redis安装启动使用简单,...详情>>
2023-10-20 18:38:17什么是PWA?
一、什么是PWAPWA是渐进式 Web 应用,运用现代的 Web API 以及传统的渐进式增强策略来创建跨平台 Web 应用程序。。这些应用无处不在、功能丰富...详情>>
2023-10-20 14:02:19软件包“被标记为手动安装”是什么意思?
一、软件包“被标记为手动安装”是什么意思当你尝试安装已安装的库或开发包时,你会看到此消息。意味着该软件包是由用户手动安装的,而不是通过...详情>>
2023-10-20 11:47:20什么是Flash?
一、什么是FlashFlash是一种基于向量图形的动画技术,由Adobe公司开发。它支持多媒体、游戏、网站设计等应用,可以在各种平台和设备上实现高质...详情>>
2023-10-20 10:24:01热门推荐
一个优异的web前端,需要具备哪些条件?
沸华为自研的数据库gaussdb有哪些优势?
热数据库ER图是怎么做的?
热为什么使用MySQL?
新什么是synchronized?
既然MySQL中InnoDB使用MVCC,为什么REPEATABLE-READ不能消除幻读?
分布式系统里用户ID生成有什么好的方法和规则能满足“少数、尽量短、不能直接看出规则”这几个条件?
isKindOfClass、isMemberOfClass 作用分别是什么?
APP开发流程步骤有哪些?
mysql的MEMORY引擎为什么没有redis的应用广泛?
webpack proxy工作原理为什么能解决跨域?
python的五个特点?
staticmethod和classmethod的区别?
Android App设计开发应遵循哪些原则?