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 相关文章推荐
namespace.js Javascript的命名空间库
Oct 11 Javascript
jquery显示隐藏input对象
Jul 21 Javascript
使用JQ来编写最基本的淡入淡出效果附演示动画
Oct 31 Javascript
node.js中的http.get方法使用说明
Dec 14 Javascript
javascript函数式编程实例分析
Apr 25 Javascript
在其他地方你学不到的jQuery小贴士和技巧(欢迎收藏)
Jan 20 Javascript
JavaScript操作 url 中 search 部分方法函数
Jun 15 Javascript
用headjs来管理和加载js 提高网站加载速度
Nov 29 Javascript
js实现关闭网页出现是否离开提示
Dec 07 Javascript
JavaScript中var、let、const区别浅析
Jun 24 Javascript
vue实现打印功能的两种方法
Sep 07 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
Dec 11 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
全国FM电台频率大全 - 14 江西省
2020/03/11 无线电
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
记录mysql性能查询过程的使用方法
2013/05/02 PHP
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
extJs 下拉框联动实现代码
2010/04/09 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
2012/08/17 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
Node.js中使用Buffer编码、解码二进制数据详解
2014/08/16 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
jQuery中prependTo()方法用法实例
2015/01/08 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
js仿百度切换皮肤功能(html+css)
2016/07/10 Javascript
AngularJS 单元测试(一)详解
2016/09/21 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
2017/04/14 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
浅谈小程序 setData学问多
2019/02/20 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
python数据结构之二叉树的建立实例
2014/04/29 Python
Python中文编码那些事
2014/06/25 Python
Python发送以整个文件夹的内容为附件的邮件的教程
2015/05/06 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
Guess荷兰官网:美国服饰品牌
2020/01/22 全球购物
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
广告学专业自荐信范文
2014/02/24 职场文书
小学音乐教师个人工作总结
2015/02/05 职场文书
车间班组长竞聘书
2015/09/15 职场文书
怎样写好演讲稿题目?
2019/08/21 职场文书
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL