最近写的文章有点多,主要关注前端的一些内容,把当前的理解做个简单的记录
如果要说模块,首先要说明这个东西解决了什么问题,其实我是觉得这个东西主要起两个作用
1、隔离 2、封装
首先说隔离,这也是大家常说的,小明声明一个变量,小李也声明一个同名的变量,造成命名冲突。有了模块之后,两个人写的东西是相互隔离的,就避免了命名冲突。
封装,也比较容易理解。比如说,我写了一个数学计算模块Math.js,包括了各种运算方法,这样封装在一起层次就比较清晰
那么模块就主要起这两个作用
下面,开始慢慢的把思路缕清楚
现在的ES6非常强大,已经原生支持模块操作,也就是不再需要第三方的依赖,这是一个非常好的消息。在说明模块化之前,首先想说一下JS的异步。
如果想把异步说清楚,需要专门列出一章,但是,至少其中的一些基本思路要了解。所谓异步,就是把某些操作挪到队列中,调用函数返回,当得到结果之后再回过来处理。
简单说,写一个异步语句,是V8引擎能支持这么做才会异步。
好了,现在首先来个例子:
<input id='btn' type='button' value='复杂计算'/> <script> document.getElementById('btn').onclick=async evt=>{ //计算复杂的操作 } </script>
看这个例子,点击页面的某个按钮,在以前就是挂载一个click方法,时过境迁,到了ES6,我们可以在这个方法上面加一个async。这个关键字实在太强大了!
因为可以把这个方法异步处理,比方说,假如需要点击之后进行某个耗时或者CPU密集计算时,就不用