Javascript模块化编程(三):require.js的用法

Javascript模块化编程(三):require.js的用法

js代码越写越多,一个文件肯定是不够用的,必须分成多个文件,依次加载,这样加载的缺点就是加载的时候,浏览器会停止网页渲染。加载的文件越多,网页失去响应的时间就越长,其次,由于js之间的依赖关系,必须保证js的加载顺序。
require.js的出现,就解决了这两个问题:

  • 实现js文件的异步加载,避免网页失去响应;
  • 管理模块之间的依赖性,便于代码的编写和维护

require.js的加载

先去官网下载最新的版本,加载完成后,加载到html页面
async="true"是设置文件异步加载 defer是ie兼容
<script src="js/require.js" async="true" defer ></script>

加载require.js以后,下一步就要加载我们自己的代码了。require.js默认的文件名后缀名是js,所以可以把main.js简写成main

data-main="js主模块的路径”

在这里插入图片描述
员工A封装的求两个数的和的函数 add.js
遵从AMD规范
声明模块,暴露模块

//当前模块,依赖别的模块开发
define(["mul"], function (mul) {
  function addFunc(x, y) {
    return x + y;
  }

  //新的函数 两个数的积和两个数的和 求和
  function xxx(x, y) {
    return addFunc(x, y) + mul.mul(x, y);
  }

  function show() {
    console.log("hello world");
  }

  //对外暴露
  return {
    addOut: addFunc,
    show: show,
    xxx: xxx,
  };
});

员工B封装的求两个数的成绩 mul.js

define(function () {
  function mul(x, y) {
    return x * y;
  }

  function show() {
    console.log("hello world mul模块");
  }
  return {
    mul: mul,
    show: show,
  };
});

主模块的写法

计算两个数
使用A同学的模块,通过AMD规范引入

  • 第一种:引入模块的路径 在回调函数中,对应参数的位置,可以拿到这个模块,对外暴露的对象
require(["demo/add"], function (add) {
  console.log(add.addOut(10, 20)); //30
  add.show();  //hello world
});
  • 第二种:我们可以通过对当前的要引入的模块进行路径配置
require.config({
  paths: {
    //后续你用配置好的名字,就相当于使用了这个路径
    add: "demo/add",
    mul: "demo/mul",
  },
});
require(["add", "mul"], function (add, mul) {
  console.log(add.addOut(10, 20));  //30
  add.show();

  console.log(mul.mul(10, 20));  //200
  mul.show();

  console.log(add.xxx(10, 20));  //230
});

上述案例的文件架构
在这里插入图片描述

posted @ 2020-07-22 15:28  Cupid05  阅读(208)  评论(0编辑  收藏  举报