首页 > web前端 > js教程 > 正文

分享利用r.js打包模块化的实例教程

零下一度
发布: 2017-06-15 13:18:41
原创
1746人浏览过

这篇文章主要给大家介绍了利用r.js打包模块化的javascript文件的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来跟着小编一起看看吧。

前言

r.js(本地下载)是requireJS的优化(Optimizer)工具,可以实现前端文件的压缩与合并,在requireJS异步按需加载的基础上进一步提供前端优化,减小前端文件大小、减少对服务器的文件请求。本文将详细介绍r.js的相关内容,感兴趣的朋友们下面来一起看看吧。

简单打包

【项目结构】

以一个简单的例子来说明r.js的使用。该项目名称为'demo',在js目录下包含s1.js和s2.js两个文件,使用requirejs进行模块化,内容如下


//s1.js
define(function (){
 return 1;
})
//s2.js
define(function (){
 return 2;
})
登录后复制

使用main.js来调用s1.js和s2.js这两个文件


require(['s1','s2'], function(a,b){
  console.log(a+b);
});
登录后复制

index.html的内容如下


<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <script data-main="js/main" src="js/require.js"></script>
</head>
<body>
</body>
</html>
登录后复制

运行index.html文件,所依赖资源如下图所示

【打包】

接下来,使用r.js来对javascript文件进行打包,而r.js需要使用build.js文件来进行配置,配置如下


({
 baseUrl: "./",
 name:'main',
 out:'out.js'
})
登录后复制

接下来运行node r.js -o build.js命令

项目根目录下,生成一个out.js文件,内容如下


define("s1",[],function(){return 1}),define("s2",[],function(){return 2}),require(["s1","s2"],function(n,e){console.log(n+e)}),define("main",function(){});
登录后复制

将index.html的入口文件修改为'out.js',文件依然能正常运行


<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <script data-main="js/out" src="js/require.js"></script>
</head>
<body>
</body>
</html>
登录后复制

jQuery打包

豆包AI编程
豆包AI编程

豆包推出的AI编程助手

豆包AI编程 483
查看详情 豆包AI编程

一般地,我们并不是使用原生javascript进行开发,更多的使用库进行高效开发,以jQuery为例,对上面的代码进行改造

s1模块和s2模块,分别基于jQuery来获取页面p元素的宽、高,内容如下


//s1.js
define(['../common/jquery'],function (){
 return $('p').height();
})
//s2.js
define(['../common/jquery'],function (){
 return $('p').width();
})
登录后复制

项目结构如下所示,js文件夹包括common和module两个子文件夹,common文件夹包含公用的require.js和jquery.js,module文件夹包含模块s1.js和s2.js。

页面的根目录下,有index.html、入口文件main.js、以及r.js和build.js

【包含jQuery】

如果打包后的main.js要包含jQuery.js,则代码如下所示


({ 
 appDir: './', //项目根目录
 dir: './dist', //输出目录,全部文件打包后要放入的文件夹(如果没有会自动新建的)
 baseUrl:'./',
 modules: [ //要优化的模块,相对baseUrl的路径,也是省略后缀“.js”
 { name:'main' } 
 ], 
 fileExclusionRegExp: /^(r|build)\.js|.*\.scss$/, //过滤,匹配到的文件将不会被输出到输出目录去
 optimizeCss: 'standard', 
 removeCombined: true //如果为true,将从输出目录中删除已合并的文件
})
登录后复制

n(e,t){console.log(parseInt(e)+parseInt(t))}),define("main",function(){});

【不包含jQuery】

如果其他页面也需要用到jQuery,它们打包的时候,也会把jQuery打包。这样,相当于每个页面都打包了一次jQuery,性能很差。更好的做法是,不打包jQuery,其他页面引用jQuery时,就可以使用缓存了。

build.js内容如下所示


({ 
 appDir: './', //项目根目录
 dir: './dist', //输出目录,全部文件打包后要放入的文件夹(如果没有会自动新建的)
 baseUrl:'./',
 modules: [ //要优化的模块,相对baseUrl的路径,也是省略后缀“.js”
 { 
  name:'main',
  exclude: ['js/common/jquery']//不打包jQuery
 } 
 ], 
 fileExclusionRegExp: /^(r|build)\.js|.*\.scss$/, //过滤,匹配到的文件将不会被输出到输出目录去
 optimizeCss: 'standard', 
 removeCombined: true //如果为true,将从输出目录中删除已合并的文件
})
登录后复制

接下来运行node r.js -o build.js命令

运行后,生成一个'dist'文件夹,该文件夹包含的文件都是处理过后的文件,适合上线

以上就是分享利用r.js打包模块化的实例教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号