seajs集成jquery的一个坑

本文探讨了在使用SEAJs加载jQuery时遇到的问题,即由于模块ID与路径不匹配而导致无法正确加载jQuery。文章详细解释了SEAJs的设计原则,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

var $ = require("jquery"); 

今天在用seajs集成js的时候,老是发现$获取不到,但是文件又加载进去了,后来找了半天发现是这个问题。

本质的原因在于seajs有一个路径和ID匹配的原则

seajs的设计思想是,路径即ID。一般在调用define()方法时,如果只传递一个factory function,那么这个模块就是个匿名模块;或者传递define(module_id, dependency, factory),这个模块就是个具名模块
 
如果一个文件就是一个模块,那么匿名模块就可以了。但是在生产环境中,往往会把多个模块放到一个文件里,但是路径只有一个,如何知道要加载哪个模块呢?这时候就需要给其中一个模块赋予module_id,和path保持一致,seajs就知道应该加载这个ID和path匹配的模块了
 
如果具名模块的id和require的path参数不匹配,就会返回null,这就是我出现这个错误的原因:
在jquery底部的代码有这样一行
define("jquery/jquery/1.10.1/jquery-debug", [], function () { return jQuery; } );// module_id是"jquery/jquery/1.10.1/jquery-debug" 

这个id和require的时候path不同,导致这个现象。解决方法很简单

define(function(){return jQuery});  

把定义的id和依赖全部删了就行了。

转载于:https://www.cnblogs.com/hongchenok/p/3923876.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值