seajs中模块依赖的加载处理实例分析


Posted in Javascript onOctober 10, 2017

本文实例讲述了seajs中模块依赖的加载处理。分享给大家供大家参考,具体如下:

最近在做项目的时候发现一些关于模块依赖问题,特记录下:

比如现有3个文件:

/*init.js*/
define(function(require, exports, module){
 require('jquery');
 require('jquery.plugA');
})
/*jquery.plugA.js*/
define(function(require, exports, module){
 require('jquery');
 require('jquery.plugB');
 //code...
})
/*jquery.plugB.js*/
define(functioin(require, exports, module){
 require('jquery');
 //code...
})

比如执行init.js时,init.js、jquery.plugA.js、jquery.plugB.js都会依赖到jquery,那么这种情况下seajs对jquery如何处理的呢?只执行一次?执行多次?还是其他方式?

此处参考玉伯的回答:

我对模块调用的理解是,调用是指获取某个模块的接口。在 SeaJS 里,只有 seajs.use, require.async, 和 require 会产生模块调用,比如: var a = require('./a')执行 require(‘./a') 时,会获取模块的接口,如果是第一次调用,会初始化模块 a,以后再调用时,直接返回模块 a 的接口; define 只是注册模块信息,比如打包之后:define(id, deps, factory) 是注册了一个模块到 seajs.cache 中,define 类似:seajs.cache[id] = { id: id, dependencies: deps, factory: factory }

是纯注册信息。

require('./a') 时,才会执行 seajs.cache['a'].factory, 执行后得到 seajs.cache['a'].exports

扩展:URI与URL的区别

URI:Uniform Resource Identifiers ,统一资源标识符;

URL:Uniform Resource Locators ,统一资源定位符;

URN:Uniform Resource Names,统一资源名称

URL,URN是URI的子集.

参考

Module.STATUS的具体含义:https://github.com/seajs/seajs/issues/303
分清 URI、URL 和 URNhttp://www.ibm.com/developerworks/cn/xml/x-urlni.html

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
js 变量类型转换常用函数与代码[比较全]
Dec 01 Javascript
一次失败的jQuery优化尝试小结
Feb 06 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
Dec 22 Javascript
jQuery实现手机版页面翻页效果的简单实例
Oct 05 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
Feb 14 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
Mar 17 Javascript
jQuery 开发之EasyUI 添加数据的实例
Sep 26 jQuery
JS控制鼠标拒绝点击某一按钮的实例
Dec 29 Javascript
js事件触发操作实例分析
Jun 21 Javascript
微信小程序实现二维码签到考勤系统
Jan 16 Javascript
详解CocosCreator消息分发机制
Apr 16 Javascript
Vue中Object.assign清空数据报错的解决方案
Mar 03 Vue.js
利用JS hash制作单页Web应用的方法详解
Oct 10 #Javascript
认识jQuery的Promise的具体使用方法
Oct 10 #jQuery
JavaScript如何获取到导航条中HTTP信息
Oct 10 #Javascript
使用Dropzone.js上传的示例代码
Oct 10 #Javascript
React中上传图片到七牛的示例代码
Oct 10 #Javascript
基于对象合并功能的实现示例
Oct 10 #Javascript
聊聊Vue.js的template编译的问题
Oct 09 #Javascript
You might like
PHP EOT定界符的使用详解
2008/09/30 PHP
php汉字转拼音的示例
2014/02/27 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
静态的动态续篇之来点XML
2006/12/23 Javascript
传递参数的标准方法(jQuery.ajax)
2008/11/19 Javascript
再谈javascript 动态添加样式规则 W3C校检
2009/12/25 Javascript
javascript getElementsByTagName
2011/01/31 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
2015/08/03 Javascript
AngularJS入门教程之Scope(作用域)
2016/07/27 Javascript
原生JS:Date对象全面解析
2016/09/06 Javascript
简单实现jQuery弹幕效果
2017/05/06 jQuery
原生JS实现自定义滚动条效果
2020/10/27 Javascript
微信小程序checkbox组件使用详解
2018/01/31 Javascript
使用 vue-i18n 切换中英文效果
2018/05/23 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
使用Karma做vue组件单元测试的实现
2020/01/16 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
python增加矩阵维度的实例讲解
2018/04/04 Python
Python贪心算法实例小结
2018/04/22 Python
python实现屏保程序(适用于背单词)
2019/07/30 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
2019/10/24 Python
python 如何去除字符串头尾的多余符号
2019/11/19 Python
Python函数式编程实例详解
2020/01/17 Python
Python MySQL 日期时间格式化作为参数的操作
2020/03/02 Python
中国最大的潮流商品购物网站:YOHO!BUY有货
2017/01/07 全球购物
几个常见的软件测试问题
2016/09/07 面试题
学习交流会主持词
2014/04/01 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
领导干部保密承诺书
2014/08/30 职场文书
给客户的检讨书
2014/12/21 职场文书
2015世界地球日活动总结
2015/02/09 职场文书
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python