V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
Jakesoft
V2EX  ›  JavaScript

AMD 规范里面的 define 函数何处来?

  •  
  •   Jakesoft · 2017-08-17 18:36:14 +08:00 · 2735 次点击
    这是一个创建于 2688 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天突然心血来潮看 jQuery 的源码,发现里面有 define 函数,搜索了一下,应该就是 node,或者 require.js 提供的定义模块的方法。

    我跟着 http://requirejs.org/docs/api.html#define 这个例子定义一个模块,然后想执行,发现报错 “ define is not defined ”, 无论是浏览器还是 node 环境,都提示这个函数不存在

    特此求 dalao 指教,或提供相关文档资料供,赶紧不尽!

    PS: jQuery 的源码如何才能跑起来,如何才能通过源码得到一份 jquery.min.js

    PS:非伸手党,勿喷

    第 1 条附言  ·  2017-08-17 20:17:28 +08:00
    再次仔细看了 require.js 的文档,是我太疏忽了,没有仔细看文档,污染了大家的时间线,抱歉了!
    4 条回复    2017-08-17 21:34:04 +08:00
    tinytin
        1
    tinytin  
       2017-08-17 19:21:12 +08:00
    define 肯定是个全局变量 jquery 直接 npm run build (需要你提前全局安装 grunt)
    Jakesoft
        2
    Jakesoft  
    OP
       2017-08-17 19:33:43 +08:00 via iPhone
    @tinytin 我没理解错的话,这个 define 函数其实是用户定义的函数,而不是 js 自带的函数,对吧?

    那就是有可能是 grunt 按照 AMD 规范定义并实现的。

    如果是这样的话,那真是太感谢了(一直以为是哪个 js 版本的预定义函数…)
    Jakesoft
        3
    Jakesoft  
    OP
       2017-08-17 19:35:30 +08:00 via iPhone
    @jakesoft 或者是 requireJS 定义的,而我的代码没有引入 requireJS
    harttle
        4
    harttle  
       2017-08-17 21:34:04 +08:00
    jQuery 检测了是否存在 define,有的话就认为当前环境有 AMD 就把自己声明为 AMD 模块,否则 jQuery 就把自己挂在全局变量上。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5046 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:54 · PVG 11:54 · LAX 19:54 · JFK 22:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.