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 相关文章推荐
accesskey 提交
Jun 26 Javascript
JS 无限级 Select效果实现代码(json格式)
Aug 30 Javascript
用javascript为页面添加天气显示实现思路及代码
Dec 02 Javascript
json中换行符的处理方法示例介绍
Jun 10 Javascript
java和javascript获取word文档的书签位置对比
Jun 19 Javascript
js计算德州扑克牌面值的方法
Mar 04 Javascript
JS集成fckeditor及判断内容是否为空的方法
May 27 Javascript
Webpack打包css后z-index被重新计算的解决方法
Jun 18 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
Jun 21 Javascript
JS实现访问DOM对象指定节点的方法示例
Apr 04 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
Aug 10 Javascript
JS控制下拉列表左右选择实例代码
May 08 Javascript
利用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缩略图等比例无损压缩,可填充空白区域补充色
2011/06/10 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
PHP截取发动短信内容的方法
2017/07/04 PHP
js Event对象的5种坐标
2011/09/12 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
datagrid框架的删除添加与修改
2013/04/08 Javascript
js和php如何获取当前url的内容
2013/09/22 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
js拼接html注意问题示例探讨
2014/07/14 Javascript
jQuery中toggle()函数的使用实例
2015/04/17 Javascript
js图片轮播效果实现代码
2020/04/18 Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
2016/05/27 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
详解vue的数据劫持以及操作数组的坑
2019/04/18 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
原生js实现随机点名功能
2019/11/05 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
Python笔记(叁)继续学习
2012/10/24 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
python语音识别实践之百度语音API
2018/08/30 Python
python中的单引号双引号区别知识点总结
2019/06/23 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
利用Python如何实时检测自身内存占用
2020/05/09 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
CSS3实现线性渐变用法示例代码详解
2020/08/07 HTML / CSS
您的网上新华书店:文轩网
2016/08/24 全球购物
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
暑期实习鉴定
2013/12/16 职场文书
善意的谎言事例
2014/02/15 职场文书
民用住房租房协议书
2014/10/29 职场文书
辞职信模板(中英文版)
2015/02/27 职场文书
公司老总年会致辞
2015/07/30 职场文书
电工生产实习心得体会
2016/01/22 职场文书
MySQL时间盲注的五种延时方法实现
2021/05/18 MySQL
解决Mysql多行子查询的使用及空值问题
2022/01/22 MySQL