您好,欢迎访问一九零五行业门户网

详解RequireJs如何使用

这次给大家带来的是详解requirejs如何使用,我们知道requirejs非常的强大,这篇文章就给大家举几个案例好好分析一下。
首先加载 javascript 文件
requirejs的目标是鼓励代码的模块化,它使用了不同于传统3f1c4e4b6b16bbbd69b2ee476dc4f83a标签的脚本加载步骤。可以用它来加速、优化代码,但其主要目的还是为了代码的模块化。
requirejs以一个相对于baseurl的地址来加载所有的代码。 页面顶层3f1c4e4b6b16bbbd69b2ee476dc4f83a标签含有一个特殊的属性data-main,require.js使用它来启动脚本加载过程,而baseurl一般设置到与该属性相一致的目录。
baseurl亦可通过requirejs config手动设置。如果没有显式指定config及data-main,则默认的baseurl为包含requirejs的那个html页面的所属目录。
requirejs默认假定所有的依赖资源都是js脚本,因此无需在module id上再加.js后缀,requirejs在进行module id到path的解析时会自动补上后缀。你可以通过paths config设置一组脚本,这些有助于我们在使用脚本时码更少的字。
有时候你想避开baseurl + paths的解析过程,而是直接指定加载某一个目录下的脚本。此时可以这样做:如果一个module id符合下述规则之一,其id解析会避开常规的baseurl + paths配置,而是直接将其加载为一个相对于当前html文档的脚本:
以 .js 结束.
以 / 开始.
包含 url 协议, 如 http: or https:.
一般来说,最好还是使用baseurl及paths config去设置module id。它会给你带来额外的灵活性,如便于脚本的重命名、重定位等。 同时,为了避免凌乱的配置,最好不要使用多级嵌套的目录层次来组织代码,而是要么将所有的脚本都放置到baseurl中,要么分置为项目库/第三方库的一个扁平结构,如下:
www/ index.html js/ app/ sub.js lib/ jquery.js canvas.js app.js
index.html:
<script data-main="js/app.js" src="js/require.js"></script>
app.js:
requirejs.config({ //by default load any module ids from js/lib baseurl: 'js/lib', //except, if the module id starts with "app", //load it from the js/app directory. paths //config is relative to the baseurl, and //never includes a ".js" extension since //the paths config could be for a directory. paths: { app: '../app' } }); //start the main app logic. requirejs(['jquery', 'canvas', 'app/sub'], function ($, canvas, sub) { //jquery, canvas and the app/sub module are all //loaded and can be used here now. });
注意在示例中,三方库如jquery没有将版本号包含在他们的文件名中。我们建议将版本信息放置在单独的文件中来进行跟踪。使用诸如volo这类的工具,可以将package.json打上版本信息,并在磁盘上保持文件名为jquery.js。这有助于你保持配置的最小化,避免为每个库版本设置一条path。例如,将jquery配置为jquery-1.7.2。
理想状况下,每个加载的脚本都是通过define()来定义的一个模块;但有些浏览器全局变量注入型的传统/遗留库并没有使用define()来定义它们的依赖关系,你必须为此使用shim config来指明它们的依赖关系。 如果你没有指明依赖关系,加载可能报错。这是因为基于速度的原因,requirejs会异步地以无序的形式加载这些库。
require.js 在加载的时候会检察data-main 属性:
如果都能用html标签而不是基于脚本操作dom来构建html,是很不错的。但没有好的办法在javascript文件中嵌入html。所能做的仅是在js中使用html字串,但这一般很难维护,特别是多行html的情况下。.
requirejs有个text.js插件可以帮助解决这个问题。如果一个依赖使用了text!前缀,它就会被自动加载。参见text.js的readme文件。
相信看了以上介绍你已经掌握了方法,更多精彩请关注其它相关文章!
相关阅读:
js里的布尔值、关系运算符、逻辑运算符的详解及实例
jquery的each函数详解及实例
原生js如何实现ajax、jsonp
以上就是详解requirejs如何使用的详细内容。
其它类似信息

推荐信息