四时宝库

程序员的知识宝库

「requireJs」使用r.js打包js文件

对于多人开发的web应用程序,js代码的量以及多人维护问题越来越突出,门户重构之后前后端分离,js也会越来越重要。

对于这种情况,遵循了AMD(异步模块定义)规范的requireJs框架是一个解决方案。于是笔者在开发的时候尝试使用了requireJs

使用了requireJs之后,笔者的前端代码结构由图一演变成了图二

图一

图二

很明显,使用了requireJs模块化开发大大方便了前端代码的解耦和维护,使代码更清晰,但是同时我们也为此付出了代价

当我们请求index.html的时候,需要加载的js文件如下:

「requireJs」使用r.js打包js文件

加载每个js文件都要向服务端发送一个http请求,而且,使用了requireJs框架意味着js文件的数量不可能会少,这对客户端和服务端来说都是一种负担。

所以,requireJs提供了一种打包压缩工具,不但可以压缩js,css,甚至可以对整个项目进行打包。

r.js的压缩工具使用UglifyJS或Closure Compiler。默认使用UglifyJS(jQuery也是使用它压缩)。此外r.js需要node.js环境,当然它也可以运行在Java环境中如Rhino。

在本文中我们介绍使用Node环境来执行r.js打包js文件

1.安装node环境

在windows下安装NodeJs是非常方便的,登陆官网下载安装包执行即可,安装过程基本直接“next”就可以。(windows的安装msi文件在过程中会直接添加path的系统变量,变量值是你的安装路径,例如“D:\Program Files\nodejs”)

安装完之后使用cmd检查node是否安装成功,由于新版的NodeJs已经集成了npm,所以npm也一并安装好了,敲下命令"node -v" "npm -v"即可,见下图:

「requireJs」使用r.js打包js文件

常规的nodeJs搭建到此为止就成功了,迫不及待想试验一下的话可以继续在cmd下输入“node”进入node开发模式,输入你的第一句NodeJs代码:console.log('Hello World!');

「requireJs」使用r.js打包js文件

2.配置npm(如果嫌麻烦可以省略这一步,直接从网上下载require.js和r.js)

npm有着类似于java中maven的作用,是NodeJs的一款模块管理工具,可以将项目中需要的组件下载下来在项目中使用。

①、我们要先配置npm的全局模块的存放路径以及cache的路径,例如我希望将以上两个文件夹放在NodeJS的主目录下,便在NodeJs下建立"node_global"及"node_cache"两个文件夹。如下图

「requireJs」使用r.js打包js文件

②、启动cmd,输入

npm config set prefix "C:\Program Files\nodejs\node_global"以及npm config set cache "C:\Program Files\nodejs\node_cache"

③、现在我们来装个模块试试,选择express这个比较常用的模块。同样在cmd命令行里面,输入“npm install express -g”(“-g”这个参数意思是装到global目录下,也就是上面说设置的“C:\Program Files\nodejs\node_global”里面。)。待cmd里面的安装过程滚动完成后,会提示“express”装在了哪、版本还有它的目录结构是怎样。如下图

「requireJs」使用r.js打包js文件

④、关闭cmd,打开系统对话框,“我的电脑”右键“属性”-“高级系统设置”-“高级”-“环境变量”。如下图

「requireJs」使用r.js打包js文件

⑤、进入环境变量对话框,在系统变量下新建"NODE_PATH",输入”D:\Program Files\nodejs\node_global\node_modules“。(ps:这一步相当关键。)

由于改变了module的默认地址,所以上面的用户变量都要跟着改变一下(用户变量"PATH"修改为“C:\Program Files\nodejs\node_global\”),要不使用module的时候会导致输入命令出现“xxx不是内部或外部命令,也不是可运行的程序或批处理文件”这个错误。

⑥、以上步骤都OK的话,我们可以再次开启cmd命令行,进入node,输入“require('express')”来测试下node的模块全局路径是否配置正确了。正确的话cmd会列出express的相关信息。如下图(如出错一般都是NODE_PATH的配置不对,可以检查下第④⑤步)

「requireJs」使用r.js打包js文件

看完上面的步骤之后,我们使用同样的办法来下载require.js和r.js

在cmd命令行里面,输入“npm install requireJs -g” "node" “require('express')”

下载了requireJs之后,我们就可以进入第三步:打包了

3.使用r.js打包

r.js可以在安装RequireJS后的bin目录下可以找到。 如图:

「requireJs」使用r.js打包js文件

拿C15巴西门户进行尝试,将r.js放在WEB-INF\tplrepo\run\c15enweb\res\js目录下,并新建一个builtIndex.js

builtIndex.js内容如下:

「requireJs」使用r.js打包js文件

index.html内容如下

「requireJs」使用r.js打包js文件

压缩文件:

在命令行中 node r.js -o buildIndex.js 就可以了,前提是你安装了node和存在r.js,在WEB-INF\tplrepo\run\c15enweb\res\js下面就会多出一个index-built.js文件。

注意:在压缩过程中,可以会出现模块找不到的情况。最好就是把build.js和r.js 直接放在根目录下面。

最终,在index.html中引用的js就只有两个:require.min.js以及index-built.js

「requireJs」使用r.js打包js文件

测试了一下,js代码运行十分顺利,功能与之前加载多个js一样的正常

「requireJs」使用r.js打包js文件

减少了客户端对服务端的请求次数,大大优化了网络效率,强烈推荐使用^_^

「requireJs」使用r.js打包js文件

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接