zoukankan      html  css  js  c++  java
  • seajs集成jquery的一个坑

    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和依赖全部删了就行了。

  • 相关阅读:
    D3DPT_TRIANGLESTRIP 与 D3DPT_TRIANGLEFAN 的区别
    [转]DrawPrimitive 详解Direct3DDevice8
    sublime useful packages
    spring+freemarker 乱码解决办法
    vim 更改注释颜色
    git rollback
    从源码导入到github
    Laravel 安装
    Install Apache 2.2.15, MySQL 5.5.34 & PHP 5.5.4 on RHEL/CentOS 6.4/5.9 & Fedora 19-12 [转]
    Linux / Unix Command: rz
  • 原文地址:https://www.cnblogs.com/hongchenok/p/3923876.html
Copyright © 2011-2022 走看看