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 相关文章推荐
iis6+javascript Add an Extension File
Jun 13 Javascript
jquery validator 插件增加日期比较方法
Feb 21 Javascript
JavaScript中各种编码解码函数的区别和注意事项
Aug 19 Javascript
Egret引擎开发指南之编译项目
Sep 03 Javascript
jQuery中大家不太了解的几个方法
Mar 04 Javascript
jQuery中常用的遍历函数用法实例总结
Sep 01 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
Jun 07 Javascript
JQuery Ajax 异步操作之动态添加节点功能
May 24 jQuery
react开发教程之React 组件之间的通信方式
Aug 12 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
Dec 26 Javascript
vue.js实现h5机器人聊天(测试版)
Jul 16 Javascript
详解Vue的options
May 15 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
php5 and xml示例
2006/11/22 PHP
php smarty模版引擎中的缓存应用
2009/12/02 PHP
PHP mcrypt可逆加密算法分析
2011/07/19 PHP
PHP计数器的实现代码
2013/06/08 PHP
php使用file函数、fseek函数读取大文件效率对比分析
2016/11/04 PHP
PHP Header失效的原因分析及解决方法
2016/11/16 PHP
JS写的数字拼图小游戏代码[学习参考]
2008/10/29 Javascript
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
JQuery 文本框使用小结
2010/05/22 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
JS中mouseup事件丢失的原因与解决办法
2017/06/14 Javascript
vue+iview+less+echarts实战项目总结
2018/02/22 Javascript
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
最简单的JS实现json转csv的方法
2019/01/10 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
2019/03/28 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
使用python绘制人人网好友关系图示例
2014/04/01 Python
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
Django自带的加密算法及加密模块详解
2019/12/03 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
python 实现Requests发送带cookies的请求
2021/02/08 Python
苹果香港官方商城:Apple香港
2016/09/14 全球购物
生物化工工艺专业应届生求职信
2013/10/08 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
员工辞退通知书
2015/04/17 职场文书
2015年社区反邪教工作总结
2015/10/14 职场文书
2016五一手机促销广告语
2016/01/28 职场文书
深度学习tensorflow基础mnist
2021/04/14 Python
MIME类型中application/xml与text/xml的区别介绍
2022/01/18 HTML / CSS
angular异步验证器防抖实例详解
2022/03/31 Javascript