`
zhouyrt
  • 浏览: 1173409 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

RequireJS进阶(三)

 
阅读更多

进阶的前面两篇讲述了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,page1.js依赖于event、selector和jQuery。jQuery是非本地的,没有合并前我们直接访问这两个页面,那么单个的js文件会依次下载。

 

 

 

现在使用r.js来合并压缩,使每个页面除下载require.js外只下载各自合并的大文件page1.js和page2.js。


build.js如下

 

({ 
    appDir: "./", 
    baseUrl: "js", 
    dir: "../r6-built", 
    paths: { 
        jquery: 'empty:'
    }, 
    modules: [ 
        { 
            name: "page1"
        }, 
        { 
            name: "page2"
        } 
    ] 
})

 

进入命令行输入如下命令
node r.js -o build.js

 

会发现在和r6同级的目录生成了r6-built目录

 

 

该目录包含于r6一样的层级结构,这时访问该目录中的page1.html,page2.html。

 

这时的page1.js和page2.js就是其它模块文件的合并。另外在r6-built中其它的模块文件也被压缩了。

 

 

在build.js中可以配置很多其它参数,可以在这个示例文件中找到更多配置选项。这里不一一列举。

 

 

 

总结:

通过配置文件方式可以实现更加强大,灵活的合并工作。可以生成多个合并文件,包括不同页面的js,css。

  • 大小: 6.8 KB
  • 大小: 18 KB
  • 大小: 21.8 KB
  • 大小: 10.8 KB
  • 大小: 4.9 KB
  • 大小: 13.4 KB
  • 大小: 17.8 KB
  • r6.zip (151.9 KB)
  • 下载次数: 70
分享到:
评论
1 楼 jamcode 2012-11-26  
我自已鼓弄过一个Package.js,哎,有点非标准:http://jamcode.iteye.com/blog/1517279

相关推荐

    RequireJS进阶(二)

    在本篇关于"RequireJS进阶(二)"的文章中,我们将深入探讨RequireJS这一JavaScript模块化加载器的高级用法和概念。RequireJS是AMD(Asynchronous Module Definition)规范的一个实现,它允许我们在浏览器环境中进行...

    RequireJS进阶(一)

    本篇文章将深入探讨RequireJS的进阶用法,帮助开发者更好地理解和运用这一强大的库。 RequireJS的核心功能是实现异步加载模块,这在处理大量JavaScript文件时尤为有用,避免了传统方式下所有脚本同步加载导致的阻塞...

    requirejs-task-list:学习要求js

    三、RequireJS的任务列表 1. **理解AMD规范**:深入学习AMD的原理,了解其与CommonJS规范的区别。 2. **配置require.config()**:学习如何配置路径、别名、 shim(用于非AMD兼容模块的加载)等。 3. **模块定义与...

    狂神说——大前端进阶NodeJS、Npm、Es6、Babel、Webpack、模块化使用笔记

    综上所述,"狂神说——大前端进阶NodeJS、Npm、Es6、Babel、Webpack、模块化使用笔记"这个主题涵盖了现代前端开发的重要技术栈。Node.js作为后端基础,Npm辅助管理依赖,ES6提供了更优雅的语法,Babel确保了新特性的...

    baseAdvance:基础进阶

    此外,还有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框架...

    front-end-eigineer-documents:前端工程师知识体系、前端学习笔记、前端工程师进阶路线、前端知识框架、前端面试问题

    requirejs seajs lodash 前端框架 react dva Vue Angularjs UI框架 Bootstrap 跨端开发 react Native flutter Weex 微信小程序 Node框架 Express koa Egg Midway 理论知识 JavaScript工作原理 前端必知的HTTP知识 ...

    JAVASCRIP_ 年_月_日_时_分_秒

    - 模块化是组织代码的重要方式,JavaScript有CommonJS(Node.js)、AMD(RequireJS)和ES6的import/export机制。 5. **异步编程**: - JavaScript是单线程的,通过事件循环和回调函数处理异步任务。 - Promise...

    speedhub-cross-browser:提供对浏览器工具栏中基本 Github 操作和通知的轻松访问

    ### 进阶开发 - **扩展API**:可以根据需要扩展GitHub API的调用,增加更多自定义功能,如代码搜索、分支管理等。 - **本地存储**:利用浏览器的localStorage或IndexedDB存储用户偏好设置和访问历史,提供更个性化...

    web前端零基础系统学习路线分享.docx

    理解AMD和CMD规范,以及RequireJS、SeaJS等工具的使用。同时,学会基于组件化思想开发网站应用程序。 **第七阶段:主流流行框架** 熟悉MVC/MVVM/MVW架构的框架,如Angular.js、Backbone.js、React.js和Vue.js。了解...

    网络编程基础篇之Javascript

    JavaScript,作为全球最广泛使用的脚本语言之一,...通过学习和掌握以上JavaScript在网络编程中的基础知识,开发者可以构建出功能丰富的交互式网页应用,并为进阶的前端框架和库如React、Vue、Angular打下坚实的基础。

    Javascript模块化编程详解

    在实际开发中,还可以使用AMD(异步模块定义)或CommonJS(服务器端模块系统)等模块系统,如RequireJS和Node.js的`require`。这些系统提供了更高级的模块管理和加载机制,支持模块间的依赖关系和异步加载,适用于...

    backbonejs_第二版1

    **Web开发进阶** 这部分深入探讨了Web开发中的各种技巧和最佳实践,如模型、视图、服务器端处理、路由等的更复杂用法。 ### 15. **RequireJS模块管理** RequireJS是一个JavaScript模块加载器,它允许在项目中按需...

    magepack:下一代Magento 2高级JavaScript捆绑程序

    使用自定义解决方案(受Baler启发)而不是RequireJs优化器,该方法更灵活,更快,产生更小的捆绑包且不会因丢失文件而损坏。 *在干净的Magento 2上收集的所有数据均已安装了示例数据。 正在安装 这是Magepack工作...

    backbone 入门指南

    ### Backbone.js入门指南知识点概述 #### 一、为什么需要Backbone.js?...以上内容涵盖了Backbone.js的基础知识和进阶技巧,以及如何使用Require.js来模块化组织Backbone应用程序。希望这些信息对你有所帮助。

Global site tag (gtag.js) - Google Analytics