RequireJS的目标是鼓励代码的模块化,它使用了不同于传统script标签的脚本加载步骤。可以用它来加速、优化代码,但其主要目的还是为了代码的模块化。它鼓励在使用脚本时以module ID替代URL地址。

baseUrl亦可通过RequireJS config手动设置。如果没有显式指定config及data-main,则默认的baseUrl为包含RequireJS的那个HTML页面的所属目录。

页面顶层script标签含有一个特殊的属性data-main,require.js使用它来启动脚本加载过程,而baseUrl一般设置到与该属性相一致的目录。

RequireJS入门

project.html

<script data-main="scripts/main" src="./require.js"></script>

main.js

require(['helper/util'],function(util){
    util.sayhello();
    alert(util.name);
});

util.js

define(function(){
    return {
        sayhello:function(){
            alert('我是一个方法')
        },
        name:'我是一个属性'
    }
});

requirejs config配置

index.html

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script data-main="main" src="./require.js"></script>
</head>
<body>
<div id="demo">这是一个简单的demo</div>
</body>

main.js

require.config({
    baseUrl:'js/lib',
    paths:{
        helper:'../helper'
    }
});
 
require(['jquery','helper/util'],function($,util){
    console.log($.getEl('#demo'));
    console.log($.getEl('#demo').innerHTML);
    util.sayhello();
});

util.js

define(function(){
    return {
        sayhello:function(){
            console.log('hello requirejs')
        }
    }
});

jquery.js
//函数式定义模块

define(function(){
    return {
        getEl:function(elId){
            return document.querySelector(elId)
        }
    }
});

发表评论

邮箱地址不会被公开。 必填项已用*标注