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

RequireJS进阶(二)

 
阅读更多

这一篇来认识下打包工具的paths参数,在入门一中就介绍了require.config方法的paths参数。用来配置jquery模块的文件名(jQuery作为AMD模块时id为“jquery”,但文件名可通过paths配置可以不必是“jquery.js”,而是带有版本的如“jquery-1.7.2.js”)。

 

在入门一中,jquery-1.7.2.js和main.js都在一个域中,即把jquery-1.7.2.js下载到本地了。但有时可能一些JS资源不在同一个域。比如直接使用Google CDN上的jquery 1.7.2版本。而这时应该如何使用打包工具r.js呢?

 

r.js自然不会去载入非本地资源,即没有办法去把外域的js文件请求下来再合并,压缩。当使用paths参数后,使用r.js合并压缩时要忽略paths映射的文件-不合并它。让其作为一个独立模块请求。

 

创建目录及文件如下

 

和上一篇一样,但main.js代码不同,注意目录中没有jQuery库。

 

main.js

require.config({ 
    baseUrl: 'js', 
    paths: { 
        'jquery': 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min'
    } 
}); 
  
require(['jquery', 'event', 'selector'], function($, E, S) { 
    alert($); 
});

 

配置了paths参数,即jquery模块使用Google CDN的文件。

 

如果按照上一篇的命令来执行合并压缩,

node r.js -o baseUrl=js name=main out=built.js

 

发现命令行报错了,提示“D:\work\req\r5\js\jquery.js”不存在。刚刚新建的目录中的确没有jquery.js,因为我们使用的是Google CDN上的jquery。

 

此时压缩参数paths就排上用处了,修改如下

node r.js -o baseUrl=js name=main out=built.js paths.jquery=empty:

 

注意红色圈住的参数(empty后有个冒号哦),表示paths.jquery不参与合并,压缩。这时生成的built.js也就不包含它了。

 

把目录r5放到apache或其它web服务器上,访问index.html。

 

网络请求如下

 

 

built.js包含了main.js、event.js、cache.js,selector.js。jquery则是独立的一个请求,来自ajax.googleapis.com。

 

 

再看看如何使用r.js来合并压缩css文件。在r5下新建一个css文件夹,里面有四个css文件:main.css、nav.css、form.css、grid.css。

 

main.css是合并的主文件,或称配置文件。要合并的文件使用@import引入。如下

 

main.css

@import url("nav.css"); 
@import url("grid.css"); 
@import url("form.css");
  

另外三个是普通的css文件,里面定义的各种样式。这里不贴代码了。这里将使用命令行将这四个文件合并后生成到r5/css/built.css。

node r.js -o cssIn=css/main.css out=css/built.css

 

这时回到r5/css目录会发现多了一个built.css文件,该文件是另外四个css文件的合并项。

 

还可以使用optimizeCss参数设置来配置是否压缩及压缩选项。optimizeCss的取值有standard/none/standard.keepLines/standard.keepComments/standard.keepComments.keepLines。

none 不压缩,仅合并

standard 标准压缩 去换行、空格、注释

standard.keepLines 除标准压缩外,保留换行

standard.keepComments 除标准压缩外,保留注释

standard.keepComments.keepLines 除标准压缩外,保留换行和注释

 

 

示例:

node r.js -o cssIn=css/main.css out=css/built.css optimizeCss=standard

压缩后built.css整个为一行了。

 

 

总结:

1,对于path配置的非本地的模块文件,使用r.js合并压缩时需要配置paths.xx=empty:。

2,cssIn和optimizeCss参数的使用来合并压缩css文件。

 

 

  • 大小: 4.5 KB
  • 大小: 4.9 KB
  • 大小: 5.8 KB
  • 大小: 3.1 KB
  • 大小: 17.2 KB
  • 大小: 6.2 KB
  • r5.zip (148.5 KB)
  • 下载次数: 9
分享到:
评论

相关推荐

    RequireJS进阶(三)

    RequireJS是JavaScript中的一种...综上,RequireJS进阶不仅涵盖了其基本的模块加载和依赖管理,还包括了高级的配置、优化技巧以及与其他库的兼容性。理解并掌握这些知识点,有助于提升JavaScript项目的可维护性和性能。

    RequireJS进阶(一)

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

    requirejs-task-list:学习要求js

    二、RequireJS的基本使用 1. **配置**:在项目中,通常会有一个主配置文件(如`require.config()`),定义模块的路径、别名、依赖关系等,以便更好地管理和组织代码。 2. **模块定义**:使用`define()`函数定义模块...

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

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

    baseAdvance:基础进阶

    此外,还有CommonJS(Node.js)和AMD(RequireJS)等模块规范。 6. **性能优化**:了解V8引擎的工作原理可以帮助我们编写更高效的JavaScript代码,例如避免隐式类型转换、减少全局变量的使用、利用对象池和数组池、...

    锋利的Jquery第二版

    《锋利的jQuery》第二版是一本专注于深入解析jQuery库的专著,旨在帮助开发者提升在...总的来说,《锋利的jQuery》第二版是jQuery初学者和进阶者宝贵的参考资料,能够帮助他们充分利用这个强大的库,提升Web开发技能。

    backbonejs_第二版1

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

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

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

    大前端学习流程

    * 面向模块编程:AMD设计规范、CMD设计规范、RequireJS、LoadJS、淘宝的SeaJS 第七阶段:主流的流行框架 * Web开发工作流:GIT/SVN、Yeoman脚手架、NPM/Bower依赖管理工具、Grunt/Gulp/Webpack * MVC/MVVM/MVW框架...

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

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

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

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

    Javascript模块化编程详解

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

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

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

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

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

    javaScript手册(必备)

    本手册详细涵盖了JavaScript的基础知识、进阶概念以及实际应用,对于程序员来说是必备的学习资料。 一、基础语法 JavaScript的基础包括变量、数据类型、操作符、流程控制和函数。变量用于存储数据,有六种基本数据...

Global site tag (gtag.js) - Google Analytics