zoukankan      html  css  js  c++  java
  • CommonJS AMD require.js

    2009年,美国程序员Ryan Dahl创造了node.js项目,将javascript语言用于服务器端编程。这标志"Javascript模块化编程"正式诞生。

    在CommonJS中,有一个全局方法require()用于加载模块,如数学模块math.js  var math = require("math"); math.add(2,3);// 5

    这种方式加载模块在浏览器环境有严重问题,就是代码在require()处阻塞,模块都放在服务器端,可能阻塞很长时间,取决于网络环境。但对服务器端不是问题,因为模块都在服务器本地,可以同步加载,只需等待硬盘读取时间

    因此,浏览器端的模块,不能使用同步加载,需要异步加载,AMD应运而生

    AMD全称Asynchronous Module Definition,即异步模块定义,采用异步方式加载模块,模块的加载不影响后面语句的执行, 所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,回调函数才会执行

    AMD也采用require(),但需要两个参数require([module],callback),第一个参数是数据,里面放入要加载的模块,第二个参数是加载成功后的回调函数

      require(["math"],function(math){math.add(2,3)});

      math加载与math.add()不是同步的,浏览器不会假死,更适合浏览器环境

    require.js加载的模块,采用AMD规范。也就是说,模块必须按照AMD的规定来写。具体来说,就是模块必须采用特定的define()函数来定义。如果一个模块不依赖其他模块,那么可以直接定义在define()函数之中。

      例如math.js模块:

      // math.js

      define(function (){

        var add = function (x,y){

          return x+y;

        };

        return {

          add: add
        };

      });

      如果这个模块还依赖其他模块,那么define()函数的第一个参数,必须是一个数组,指明该模块的依赖性。

       define(['myLib'], function(myLib){

        function foo(){

          myLib.doSomething();

        }

        return {

          foo : foo

        };

      });

  • 相关阅读:
    PHP中require()文件包含的正确用法
    Android Studio开发环境的配置
    卡宴
    Android Studio 简单介绍和使用问题小结
    android:ToolBar详解(手把手教程)
    Android --- 读取系统资源函数getResources()小结
    Android Studio 提示Error running app: No Android facet found for app
    iOS开发之-- 抢购、距活动结束,剩余时间倒计时
    iOS开发之--实现倒计时显示时分秒
    iOS开发之--获取验证码倒计时及闪烁问题解决方案
  • 原文地址:https://www.cnblogs.com/zawjdbb/p/7484649.html
Copyright © 2011-2022 走看看