首页 > 代码库 > 解决sea.js引用jQuery提示$ is not a function的问题
解决sea.js引用jQuery提示$ is not a function的问题
在使用sea.js的如下写法引用jQuery文件时,
//main.js
define(function(require,exports,module){ var $ = require(‘jquery-3.1.0.min‘); $(‘#name‘).html(‘helloworld‘);})
会报错,提示$ is not a function;
原因在于jQuery是默认支持AMD规范的,而sea.js是遵循CMD规范进行加载;这两种规范对外提供模块时的定义方法不一样:
// CMDdefine(function(require, exports, module) { var a = require(‘./a‘) a.doSomething() // 此处略去 100 行 var b = require(‘./b‘) // 依赖可以就近书写 b.doSomething() // ...})// AMD 默认推荐的是define([‘./a‘, ‘./b‘], function(a, b) { // 依赖必须一开始就写好 a.doSomething() // 此处略去 100 行 b.doSomething() // ...})
jQuery对外提供模块时默认支持的是AMD规范,其写法为:
if ( typeof define === "function" && define.amd ) { define( "jquery", [], function() { return jQuery; } );}
因此,如果想让jQuery支持CMD规范,则将以上代码修改为如下代码即可:
if ( typeof define === "function") { define(function(require,exports,module){ return jQuery; });}
其区别就在于define方法支持规范的判断,以及参数类型的不同。
解决sea.js引用jQuery提示$ is not a function的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。