【模块化】 RequireJS入门教程总结与推荐

时间:2023-03-09 16:48:12
【模块化】 RequireJS入门教程总结与推荐

之所以学习RequireJS,肯定对 模块化有一定的理解。这里有几篇学习 RequireJS的文章,推荐给大家去学习。

  1. Javascript模块化编程(一):模块的写法
  2. Javascript模块化编程(二):AMD规范
  3. Javascript模块化编程(三):require.js的用法 【require的使用,paths,baseUrl,shim 以及 deps,exports】
  4. ~~~~~~~~~~~~~上面这三篇是阮一峰老师的文章,【简单易懂】~~~~~~~~~~~~~~~~
  5. 但是对 requirejs 讲的内容,感觉少了点东西
  6. 快速理解RequireJs 【看后面作者遇到的坑,以及 shim 中的 init 方法】

总结:【只需要了解几个属性就可以用起来啦】【源码】github 源码

    1. 参数1:依赖的模块,数组形式,

      参数2:回调函数,参数:跟每个 依赖模块exports的对象顺序是一致的

      require(['module1','module2'],function(){
      //TODO:
      })
require.config({
baseUrl:' ' ,
paths:{ ' jquery' : 'lib/jquery' },
shim:{ }
})
  1. 什么叫AMD规范,如何编写AMD规范的脚本
    1. define([依赖的模块],function(){
          //TODO: 自己想写的方法,或者属性,但是要对外输出,则需要有一个 return, return 出来的,其他模块可以拿来用
      })

详细:【相对详细一点,哈】

学习了上面的几篇文章之后,尝试做了一个实践了一下,来理解如何使用RequireJS,其实真的不难。

  1. RequireJS是基于AMD来实现的
    1. 什么事AMD,是什么CommonJS?
    2. CommonJS 【针对服务端】
      1. Node作为一个服务端语言,如果没有模块化的化,根本没办法进行复杂性的编程。
      2. So,NodeJS就参照了 CommonJS规范实现了 模块系统
      3. CommonJS中 有一个全局方法 require,来加载模块

        【模块化】 RequireJS入门教程总结与推荐

    3. AMD 【有了服务端的,当前也要有前端的】
      1. 为什么不用CommonJS,而还需要去选AMD呢?
        1. 因为CommonJS不适用于浏览器端,因为JS脚本,来自服务端,请求脚本到浏览器需要时间,如果等待加载完,在执行下一步,那么整个页面渲染就卡住了,应用就停住了。
        2. So,浏览器端不能用  同步加载 , 而要用 异步加载。
      2. AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"
      3. 异步加载AMD
        1. 异步加载模块的话,那么就存在一个问题了,如果像CommonJS只有一个参数,那么肯定是不行的,因为怎么知道它什么时候加载完啊。
        2. So, 浏览器端,还需要一个  回调函数
          【模块化】 RequireJS入门教程总结与推荐
        3. 这边有两个参数,第一个参数是一个数组,表示依赖的模块回调函数参数,跟依赖模块的数组顺序必须是一致的。
  2. 每次加载模块,总要输入相对路径,或者绝对路径,长长的一大串,坑爹啊,如果多个地方调用了,那后期文件修改了位置,那岂不是修改到吐?
    1. So,paths 就是必须的,跟模块取一个别名
      【模块化】 RequireJS入门教程总结与推荐
  3. 啥,你说你的JS模块文件,都是 某个指定的路径下?  baseUrl 就出来了
    1. 【模块化】 RequireJS入门教程总结与推荐
  4. 我要是早期脚本,不是按照AMD来写的,那肿么办呢?  shim 属性
    1. 符合AMD规范的,可以直接requirejs 进来使用,但是不符合 AMD规范的,则需要配置 shim 属性和shim中的 exports属性
    2. 如果不符合AMD规范的,还依赖其他控件,需要配置 shim属性里面的 deps 属性
    3. 【模块化】 RequireJS入门教程总结与推荐