RequireJS用于JavaScript的动态加载。
<script src="http://cdn.staticfile.org/require.js/2.1.10/require.min.js"></script> <script> requirejs.config({ baseUrl: '.', paths: { jquery : 'http://cdn.staticfile.org/jquery/2.0.3/jquery.min', domReady: 'http://cdn.staticfile.org/require-domReady/2.0.1/domReady.min', text : 'http://cdn.staticfile.org/require-text/2.0.10/text.min' } }); require(['jquery'], function($){ ... }); </script>
可以把上面的第二个"script"标签里内容单独写在一个文件里,从而只需用下面的写法就可以了。
<script data-main="js/app" src="http://path/to/require.min.js"></script>
其中的data-main
属性指定了程序入口文件。
require(['jquery'], function($){ //alert('loaded'); }, function(){ alert('load fail'); });
"domReady!"用于监听DOM的onload事件。
require(['domReady!'], function(doc){ if(!window.performance) return; var timing = window.performance.timing; var record = [], steps=[]; for(k in timing){ record.push([k, timing[k]]); steps.push(k); } record.sort(function(a,b){return a[1]-b[1]}); console.log(record.join("\n")); console.log("domComplete - responseEnd = %d", timing.domComplete - timing.responseEnd); console.log("loadEventEnd - responseEnd = %d", timing.loadEventEnd - timing.responseEnd); });
"text!"模块用于读取文件内容。这主要是为了便于模块化划分和开发。
require(['text!requirejs.html!strip'], function(html_text){ console.log(html_text); });
显然这跟直接把内容内嵌在代码中相比,效率低了一些。不过RequreJS的整体解决方案其实是要借助RequireJS Optimizer来进行combine、inline等操作的。
TODO