进阶的前面两篇讲述了r.js如何通过命令行把所有的模块压缩为一个js文件或把所有的css压缩为一个css文件。其中包括一些压缩配置参数的使用。
但以上两种方式有几个问题:
1.通过命令手动配置压缩选项显得很呆板
2.都仅合并为一个文件
对于最后只生成一个文件的库来说,这种方式并无不妥。比如jQuery,它的工程中小文件有20多个,打包后只有一个jquery-1.x.x.js。对于多数实际应用项目来说,可能打包后需要生成多个js文件。有些是页面打开时就要用到的,有些是用户点击或输入时按需加载的。
r.js有另外一种方式来合并压缩,即通过一个配置文件(如build.js)。配置文件内部采用前端工程师非常熟悉JSON格式。这样当项目开发目录固定后,配置文件也相应固定。通过配置文件就很好的隔离了开发环境及上线环境。
这次我们创建的工程目录中包含所有前端资源,js,css,图片。
其中有两个页面page1.html,page2.html。这两个页面分别使用page1.js和page2.js。
page1.js依赖于event和selector,page2.js依赖于event、selector和jQuery。jQuery是非本地的,没有合并前我们直接访问这两个页面,那么单个的js文件会依次下载。
现在使用r.js来合并压缩,使每个页面除下载require.js外只下载各自合并的大文件page1.js和page2.js。
build.js如下:
({ appDir: "./", baseUrl: "js", dir: "../requireJS006-built", paths: { jquery: 'empty:' }, modules: [ { name: "page1" }, { name: "page2" } ] })
进入命令行输入如下命令
node r.js -o build.js
会发现在和WebContent同级的目录生成了requireJS006-built目录
该目录包含于WebContent一样的层级结构。此时,咱们新建工程requireJS007,将requireJS006/requireJS006-built目录下所有文件及文件夹拷贝到requireJS007工程的WebContent目录下,如下所示:
这时访问requireJS007工程下的page1.html,page2.html。
这时的page1.js和page2.js就是其它模块文件的合并。另外在requireJS006-built中其它的模块文件也被压缩了。如我们的build.js被压缩成如下样子:
在build.js中可以配置很多其它参数,可以在这个示例文件中找到更多配置选项。这里不一一列举。
总结:
通过配置文件方式可以实现更加强大,灵活的合并工作。可以生成多个合并文件,包括不同页面的js,css。
相关推荐
在本篇关于"RequireJS进阶(二)"的文章中,我们将深入探讨RequireJS这一JavaScript模块化加载器的高级用法和概念。RequireJS是AMD(Asynchronous Module Definition)规范的一个实现,它允许我们在浏览器环境中进行...
本篇文章将深入探讨RequireJS的进阶用法,帮助开发者更好地理解和运用这一强大的库。 RequireJS的核心功能是实现异步加载模块,这在处理大量JavaScript文件时尤为有用,避免了传统方式下所有脚本同步加载导致的阻塞...
三、RequireJS的任务列表 1. **理解AMD规范**:深入学习AMD的原理,了解其与CommonJS规范的区别。 2. **配置require.config()**:学习如何配置路径、别名、 shim(用于非AMD兼容模块的加载)等。 3. **模块定义与...
综上所述,"狂神说——大前端进阶NodeJS、Npm、Es6、Babel、Webpack、模块化使用笔记"这个主题涵盖了现代前端开发的重要技术栈。Node.js作为后端基础,Npm辅助管理依赖,ES6提供了更优雅的语法,Babel确保了新特性的...
此外,还有CommonJS(Node.js)和AMD(RequireJS)等模块规范。 6. **性能优化**:了解V8引擎的工作原理可以帮助我们编写更高效的JavaScript代码,例如避免隐式类型转换、减少全局变量的使用、利用对象池和数组池、...
* 面向模块编程:AMD设计规范、CMD设计规范、RequireJS、LoadJS、淘宝的SeaJS 第七阶段:主流的流行框架 * Web开发工作流:GIT/SVN、Yeoman脚手架、NPM/Bower依赖管理工具、Grunt/Gulp/Webpack * MVC/MVVM/MVW框架...
requirejs seajs lodash 前端框架 react dva Vue Angularjs UI框架 Bootstrap 跨端开发 react Native flutter Weex 微信小程序 Node框架 Express koa Egg Midway 理论知识 JavaScript工作原理 前端必知的HTTP知识 ...
- 模块化是组织代码的重要方式,JavaScript有CommonJS(Node.js)、AMD(RequireJS)和ES6的import/export机制。 5. **异步编程**: - JavaScript是单线程的,通过事件循环和回调函数处理异步任务。 - Promise...
### 进阶开发 - **扩展API**:可以根据需要扩展GitHub API的调用,增加更多自定义功能,如代码搜索、分支管理等。 - **本地存储**:利用浏览器的localStorage或IndexedDB存储用户偏好设置和访问历史,提供更个性化...
理解AMD和CMD规范,以及RequireJS、SeaJS等工具的使用。同时,学会基于组件化思想开发网站应用程序。 **第七阶段:主流流行框架** 熟悉MVC/MVVM/MVW架构的框架,如Angular.js、Backbone.js、React.js和Vue.js。了解...
JavaScript,作为全球最广泛使用的脚本语言之一,...通过学习和掌握以上JavaScript在网络编程中的基础知识,开发者可以构建出功能丰富的交互式网页应用,并为进阶的前端框架和库如React、Vue、Angular打下坚实的基础。
在实际开发中,还可以使用AMD(异步模块定义)或CommonJS(服务器端模块系统)等模块系统,如RequireJS和Node.js的`require`。这些系统提供了更高级的模块管理和加载机制,支持模块间的依赖关系和异步加载,适用于...
**Web开发进阶** 这部分深入探讨了Web开发中的各种技巧和最佳实践,如模型、视图、服务器端处理、路由等的更复杂用法。 ### 15. **RequireJS模块管理** RequireJS是一个JavaScript模块加载器,它允许在项目中按需...
使用自定义解决方案(受Baler启发)而不是RequireJs优化器,该方法更灵活,更快,产生更小的捆绑包且不会因丢失文件而损坏。 *在干净的Magento 2上收集的所有数据均已安装了示例数据。 正在安装 这是Magepack工作...
### Backbone.js入门指南知识点概述 #### 一、为什么需要Backbone.js?...以上内容涵盖了Backbone.js的基础知识和进阶技巧,以及如何使用Require.js来模块化组织Backbone应用程序。希望这些信息对你有所帮助。