requirejs初体验

随着网页JavaScript复杂度提升,传统的script标签引入方式不再适用。RequireJS作为AMD规范的优秀实现,提供了解决模块化、团队协作和单元测试等需求的方案。通过异步加载模块,它允许代码无需等待即可执行,提高开发效率。

随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作、模块复用、单元测试等等一系列复杂的需求。

requirejs是一个非常小巧的javascript模块载入框架,是AMD规范最好的实现者之一。同时可以和其他框架协同工作。

AMD,异步模块定义,所有的模块将被异步加载,模块加载不影响后面语句运行。所有依赖某些模块的语句均放置在回调函数中。

举个例子来说明requirejs的好处:

正常的写法:

index.html

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="a.js"></script>
    </head>
    <body>
      <span>body</span>
    </body>
</html>
a.js

(function(){
    function fun1(){
      alert("it works");
    }
    fun1();
})()

使用了块作用域来申明function防止污染全局变量,本质还是一样的,当运行上面两种例子时,alert执行的时候,html内容是一片空白的,即<span>body</span>并未被显示,当点击确定后,才出现,这就是JS阻塞浏览器渲染导致的结果。

requirejs的写法:

index.html:

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="require.js" defer async="true" ></script><!--让script异步加载-->
        <script type="text/javascript">
            require(["a"]);
        </script>
    </head>
    <body>
      <span>body</span>
    </body>
</html>

a.js

define(function(){
    function fun1(){
      alert("it works");
    }
    fun1();
})
浏览器提示了"it works",说明运行正确,但是有一点不一样,这次浏览器并不是一片空白,body已经出现在页面中。如果在fun1中查找dom节点操作属性的话,第一种方法无法获取,因为加载顺序由上而下,加载到js的时候body内元素未加载。使用requirejs,因为是异步加载,除了不会阻塞页面加载,获取到body的节点也不是问题。





评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值