jQuery源代码: https://github.com/jquery/jquery/blob/master/src/core.js
他们做了什么让它看起来像最终输出没有使用引擎盖下的Require.js? Require.js示例告诉您将整个库插入代码中,使其作为单个文件独立运行.
Almond.js,一个较小版本的Require.js也告诉你将自己插入你的代码中以获得一个独立的javascript文件.
当缩小时,我不关心额外的膨胀,它只是一些额外的killobytes(对于almond.js),但是没有明确的几乎没有可读性.我必须一直向下滚动,通过almond.js代码来查看我的应用程序逻辑.
题
解决方法
您必须创建自己的自定义构建过程.
答案很长
jQuery的构建过程只是因为jQuery根据允许转换函数将源转换为不使用define的分布式文件的模式定义其模块.如果有人想要复制jQuery所做的事情,那就没有捷径:1)模块必须根据允许剥离定义调用的模式进行设计,2)你必须有自定义转换函数.这就是jQuery的功能.将jQuery模块组合到一个文件中的整个逻辑是在build/tasks/build.js中.
> out设置为“dist / jquery.js”.这是单身
优化产生的文件.
> wrap.startFile,设置为“src / intro.js”.这个文件
将被添加到dist / jquery.js.
> wrap.endFile,设置为“src / outro.js”.这个文件会
被附加到dist / jquery.js.
> onBuildWrite设置为转换.这是@L_403_3@.
每次r.js想要将模块输出到最终输出文件时,都会调用convert函数.该函数的输出是r.js写入最终文件的输出.它执行以下操作:
>如果模块来自var /目录,则模块将是
转化如下.我们来看看
src/var/toString.js:
define([ "./class2type" ],function( class2type ) { return class2type.toString; });
它将成为:
var toString = class2type.toString;
>否则,define(…)调用将替换为传递给define的回调内容,最终的return语句将被剥离,并且将剥离对导出的任何赋值.
我省略了与您的问题无关的详细信息.