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 相关文章推荐
javascript判断单选框或复选框是否选中方法集锦
Apr 04 Javascript
关于js二维数组和多维数组的定义声明(详解)
Oct 02 Javascript
js实现点击每个li节点,都弹出其文本值及修改
Dec 15 Javascript
手机端js和html5刮刮卡效果
Sep 29 Javascript
JavaScript实现图像模糊化的方法实例
Jan 15 Javascript
基于JavaScript实现焦点图轮播效果
Mar 27 Javascript
BootStrap 表单控件之单选按钮水平排列
May 23 Javascript
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
May 24 Javascript
Bootstrap modal只加载一次数据的解决办法(推荐)
Nov 24 Javascript
vue-cli系列之vue-cli-service整体架构浅析
Jan 14 Javascript
微信小程序如何调用新闻接口实现列表循环
Jul 02 Javascript
vue-cli点击实现全屏功能
Mar 07 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执行速度全攻略(下)
2006/10/09 PHP
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
2013/04/23 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
php中final关键字用法分析
2016/12/07 PHP
php实现二叉树中和为某一值的路径方法
2018/10/14 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
JQuery实现鼠标移动到图片上显示边框效果
2014/01/09 Javascript
js实现改进的仿蓝色论坛导航菜单效果代码
2015/09/06 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
JS实现微信里判断页面是否被分享成功的方法
2017/06/06 Javascript
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
关于Vue实现组件信息的缓存问题
2017/08/23 Javascript
Angular4学习教程之HTML属性绑定的方法
2018/01/04 Javascript
Vue瀑布流插件的使用示例
2018/09/19 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
Django中login_required装饰器的深入介绍
2017/11/24 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
python使用xlrd模块读取xlsx文件中的ip方法
2019/01/11 Python
python地震数据可视化详解
2019/06/18 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
2019/08/12 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
2020/05/10 Python
Python xpath表达式如何实现数据处理
2020/06/13 Python
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
拾金不昧表扬信范文
2014/01/11 职场文书
2014年教师节讲话稿5篇
2014/09/10 职场文书
三八节活动简报
2015/07/20 职场文书
情人节单身感言
2015/08/03 职场文书
校园运动会广播稿
2015/08/19 职场文书
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记