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 相关文章推荐
Visual Studio中的jQuery智能提示设置方法
Mar 27 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
Dec 19 Javascript
js中的数组Array定义与sort方法使用示例
Aug 29 Javascript
判断滚动条到底部的JS代码
Nov 04 Javascript
Javascript:为input设置readOnly属性(示例讲解)
Dec 25 Javascript
jquery+ajax实现直接提交表单实例分析
Jun 17 Javascript
JavaScript中this的四个绑定规则总结
Sep 26 Javascript
jQuery弹出层插件popShow(改进版)用法示例
Jan 23 Javascript
基于JavaScript实现瀑布流效果
Mar 29 Javascript
基于vue的换肤功能的示例代码
Oct 10 Javascript
服务端预渲染之Nuxt(使用篇)
Apr 08 Javascript
vue实现同时设置多个倒计时
May 20 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
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
phpmyadmin下载、安装、配置教程
2017/05/16 PHP
完美解决Thinkphp3.2中插入相同数据的问题
2017/08/01 PHP
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
ext实现完整的登录代码
2008/08/08 Javascript
js 中的switch表达式使用示例
2020/06/03 Javascript
jQuery - css() 方法示例详解
2014/01/16 Javascript
jquery实现通用版鼠标经过淡入淡出效果
2014/06/15 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
jquery悬浮提示框完整实例
2016/01/13 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
Ionic 2 实现列表滑动删除按钮的方法
2017/01/22 Javascript
vue-router单页面路由
2017/06/17 Javascript
vue绑定设置属性的多种方式(5)
2017/08/16 Javascript
react实现一个优雅的图片占位模块组件详解
2017/10/30 Javascript
在小程序中使用腾讯视频插件播放教程视频的方法
2018/07/10 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
2020/06/16 Javascript
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
python和ruby,我选谁?
2017/09/13 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
python 正确保留多位小数的实例
2018/07/16 Python
对python中的乘法dot和对应分量相乘multiply详解
2018/11/14 Python
解决安装pycharm后不能执行python脚本的问题
2019/01/19 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
tensorflow的计算图总结
2020/01/12 Python
python中如何进行连乘计算
2020/05/28 Python
零基础小白多久能学会python
2020/06/22 Python
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
介绍一下linux的文件系统
2015/10/06 面试题
搞笑爱情保证书
2014/04/29 职场文书
运动会通讯稿600字
2015/07/20 职场文书
创业计划书介绍
2019/04/24 职场文书