require.js

1.引入require.js

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script data-main="./resources/main.js" src="./resources/require.js"></script>
</body>
</html>

其中data-main属性的作用是,指定网页程序的主模块,在上例中,就是js目录下面的main.js,这个文件会第一个被require.js加载
且由于require.js默认的文件后缀名是js,所以可以把main.js简写成main

2.配置模块路径

main.js中可以配置路径:

require.config({
    paths: {
        'jquery':'lib/jquery.min'
    }
})

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button onclick="test()">测试</button>
    <script data-main="./resources/main.js" src="./resources/require.js"></script>
    <script>
        function test() {
            require(['jquery'], function ($) {
                $('body').css({'backgroundColor': 'dodgerblue'});
            })
        }
    </script>
</body>
</html>

3.配置公共路径

main.js:

require.config({
    baseUrl: 'resources/lib',
    paths: {
        'jquery': 'jquery.min',
        'angular': 'angular.min'
    }
})

baseUrl为基路径,但是要注意baseUrl要从main.js所在目录开始编写
注意,此时require方法是在test函数中,因此不存在加载先于<script data-main="./resources/main.js" src="./resources/require.js"></script>的问题
如果此时的配置是这样的:

    <script data-main="./resources/main.js" src="./resources/require.js"></script>
    <script>
        require(['jquery'], function ($) {
            $('body').css({ 'backgroundColor': 'dodgerblue' });
        })
    </script>

此时require可能相较于main.js中的代码率先执行,发生错误
未解决上述问题,可以将require方法写在main.js内部:

require.config({
    baseUrl: 'resources/lib',
    paths: {
        'jquery': 'jquery.min',
        'angular': 'angular.min'
    }
})
require(['jquery'], function ($) {
    $('body').css({ 'backgroundColor': 'dodgerblue' });
})
上一篇:ES6——Proxy实现Web服务,进行方法拦截,通过方法名称生成网址


下一篇:repo文件中baseurl的三种形式