zoukankan      html  css  js  c++  java
  • requirejs小记

    require.js是一个模块加载器,用在javascript的环境中,实现模块化开发...

    惯例演示demo...

    总体结构图

    demo.html

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title></title>
    <script data-main="js/main" src="js/libs/require/require.js" type="text/javascript"></script>
    </head>
    <body>
    <div id="main">
    <div id="logo">
    </div>
    <div id="page">
    </div>
    </div>
    </body>
    </html>

    在requirejs加载好后根据data-main加载指定文件

    main.js

    require.config({
    paths: {//配置加载路径
    QW: 'libs/qwrap/qwrap-youa-debug',
    text: 'libs/require/text'//requirejs的一个文本插件
    },
    waitSeconds: 20
    });

    require(['app'], function (App) {//加载app.js,执行初始化

    App.initialize();
    });


    app.js

    define(['QW', 'models/model1'], function (QW, m1) {//加载依赖js,同时define内部也可以用require('')去加载

    var initialize = function () {
    m1.Run();
    }

    return {
    initialize: initialize
    };
    });


    model1.js

    define([
    'QW',
    'models/model2'
    ], function (QW, m2) {

    var Run = function () {

    W("#logo").html('<h1>This is Logo by M1</h1>');

    m2.Run();
    };

    return {
    Run: Run
    };
    });


    model2.js

    define([
    'QW', 'require'
    ], function (QW, require) {

    var Run = function () {
    if (W("#page").html() == '') {

    require(['./model3'], function (m3) {//这里用require([],callback)的方式,如果直接require('')那么m3和m4都会加载进来

    W("#page").html(m3.data);
    })
    } else {

    require(['./model4'], function (m4) {

    W("#page").html(m4.data);
    })
    }
    };

    return {
    Run: Run
    };
    });


    model3.js

    define(function (require, exports) {//无依赖加载时,默认传入require等...
    data: "MMMMMMMMMMM333333333333333"
    });


    model4.js

    define({
    data: "MMMMMMMMMMM444444444444444"
    });


    运行结果图



    require('xxx')提供同步加载,只能用在define中

    require([..],callback)异步加载,全加载好后执行callback,官方提供了order插件可以同时加载按序执行

    define([..],callback)加载依赖后执行callback


    与seajs的直接异同

    requirejs加载常用库无需改造,功能用法灵活多变

    seajs加载常用库需用define包装,接口简单统一,


    更多详细介绍查看官方地址http://requirejs.org/

    demo下载

  • 相关阅读:
    面向对象之prototype,__proto__
    Screen对象
    location对象
    history对象
    JS计时器
    window对象
    Dom操作html详细
    终端 git log 修改样式
    null 和 NULL 判断
    textfield设置左边距
  • 原文地址:https://www.cnblogs.com/ygm125/p/2429392.html
Copyright © 2011-2022 走看看