♫【RequireJS】

RequireJS

RequireJS和AMD规范

Javascript模块化编程(一):模块的写法
Javascript模块化编程(二):AMD规范
Javascript模块化编程(三):require.js的用法

目前,通行的Javascript模块规范共有两种:CommonJS和AMD

这对服务器端不是一个问题,因为所有的模块都存放在本地硬盘,可以同步加载完成,等待时间就是硬盘的读取时间。但是,对于浏览器,这却是一个大问题,因为模块都放在服务器端,等待时间取决于网速的快慢,可能要等很长时间,浏览器处于"假死"状态。因此,浏览器端的模块,不能采用"同步加载"(synchronous),只能采用"异步加载"(asynchronous)。这就是AMD规范诞生的背景。

AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"

test.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
    <img class="lazy" data-original="http://pic002.cnblogs.com/images/2012/382256/2012080118323766.gif" width="300" height="225">
    <script src="js/require.js" data-main="js/main"></script>
</body>
</html>

main.js

require.config({
    baseUrl: "js",
    paths: {
        "jquery": "lib/jquery",
        "underscore": "lib/underscore",
        "backbone": "lib/backbone"
    },
    shim: {
        'underscore': {
            exports: '_'
        },
        'backbone': {
            deps: ['underscore', 'jquery'],
            exports: 'Backbone'
        },
        'jquery.lazyload': {
            deps: ['jquery'],
            exports: 'jQuery.fn.lazyload'
        }
    }
})

require(['jquery', 'underscore', 'backbone'], function(/*$, _, Backbone*/aa, bb, cc) {
    console.log(aa)
    console.log($)
    console.log(bb)
    console.log(_)
    console.log(cc)
    console.log(Backbone)
})

require(['math'], function(mathaaa) {
    console.log(mathaaa.add(1, 1))
})

require(['jquery.lazyload'], function(lazyload) {
    //console.log(lazyload)
    $('.lazy').lazyload()
})

math.js

define(function() {
    var add = function(x, y) {
        return x + y
    }
    return {
        add: add
    }
})
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
    <script src="require.js"></script>
    <script>
        requirejs.config({
            baseUrl: 'js/lib',
            paths: {
                app: '../app'
            }
        })
        console.log(requirejs === require)
        requirejs(['app'], function(app) {
        })
    </script>
</body>
</html>
原文地址:https://www.cnblogs.com/jzm17173/p/2835786.html