如何写好JavaScript | 青训营笔记
这是我参与「第四届青训营 」笔记创作活动的的第4天
入门必学:犀牛书和红宝书
写好JS的的一些原则
- 各司其责
- 组件封装
- 过程抽象
1.各司其职
例子:白天夜间模式切换
版本1
直接操作body的style
版本2
只是操作了class,较版本1更优
版本3
只使用CSS实现(纯样式改变)
结论
- HTML/CSS/JS各司其责
- 应当避免不必要的由JS直接操作样式
- 可以用class来表示状态
- 纯展示类交互寻求零JS方案
2.组件封装
例子:电商网站轮播图如何实现
结构:HTML
轮播图是一个典型的列表结构,我们可以使用无序列表ul元素来实现。
表现:CSS
- 使用CSS绝对定位将图片重叠在同一个位置
- 轮播图切换的状态使用修饰符(modifier)
- 轮播图的切换动画使用CSS transition
行为:JS
Slider
- +getSelectedltem()
- +getSelectedltemlndex()
- +slideTo()
- +slideNext()
- +slidePrevious()
控制流
组件是指web页面上抽出来一个个包含模版(HTML)、功能(S)和样式(CSS)的单元。好的组件具备封装性、正确性、扩展性和复用性。
总结
基本方法:
- 结构设计
- 展现效果
- 行为设计 API(功能) Event(控制流)
存在问题:不灵活
重构:插件化
解耦
- 将控制元素抽取成插件
- 插件与组件之间通过依赖注入方式建立联系
构造函数复杂不是好现象
感悟
javascript是目前web领域中实用最为广泛的语言,不管是在前端还是在后端都能看到它的影子,可以说web从业者不论怎样都绕不开它。在前端领域,各种框架层出不穷,最火的时候几乎每个月都有新的框架诞生,如angularjs,vuejs等。在后端领域,nodejs可谓如火如荼,打破了人们对javascript只能作为前端语言的认知。按照此势头下去,javascript会越来越流行,会随着web的发展越来越重要。
javascript是Netscape公司推出的浏览器端语言,与java没有半点关系,可能想接着java炒火吧。然后js越来越火,网景公司想将其标准化,这样更加利于网络的发展,遂将其提交给了ECMA管理,负责对其的标准化。ECMA机构以JS为原型,推出了一个ECMAScript的脚步语言,规定各大浏览器厂商都必须依照ECMAScript标准实现各种的JS,保证JS具有良好的跨平台性。所以可以将ECMAScript看成是标准化的JS,一个意思。
ECMAScript本质上是一种语言规范,其与平台没有关系,比如浏览器等。web浏览器只是ES的宿主环境之一,负责实现ES以及提供ES与环境交互的手段。宿主环境还有Node以及Flash等。
JS的实现要比ES规定的要复杂,ES只规定了基本语言特性。浏览器下的JS实现可以由以下部分组成:
- 语言部分(ES)
- 文档对象模型(DOM)
- 浏览器对象模型(BOM)