2018-07-23 汉得日记

本次分享总结了前端代码审查中发现的问题,包括CSS样式、变量比较、函数命名等,并探讨了如何使用ES6和React进行优化。同时,回顾了原生JS的DOM操作方法,分享了React事件处理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

周末作业代码的相关优化

今早老师带大家review了周末作业的代码,并请大家进行现场演示。我发现好多同事做的都很好,运用es6和react都很熟练。而且题目要求很简洁。

下面总结下出现的问题(参考刘李的日报):

1.css样式,不用驼峰和下划线连接,用-连接更规范
.listStyle {} ×
.list_style {} ×
.list-style {} √

2.比较的时候,知道变量类型尽量用===

if (val == '1) {}    ×
if (val === '1') {}  √

3.函数名小写开头

function Afunc() {}  ×
function afunc() {}  √

4.图标尽量不用img标签,可以使用icon或者背景url来代替

5.for循环改用for of或foreach语法

6.尽量不用window.onload,把script放到dom后面

7.使用面向对象编程——es6的class,让代码结构性更强,易读

他们还考虑到了代码的健壮性,进行了各种优化。反观自己,虽然实现了功能,但是不仅使用了比较落后的jQuery,还没有考虑到拓展性的问题。所以,我将会进行相关的优化,在自学的基础上,进行使用es6、react进行代码重构。

复习下原生JS的DOM相关方法:

1.classList属性的用法:

classList 属性返回元素的类名,作为 DOMTokenList 对象。
该属性用于在元素中添加,移除及切换 CSS 类。
classList 属性是只读的,但你可以使用 add() 和 remove() 方法修改它。

document.getElementById("myDIV").classList.add("mystyle");

2.forEach()方法:

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
注意: forEach() 对于空数组是不会执行回调函数的。

<button onclick="numbers.forEach(myFunction)">点我</button>
<p>数组元素总和:<span id="demo"></span></p>
<script>
var sum = 0;
var numbers = [65, 44, 12, 4];
function myFunction(item) {
    sum += item;
    demo.innerHTML = sum;
}
</script>

3.firstChild与firstElementChild

相同点: 都是获取父元素下的第一个节点对象
不同点:
firstChild: IE6、7、8 第一个元素节点; 非IE6、7、8:返回第一个元素节点或文本节点
firstElementChild: IE6、7、8不支持;非IE6、7、8,获取第一个元素节点

4.toggleClasss()

toggleClass() 对设置或移除被选元素的一个或多个类进行切换。
该方法检查每个元素中指定的类。如果不存在则添加类,如果已设置则删除之。这就是所谓的切换效果。
不过,通过使用 "switch" 参数,您能够规定只删除或只添加类。
语法
$(selector).toggleClass(class,switch)

5.querySelector()

querySelector() 方法返回匹配指定 CSS 选择器元素的第一个子元素 。 该方法只返回匹配指定选择器的第一个元素。如果要返回所有匹配元素,需要使用 querySelectorAll() 方法替代.

react的继续学习

1.react的事件处理:

在 React 中,

属性名称采用驼峰式(如:onClick,onKeyDown),而不是全小写字母。

属性值接受一个函数,而不是字符串。

return false; 不会阻止组件的默认行为,需要调用 e.preventDefault();

如下所示:

function ActionLink() {
function handleClick(e) //考虑使用箭头函数
    e.preventDefault();
    console.log('The link was clicked.');
}

return (
    <a href="#" onClick={handleClick}>
    Click me
    </a>
);
}

这是一个以函数方式定义的组件,组件渲染一个 a 元素,设置l链接的点击事件,通过事件处理函数接收到的事件对象(e),阻止了链接的默认行为,并打印 “The link was clicked.” 到控制台上

2.react的事件对象
React 中的事件对象称之为 SyntheticEvent(合成对象),它是依据 DOM Level 3 的事件规范实现的,这样做最大的好处是可以屏蔽浏览器的差异,各种厂商的浏览器对规范的实现程度是不一样的,如果直接使用原生 DOM 事件对象的话,有些情况下你需要考虑浏览器的兼容性。而 React 通过 SyntheticEvent 已经把这些琐事帮你搞定了,在任何 React 支持的浏览器下,事件对象都有一致的接口。

React 中所有的事件处理函数都会接收到一个 SyntheticEvent 的实例 e 作为参数,如果在某些特殊的场景中,你需要用到原生的 DOM 事件对象,可以通过 e.nativeEvent 来获取。

尽量不要使用 addEventListener

晚上PPT的分享

凡哥也没怎么细说,我以为就是个每周总结。还是有不少同学做了很详细的分享,看着他们我有点惭愧。也有很多同事分享了来汉得的感悟。早上代码的review,也觉得自己之前路子走的有点偏(过度依赖jQuery),导致忽略了基础JS的学习。目前就要快到react的学习了,希望自己能够加速追上来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值