React全栈--现代前端技术

React全栈–现代前端技术

1.ES6– 新一代JavaScript标准

1.1 const和let关键字

以前只有全局变量以及函数内部的局部变量,所以以前的局部变量只能定义在函数里面,但是现在不是了,可以通过let关键字来定义局部变量。同时通过const关键字来定义常量,定义后的基本类型数据是不能改变的,但是定义的是引用类型的变量的话,还是可以改变的。

1.2 函数

1.箭头函数,在回调中很有作用,箭头函数永远是匿名的

2.this在箭头函数中的使用:在嵌套函数中,碰到setInterval, setTimeout等定时器函数时,this会发生漂移,指向windows(global对象),以前我们要将this缓存var self = this;或者通过(){}.bind(this)来改变this的内部函数的指向,但是有了箭头函数后,再也不用更担心这个问题了;

3.函数默认参数,以前的函数默认参数 var a = a || [];但是ES6支持了函数的默认参数;

4.rest参数…,rest参数是没有指定变量名的参数数组,而arguments是所有参数的集合。而且arguments参数不是一个真正的数组,而rest参数是一个真的数组,可以调用sort和map方法。可以告别arguments参数了;

1.3.展开符操作

…可以用于函数的调用,数组字面量,以及对象的展开(ES7).

1.4.模板字符串

用反引号标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。模板字符串中嵌入变量,需要将变量名写在${}之中。

// 字符串中嵌入变量

var name = "Bob", time = "today";
Hello {name}, how are you {time}?

1.5 解构赋值

解构方法可以很快的从数组或者对象中提取变量,可以用一个表达式读取整个解构;

1.6 类

JavaScript是原型继承的,但声明起来却很怪,所有提供了一个原型链的class语法糖。通过class关键字定义了一个“类”,可以看到里面有一个constructor方法,这就是构造方法,而this关键字则代表实例对象。constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。

注意,定义“类”的方法的时候,前面不需要加上function这个关键字,直接把函数定义放进去了就可以了。另外,方法之间不需要逗号分隔,加了会报错。类的数据类型就是函数,类本身就指向构造函数。

Class之间可以通过extends关键字实现继承,这比ES5的通过修改原型链实现继承,要清晰和方便很多。

子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。如果不调用super方法,子类就得不到this对象。另一个需要注意的地方是,在子类的构造函数中,只有调用super之后,才可以使用this关键字,否则会报错。这是因为子类实例的构建,是基于对父类实例加工,只有super方法才能返回父类实例。

super这个关键字,既可以当作函数使用,第一种情况,super作为函数调用时,代表父类的构造函数。第二种情况,super作为对象时,指向父类的原型对象。可以采用super(). + 方法名字来调用父类的方法。

类相当于实例的原型,所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。

1.7 模块

1.首先推出Require.js的AMD规范,Node.js诞生后,随之而来的是CommonJS格式,后来的browerify,知道es6推出了模块化,对模块化进行了支持;

es6模块功能主要由两个命令构成:exportimportexport命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。通过as取别名。

export {firstName, lastName, year};
import {firstName, lastName, year} from ‘./profile‘;

function setName(element) {
  element.textContent = firstName + ‘ ‘ + lastName;
}

1.8 使用Babel

各种方案层出不穷,JavaScript不断发展,导致很多性能无法普及,babel提供了JavaScript多用途编译器。让你可以开心的使用ES6.

Babel通过安装插件(plugin)或者预设(preset,就是一组设定好的插件)来编译代码。创建一个.babelrc文件。

{
  "presets":[],
    "plugins":[]
}

2.Component组件与模块化

首先要明白两个概念:模块(module)和组件(component),模块是指的语言层面的,在前端大多数指的是一个JavaScript模块,往往变现为一个JavaScript文件,以及其对外暴露的一些属性和方法。组件更偏向于业务层面,往往是一个独立功能的实现,比如一个下拉菜单,文本编辑器,路由系统等。一个组件往往包括其所需的所有资源,包括逻辑js,样式css,模板html(template),甚至图片和文字。

2.1模块化方案的阶段

1.全局变量+命名空间:

避免污染全局作用域,模块内部通常用匿名自执行函数。问题多多:(1)依赖全局变量,污染全局变量的同时,不安去.(2)依赖约定的命名空间,不可靠。(3)要手动管理并控制执行,容易出错,在上线前要手动合并一些模块

2.AMD+CommonJs

解决时上述的问题,全局下定义require和define,不需要其他变量

通过文件路径或模块声明来定义模块

依赖与加载都是由加载器完成,提供了打包工具自动分析依赖并合并

3.ES6模块化

JavaScript带来了自己的模块化方案,相比AMD/CommonJS,功能更强大,引用和暴露的方式更多样,支持复杂的静态分析,使构建工具更细粒度地移除模块实现中的无用代码。

2.2 组件化阶段

1.基于命名空间的多入口文件

基于前面的第一种模块化方案,不同资源手动导入,最典型的就是jQuery插件;

2.基于模块的多入口文件

随着前端模块化方案的流行,组件也趋于AMD这样的规范,把组件也暴露为一个模块。一个AMD模块的JavaScript,一个CSS(Less,Sass)模块的样式,以及其他资源。

3.单JavaScript入口的组件

这是现在比较流行的方案,借助browerify、webpack这样的打包工具,允许我们将一般的资源当做JavaScript模块来对待。并一致的加载进来。

4.Web Component

这是组件化里的国家队,与2011年提出,但是还处于不温不火的状态,主要包括自定义元素(Custom Element)、HTML模板(HTML Template)、Shadow DOM、HTML 的引入(HTML Import)

3.前端开发常用工具

1.包管理工具

