热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

前端开辟头脑改变——从事宜驱动到数据驱动

加班加点一连一个多月,总算是快把一个开始时内心完整没有底的项目收工了。新项目基于旧系统开辟,在保存原有老架构jade+knockout+jquery+gulp的同时,新页面完整采纳

加班加点一连一个多月,总算是快把一个开始时内心完整没有底的项目收工了。新项目基于旧系统开辟,在保存原有老架构jade + knockout + jquery + gulp的同时,新页面完整采纳vue + vue-route + vuex + webpack。两套框架都没正儿八经做过,jade和knockout第一次打仗,vue和webpack之前只是写写demo,vue-route和vuex也没用过,又碰巧别的一个前端同事去职,所以当时决议新页面完整用新框架的时刻,照样鼓了不少勇气的。

一气呵成,梳理下这段时候进修和运用vue今后,给本身最大的收成:开辟头脑转变

事宜驱动

先说说之前前端发开的头脑体式格局。
比方说,要完成ajax体式格局提交一个表单,那末就要监听一个提交按钮的事宜。在触发点击事宜后,从页面的DOM元素中一个个网络数据,然后在做数据处置惩罚,末了挪用接口提交。网络数据是个迥殊烦琐的事变,种种选择器种种变量。

再比方说,在牢固区域内,事宜触发展现差别组件,那就要监听事宜通报来的条件,来推断哪一个组件要display:block,其他组件要display:none,以至能够大批用到DOM操纵,种种appendChild,insertBefore,removeChild。

其他相似依据条件addClass, removeClass调解组件款式;经由过程getAttribute、dataset等等猎取DOM绑定的数据;经由过程setAttribute、innerHtml等等直接修正DOM的操纵也是不可胜数。

个人觉得这类体式格局的优点就是直观,页面做任何转变全交由js处置惩罚,先干什么后干什么都由本身一手代码操控全场,有种掌控一切的觉得。

然则,大型项目里,代码编写的本钱和保护的本钱都很高。对代码范例的请求高,对笼统的请求高,尤其是笼统程度,全赖个人编程程度,笼统程度低的话,冗杂的代码基础不想多看一眼。这也许就是为啥项目里有一个代码写的烂的人在,代码就会愈来愈烂的缘由。

数据驱动

网上已许多关于数据驱动的文章了,但光看文章,体味远不如本身实践一遍来的印象深入。在基于vue开辟的新页面中,用js直接处置惩罚DOM的代码少少(刚开始上手的时刻平常都邑不太习气数据驱动编程,写些操纵DOM的代码,厥后逐步会替换掉的)。

数据驱动的条件是事先将DOM与数据绑定,像vue这类就是依靠defineProperties, setter, getter将一个vue对象与一个DOM节点模板关联起来,这个DOM节点里一切子节点、一切节点属性,全都能够和vue对象中的data绑定,做到data中某个属性值变化时,响应DOM节点中对应的某个属性就变化。

如此一来,关注点完整星散。离开设想页面DOM构造和数据构造,然后将DOM与数据构造做关联,以后一切的事宜触发的都只是数据的变化,DOM会自动依据数据的变化做响应转变。

前面例子中的表单提交,交由v-model属性将input双向绑定到data中去,在触发表单提交时,直接把data传给后端完事儿了;差别组件之间的切换,vue官网就有个动态组件的例子:

var vm = new Vue({
el: '#example',
data: {
currentView: 'home'
},
components: {
home,
posts,
archive
}
})


只需体贴currentView的指向便可随意马虎切换组件,或许经由过程v-if或v-show来完成依据value的真假值来控制响应DOM节点是不是显现;其他DOM属性变化都能够用v-bind与data做绑定,比方v-bind:class=”dataClass”,只需dataClass一变化,DOM的class就会转变。

vue的这些动态绑定的功用很轻易上手,相对上手比较慢的是vue供应的组件功用,触及父子组件通信,以及用vuex完成全局state治理等等,先控制数据驱动的头脑,再打仗这些会轻易很多。

固然纵然vue也会碰到不能不直接操纵DOM的状况。纪录一个现在碰到实际问题:

有一个table组件,展现从背景传过来的数据。数据中会有”http://xxx.xxx/xxx.png”须要渲染成http://xxx.xxx/xxx.png”>标签。平常表格组件会供应formatter方法来处置惩罚单元格特别处置惩罚逻辑,这里我就不能不直接天生DOM节点

formatter: function({picUrl}){
this.$createElement('img', {
attrs: {
src: picUrl
},
}
}

推荐阅读
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 【MEGA DEAL】Ruby on Rails编码训练营(97%折扣)限时特惠!
    本文介绍了JCG Deals商店提供的Ruby on Rails编码训练营的超值优惠活动,现在只需29美元即可获得,原价为$1,296。Ruby on Rails是一种用于Web开发的编程语言,即使没有编程或网页设计经验,也能在几分钟内构建专业的网站。该训练营共有6门课程,包括使用Ruby on Rails进行BDD的课程,使用RSpec 3和Capybara等。限时特惠,机会难得,赶快行动吧! ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 本文介绍了在满足特定条件时如何在输入字段中使用默认值的方法和相应的代码。当输入字段填充100或更多的金额时,使用50作为默认值;当输入字段填充有-20或更多(负数)时,使用-10作为默认值。文章还提供了相关的JavaScript和Jquery代码,用于动态地根据条件使用默认值。 ... [详细]
author-avatar
新视觉9927
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有