资讯专栏INFORMATION COLUMN

模块化js的尝试

go4it / 2554人阅读

最初设想

require.js

var es = {};
es.each = function(arr, fn) {
  var i = 0;
  while(arr.length !== i) {
    fn(i, arr[i]);
    i++;
  }
};
var count = 0;
var cache = {};
var module = {};
module.exports = null;
var arr = [];
var require = function(m, cb) {
  while(m[0]) {

    var js = document.createElement("script");
    js.src = m[0];
    js.id = m[0];
    js.charset = "utf-8";
    document.querySelectorAll("head")[0].appendChild(js);

    count++;
    js.onload = function() {
      count--;
      if (count === 0) {
        es.each(arr, function(i, cb) {
          cb(require, module.exports, module);
          arr[i] = module.exports;
        });
        cb.apply(null, arr)
      }
    };
    m.shift();
  }
}

var define = function(cb) {
  var id = document.currentScript.id;
  cache[id] = {
    status: "loading",
    callback: cb
  };
  arr.push(cb);
};

require(["a.js", "b.js"], function(a, b) {
  console.log(a);// aaa
  console.log(b);// bbb
});

a.js

define(function(require, exports, module) {
  module.exports = "aaa";
});

b.js

define(function(require, exports, module) {
  module.exports = "bbb";
});

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78943.html

相关文章

  • 通过源码解析 Node.js 中一个文件被 require 后所发生故事

    摘要:在中,要说如果有几乎会在每一个文件都要用到的一个全局函数和一个全局对象,那应该是非和莫属了。它们是模块机制的基石。若仍未返回,则为指定的模块路径依次加上,和,判断是否存在,若存在则返回拼接后的路径。 在 Node.js 中,要说如果有几乎会在每一个文件都要用到的一个全局函数和一个全局对象,那应该是非 require 和 module.exports 莫属了。它们是 Node.js 模块...

    lcodecorex 评论0 收藏0
  • node模块加载层级优化

    摘要:环境变量法通过上一节的源码分析,我们知道了的作用,那么如何使用或者优雅的使用来解决依赖加载问题呢尝试一最为直接的是,修改系统的环境变量。 模块加载痛点 大家也或多或少的了解node模块的加载机制,最为粗浅的表述就是依次从当前目录向上级查询node_modules目录,若发现依赖则加载。但是随着应用规模的加大,目录层级越来越深,若是在某个模块中想要通过require方式以依赖名称或相对路...

    eccozhou 评论0 收藏0
  • 尝试造了个工具类库,名为 Diana

    摘要:的另一种形式测试踩坑之路代码覆盖率单元测试的代码覆盖率统计,是衡量测试用例好坏的一个的方法。 showImg(https://segmentfault.com/img/remote/1460000012564211?w=640&h=280); 项目地址: diana文档地址: http://muyunyun.cn/diana/ 造轮子的意义 为啥已经有如此多的前端工具类库还要自己造轮...

    zhichangterry 评论0 收藏0
  • webpack 配置多页面应用一次尝试

    摘要:最近有一个项目,考虑到要进行,所以要做成多页面应用。为了保证开发速度和开发效率,所以决定使用做一套模块化配置方案。 最近有一个项目,考虑到要进行 SEO,所以要做成多页面应用。为了保证开发速度和开发效率,所以决定使用 webpack 做一套模块化配置方案。 下面主要针对一些重要的点提供思路,并不作详解。完整的代码,我会放在 github(项目地址)上供大家参考,如果有优化的地方,请在...

    lushan 评论0 收藏0
  • webpack 配置多页面应用一次尝试

    摘要:最近有一个项目,考虑到要进行,所以要做成多页面应用。为了保证开发速度和开发效率,所以决定使用做一套模块化配置方案。 最近有一个项目,考虑到要进行 SEO,所以要做成多页面应用。为了保证开发速度和开发效率,所以决定使用 webpack 做一套模块化配置方案。 下面主要针对一些重要的点提供思路,并不作详解。完整的代码,我会放在 github(项目地址)上供大家参考,如果有优化的地方,请在...

    Mike617 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<