用来安装、管理和分享JavaScript包,同时自动处理多个包之间的依赖。主要有包管理工具,Bower、Component、Spm、以及Node.js的亲儿子npm;

2.任务流工具

在前端项目中会遇到各种各样的任务,比如压缩合并代码、验证代码格式、测试代码、监视文件等等,执行这些方法不可能每次都去手动写这些命令,非常麻烦,接触Linux的肯定会想到shell脚本。现在前端比较流行的有Grunt和Gulp两个;

3.模块打包工具

主要有bundler和webpack两个,webpack作为后起之秀,它支持AMD、CommonJS类型,通过loader机制也可以使用ES6的模块格式,正向一个全能型构建工具发展。

时间: 2024-10-12 16:36:10

React全栈--现代前端技术的相关文章

Webpack + React全栈工程架构项目实战精讲

详情请交流  QQ  709639943 01.Webpack + React全栈工程架构项目实战精讲 02.跨平台混编框架 MUI 仿豆瓣电影 APP 03.Node.js入门到企业Web开发中的应用 04.Python3 全网最热的Python3入门+进阶 比自学更快上手实际开发 05.Java秒杀系统方案优化 高性能高并发实战 06.Java深入微服务原理改造房产销售平台 07.快速上手Linux 玩转典型应用 08.全面系统讲解CSS 工作应用+面试一步搞定 09.Java Spring

再谈<全栈必备的技术栈设想>一文

在SDCC2016的架构师进阶之路主题,我分享了<老曹眼中的全栈架构师>话题,会后在csdn博客发布了<全栈必备的技术栈设想>一文,在我的公众号(wireless_com)发的是<全栈的技术栈设想>.然后,有幸得到了中生代技术(freshmanTechnology)和多人的转载,中生代技术还专门开通了全栈架构师深度讨论群,引起了很多的争论和争议. 主要分为以下三种观点: 1)根本没有意义,纯属忽悠 如网友回复:"鬼都知道说的什么 数据 缓存 业务 性能 消息队

node.js+react全栈实践-Form中按照指定路径上传文件并

书接上回,讲到“使用同一个新增弹框”中有未解决的问题,比如复杂的字段,文件,图片上传,这一篇就解决文件上传的问题.这里的场景是在新增弹出框中要上传一个图片,并且这个上传组件放在一个Form中,和其他文本字段一起提交给接口. 这里就有几个要注意的问题: 图片上传时最好能在前端指定图片类型,根据这个类型上传到指定的目录.比如这里是新增用户,上传用户图片,那么这里就指定类型是“user”,那么就把这个文件上传到服务器的upload/user目录中.这样方便后期维护,比如要把项目中的文件统一迁移到另外一

全栈必备的技术栈设想

喔家ArchiSelf 参加今年的SDCC确实挺高兴的,向大师Joe Armstrong 当面求教,与周爱民老师同台,在我们的架构师进阶之路专场有4个七零后的老码农,瞬间没有了孤独感,甚至有一点窃窃之喜. 实在没想到会有这么多朋友关注这个专题,会场有了些拥挤,呼吸也不那么舒服了.答应朋友们的事,今天就做到,下面是昨天的PPT内容和简要说明,详细内容还请关注CSDN 和SDCC的相关发布. 惯例是开始介绍自己,老码农,都没什么可吹嘘的地方. 看一下工程师和架构师的区别,简单地,工程师关注的是功能和

【笔记】关于全栈开发、技术发展方向,软件开发模式的思考

Full Stack Developer 全栈/全端开发者 掌握多种技能,并能利用独立完成产品的人. 优势-视野/全局思维,节约时间/经济成本. 横向开发,纵向开发  横向是把程序按数据,业务,表示等层次划分结构纵向是按功能模块划分 软件开发模式(瀑布.迭代.螺旋.敏捷)

支付宝小程序PHP全栈开发--前端样式的设计.acss样式详解

关于.acss文件 在视频中已经说过了,小程序的设计思想和原生app的设计思想颇为相似,基本的应用单元为页面.当然对于一个页面来说每一个元素的放置位置在哪儿以及显示成什么样子这个是由样式来决定的.我们知道在web开发中样式是在css文件中规定的,叫做层叠样式表 (Cascading Style Sheets).其实在APP中样式的约束也是使用css,在支付宝小程序中也是使用css不过文件的后缀是.acss而且对css3进行了扩充而已. CSS3是CSS技术的升级版本,CSS3语言开发是朝着模块化

React全栈-社交网络程序 提交表单数据

1. 给每个input 表格添加change 事件 当input  变化时触发 <div className="form-group"> <input type="text" className="form-control form-control-lg" placeholder="用户名" name="name" value={this.state.name} onChange={thi

Redux+React Router+Node.js全栈开发

详情请交流  QQ  709639943 01.Java深入微服务原理改造房产销售平台 02.跨平台混编框架 MUI 仿豆瓣电影 APP 03.Node.js入门到企业Web开发中的应用 04.Redux+React Router+Node.js全栈开发 05.Java秒杀系统方案优化 高性能高并发实战 06.企业级刚需Nginx入门,全面掌握Nginx配置+快速搭建高可用架构 07.快速上手Linux 玩转典型应用 08.全面系统讲解CSS 工作应用+面试一步搞定 09.Java Spring

前端面试题总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)持续更新 &#362414;

原文: http://blog.gqylpy.com/gqy/438 置顶:来自一名75后老程序员的武林秘籍--必读(博主推荐) 来,先呈上武林秘籍链接:http://blog.gqylpy.com/gqy/401/ 你好,我是一名极客!一个 75 后的老工程师! 我将花两分钟,表述清楚我让你读这段文字的目的! 如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍! 没错,我就是这个老者! 干研发 20 多年了!我也年轻过,奋斗过!我