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 相关文章推荐
判断目标是否是window,document,和拥有tagName的Element的代码
May 31 Javascript
jQuery实现的仿select功能代码
Aug 19 Javascript
javascript实现瀑布流动态加载图片原理
Aug 12 Javascript
详解javascript立即执行函数表达式IIFE
Feb 13 Javascript
ES6学习教程之块级作用域详解
Oct 09 Javascript
Vue服务器渲染Nuxt学习笔记
Jan 31 Javascript
JS实现的input选择图片本地预览功能示例
Aug 29 Javascript
小程序实现左滑删除效果
Jul 25 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
Aug 27 Javascript
js中比较两个对象是否相同的方法示例
Sep 02 Javascript
countup.js实现数字动态叠加效果
Oct 17 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
Apr 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
分页显示Oracle数据库记录的类之二
2006/10/09 PHP
判“新”函数:得到今天与明天的秒数
2006/10/09 PHP
使用PHP实现二分查找算法代码分享
2011/06/24 PHP
Yii分页用法实例详解
2014/12/04 PHP
php使用curl打开https网站的方法
2015/06/17 PHP
php接口技术实例详解
2016/12/07 PHP
PHP实现的MD5结合RSA签名算法实例
2017/10/07 PHP
学习YUI.Ext第五日--做拖放Darg&Drop
2007/03/10 Javascript
JavaScript 选中文字并响应获取的实现代码
2011/08/28 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
2013/02/06 Javascript
jQuery Mobile的loading对话框显示/隐藏方法分享
2013/11/26 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
jQuery实现的多滑动门,多选项卡效果代码
2016/03/28 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
Angular4实现鼠标悬停3d倾斜效果
2017/10/25 Javascript
bootstrap table支持高度百分比的实例代码
2018/02/28 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
vue在线动态切换主题色方案
2020/03/26 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
详解Python中的from..import绝对导入语句
2016/06/21 Python
浅谈tensorflow 中tf.concat()的使用
2020/02/07 Python
python实现IOU计算案例
2020/04/12 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
DC Shoes澳大利亚官方网上商店:购买DC鞋子
2019/10/25 全球购物
公司拓展活动方案
2014/02/13 职场文书
党员四风问题个人对照检查材料
2014/10/26 职场文书
2016年秋季趣味运动会开幕词
2016/03/04 职场文书
企业管理制度设计时要注意的几种“常见病”!
2019/04/19 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
导游词之大雁塔景区
2019/09/17 职场文书
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers