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 相关文章推荐
Jquery多选框互相内容交换的实例代码
Jul 04 Javascript
利用jquery写的左右轮播图特效
Feb 12 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
Jun 03 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
Nov 24 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
Oct 01 Javascript
js阻止冒泡和默认事件(默认行为)详解
Oct 20 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
Dec 08 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
Dec 27 Javascript
从零学习node.js之搭建http服务器(二)
Feb 21 Javascript
nginx配置React静态页面的方法教程
Nov 03 Javascript
深入理解Node module模块
Mar 26 Javascript
Vuejs通过拖动改变元素宽度实现自适应
Sep 02 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
咖啡的传说和历史
2021/03/03 新手入门
php简单获取目录列表的方法
2015/03/24 PHP
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
自己的js工具 Cookie 封装
2009/08/21 Javascript
Javascript中的getUTCDay()方法使用详解
2015/06/10 Javascript
js实现图片无缝滚动
2015/12/23 Javascript
正则表达式优化JSON字符串的技巧
2015/12/24 Javascript
nodejs个人博客开发第五步 分配数据
2017/04/12 NodeJs
详解ES6语法之可迭代协议和迭代器协议
2018/01/13 Javascript
Vue 中axios配置实例详解
2018/07/27 Javascript
手把手教你写一个微信小程序(推荐)
2018/10/17 Javascript
详解create-react-app 2.0版本如何启用装饰器语法
2018/10/23 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
2019/06/19 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
python and or用法详解
2019/06/26 Python
python命名空间(namespace)简单介绍
2019/08/10 Python
python函数参数(必须参数、可变参数、关键字参数)
2019/08/16 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
韩国女装NO.1网店:STYLENANDA
2016/09/16 全球购物
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
C++:局部变量能否和全局变量重名
2014/03/03 面试题
秋天的怀念教学反思
2014/04/28 职场文书
大学生精神文明先进个人事迹材料
2014/05/02 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
2016元旦文艺汇演主持词(开场白+结束语)
2015/12/03 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS