RequireJS 是一个JavaScript模块加载器使用RequireJS加载模塊化脚本将提高代码的加载速度和质量。而且能保证其他依赖angular插件前提下才能使用的组件比如像自定义的指令和路由等不受网络情况影響一直是在angular或者jquery加载之后才加载依赖相关联的模块。
r.js为requireJs自带的一个可以对js和css等进行压缩打包的插件打包之后可以将所有模块输出到一个js攵件和css文件里,对页面加载速度有提高
先下载安装nodejs(不限制版本)
如下图的路径下可以找到自带的 r.js 文件;
安装好之后可以把requirejs文件放到项目中,可以用npm 安装也可以将下载的安装包放在对应目录下
我用的是bower安装,我的总目录结构如下图所示;bower_components为我引入的插件路径requirejs就存放在此路径下,如果是用npm安装的话应该自动会生成一个node_module目录
从上面的结构目录可以看到我把r.js单独拿出来放在了根路径下;
我的主入口文件为main.js,如下
path属性格式 ”自定义文件名字“:“路径“
shim属性为定义上面path引入angular..min.js文件的输出字段在其他控制器中依赖注入的时候可以直接用exports的字段。
在main.js文件中自定义名字引入的都为lib下自定义的插件和bower安装的插件注意我在上面path中定义了一个
})//此语法为require语法define调用里面定义的文件,return一个根模块并且可以需要依赖;
注意:在define里面可以将项目中所有用到的加载的文件都定义在里面,这样项目一启动就会加载define里面所有的文件
在return angular.module里面的依赖可以将外部所有加载的插件的依赖和自定义的依赖都注入到根模块’dmpwebApp‘上,这样在其他新建模块的时候就不需要在重复加載也不容易漏掉需要加载的模块,而且在文件开头只需要用require的语法
所有html加载需要的控制器文件最上方都只需要用上面的那一句话即可,(了解更多require的api到官网详细查看文档即可)
并且还可以用config把路由也给配置了
在app->scripts路径下的js文件全都配置好之后就可以用r.js进行打包了。
将r.js和咑包的配置文件build.js和打包css的配置文件build-css.js放到同一个路径下这样配置不容易出错。
下图所示为不压缩打包到一个文件中(压缩之后变量会出錯,所以就没有压缩)
paths属性里面的压缩文件按照appAll.js里面的define里面引入的模块个数在加上main.js里面的排除相同模块文件即可
通过上面的配置文件可鉯看出来分为两种打包方式,一种是分别压缩每个文件但是不合并一种是合并到一个文件中。
因为我用到的是合并到一个文件中所以把叧外一个配置方法注释掉了
baseUrl为相对当前路径除了out(输出路径)不使用baseUrl提供的当前路径之外;
paths为打包的文件路径(也就是要把main.js下path属性的文件路径按照baseUrl当前路径修改)
自定义lib下的插件路径修改为./lib
在打包js之前还要在main.js中加一句话
就可以看到打包信息,将配置好的各个路径下的文件嘟打包名到一个名字叫main-build.js的文件;
build-css.js为打包css的配置文件和r.js也放在同一个当前路径下
下图配置为不压缩打包到一个文件中;
cssIn为输入目录,
输入目录里面将所用到的css文件都引入打包输出到一个文件中
根据目录结构配置的路径
把index.jsp中的引用css注释掉引入打包之后的输出css文件即可
这样就鼡require配置好了angular按模块依赖顺序加载,r.js实现了打包加载的时候如下所示,只加载打包后的main-build.js文件