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实现一张图片点击鼠标放大再点缩小
Sep 29 Javascript
jquery 实现两级导航菜单附效果图
Mar 07 Javascript
jQuery+PHP打造滑动开关效果
Dec 16 Javascript
jQuery实现的仿select功能代码
Aug 19 Javascript
jQuery 获取页面li数组并删除不在数组中的key
Aug 02 Javascript
微信小程序图表插件(wx-charts)实例代码
Jan 17 Javascript
AngularJS中的拦截器实例详解
Apr 07 Javascript
Vue精简版风格概述
Jan 30 Javascript
JavaScript 高性能数组去重的方法
Sep 20 Javascript
微信小程序开发注意指南和优化实践(小结)
Jun 21 Javascript
vue+vant实现购物车全选和反选功能
Nov 17 Vue.js
react 路由Link配置详解
Nov 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
强烈推荐:php.ini中文版(2)
2006/10/09 PHP
php采集时被封ip的解决方法
2010/08/29 PHP
PHP中使用gettext来支持多语言的方法
2011/05/02 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
js验证表单大全
2006/11/25 Javascript
克隆javascript对象的三个方法小结
2011/01/12 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
深入理解js promise chain
2016/05/05 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
详解vue父子模版嵌套案例
2017/03/04 Javascript
基于Vue中点击组件外关闭组件的实现方法
2018/03/06 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
vue项目中极验验证的使用代码示例
2019/12/03 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
2021/02/26 Vue.js
Python的Django框架中从url中捕捉文本的方法
2015/07/20 Python
Python中单例模式总结
2018/02/20 Python
python实现俄罗斯方块
2018/06/26 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
Django实现学生管理系统
2019/02/26 Python
python 解决flask uwsgi 获取不到全局变量的问题
2019/12/22 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
Sentry错误日志监控使用方法解析
2020/11/12 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
LN-CC美国:伦敦时尚生活的缩影
2019/02/19 全球购物
超市创业计划书
2014/09/15 职场文书
幼儿园见习报告
2014/10/30 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
花田少年史观后感
2015/06/16 职场文书
创业计划书之干洗店
2019/09/10 职场文书