requirejs和r.js的心得

requirejs的GitHub:requirejs

r.js的GitHub:r.js

grunt-contrib-requirejs的GitHub:grunt-contrib-requirejs

  1. requirejs的一个典型配置,main.js

    require.config({
        shim: {
            ‘$‘: {
                exports: ‘Zepto‘           //zepto.js里面暴漏的全局变量
            },
            ‘_‘: {
                exports: ‘_‘
            },
            ‘B‘: {
                deps: [
                    ‘_‘                           //依赖关系
                ],
                exports: ‘Backbone‘
            }
        },
        paths: {
            ‘$‘: ‘zepto‘,                     //配置路径
            ‘_‘: ‘underscore‘,
            ‘B‘: ‘backbone‘
        }
    });
    requirejs([‘$‘,‘1‘], function(b) {
      debugger;
    });

    关于config.shim.exports这里有很好的解释:shim.exports

  2. r.js的使用方法

    node r.js -o baseUrl=src name=main out=dist/build.js optimize=none

    这样用的话config.paths里面main.js里面的paths配置会无效,看这里的解释:

    r.js optimizer does not load paths defined by a require.config

  3. 关于第2点写两遍paths是重复劳动,r.js里面有一个mainConfigFile参数,将命令行改成这样
    node r.js -o name=main mainConfigFile=src/main.js out=dist/build.js optimize=none

    为什么name和mainConfigFile都指向main呢,因为工程里配置文件和启动文件都是main.js,我们完全可以分开放,

    src/config.js:

    require.config({
        shim: {
            ‘$‘: {
                exports: ‘Zepto‘
            },
            ‘_‘: {
                exports: ‘_‘
            },
            ‘B‘: {
                deps: [
                    ‘_‘
                ],
                exports: ‘Backbone‘
            }
        },
        paths: {
            ‘$‘: ‘zepto‘,
            ‘_‘: ‘underscore‘,
            ‘B‘: ‘backbone‘
        }
    });

    src/main.js:

    requirejs([‘$‘,‘1‘], function(b) {
      debugger;
    });

    然后运行:

    node r.js -o name=main mainConfigFile=src/config.js out=dist/build.js optimize=none

    r.js的配置文件说明看这里

  4. requirejs里嵌套依赖的问题:
    如果main.js不是这样依赖于1.js,而是像下面这样:

    requirejs([‘$‘], function(b) {
      requirejs([‘1‘],function() {
      });
    });

    那么用r.js生成的文件里是不会包含1.js的内容的,这种情况下要加上参数findNestedDependencies

    node r.js -o mainConfigFile=src/config.js name=main out=dist/build.js optimize=none findNestedDependencies=true
  5. 引用外部js的问题

    require.config({
        shim: {
            ‘$‘: {
                exports: ‘Zepto‘
            },
            ‘_‘: {
                exports: ‘_‘
            },
            ‘B‘: {
                deps: [
                    ‘_‘
                ],
                exports: ‘Backbone‘
            }
        },
        paths: {
            ‘$‘: ‘http://apps.bdimg.com/libs/zepto/1.1.4/zepto‘,
            ‘_‘: ‘underscore‘,
            ‘B‘: ‘backbone‘
        }
    });

    zepto引用外部的js文件了,r.js无法访问

    $ node r.js -o mainConfigFile=src/config.js name=main out=dist/build.js optimize=none findNestedDependencies=true
    
    Tracing dependencies for: main
    Cannot optimize network URL, skipping: http://apps.bdimg.com/libs/zepto/1.1.4/zepto.js
    
    E:/chengzhichao/tmp/test_grunt/dist/build.js
    ----------------
    E:/chengzhichao/tmp/test_grunt/src/1.js
    E:/chengzhichao/tmp/test_grunt/src/main.js

    r.js只把main.js,1.js弄到了build.js里面,这种情况下应该怎么办呢?
    a.忽略zepto.js的path
    b.将config.js包含进生成的build.js里面

    node r.js -o mainConfigFile=src/config.js name=main out=dist/build.js optimize=none findNestedDependencies=true include=config.js paths.$=empty:
  6. grunt-requirejs配置基本照搬r.js的配置
时间: 2024-10-25 00:53:20

requirejs和r.js的心得的相关文章

requireJs和r.js压缩工具

上面release是执行命令 node r.js -o build.js 生成的,需要切换到目录require/tools下面,也就是 有r.js和build.js的目录,才能执行命令 代码目录如上: main.html代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Hello RequireJS</title> </head

用 requirejs 的 R.js 打包css + js

最近用requirejs做了一个项目,实现了模块化的开发方式,通过声明将依赖引入,有效的管理了各个模块之间的依赖关系,开发也有条不紊的进行,但是最近要上线,就面临着一个打包的问题,因为js模块化,导致js文件很多,所以要将其压缩成一个文件. 一.压缩js 1.首先你要先有nodejs环境,没有可以去装一个 2.你得下载R.js 3.新建一个build.js ({ baseUrl: "../src/main/webapp/static/js", name: "app"

使用requirejs的r.js压缩碰到的问题

1.require模块里,再去require模块,依赖分析不到,r.js不会合并.解决办法:还是放在require([])的这个数组里. 2. r.js也不会识别jquery.min.js.解决办法:把jquery.min.js改名成jquery.js.

requirejs实验002. r.js合并文件. 初体验.

requirejs的官网上有介绍如何使用r.js合并,压缩文件的.http://requirejs.org/docs/optimization.html https://github.com/jrburke/r.js/blob/master/build/example.build.js 这里罗列了所有的优化参数. 我是在win7上使用r.js的. 安装使用的是npm ->  npm install -g requirejs  安装在全局,更合适,方便在任何地方使用. windows上使用r.js

requireJS的优化工具 ---- r.js

requireJS是javascript的模块加载器,是基于AMD规范实现的. r.js是其提供的对模块进行打包和构建的一个工具 下载 r.js 创建r.js 的配置文件 build.js build.js ({ appDir: './', //项目根目录 out: 'main-build.js', //输出文件名 dir: './outdir', //输出目录,全部文件打包后要放入的文件夹(如果没有会自动新建的) /* 有了dir,就不能使用out配置项了,你在编译时它有非常明确的提示 */

requirejs 使用实例r.js打包

在这里,请先看基础文章与相关技术文档: 安装: npm init npm install requirejs --save npm install [email protected]1.11.1 --save 创建基本目录: js/main.js&test.js css/index.css index.html build.js copy requirejs目录下的r.js到根目录 创建导出目录:one 测试目录创建完成! index.html <!DOCTYPE html> <

如何应用r.js对requirejs下的js代码合并

1.在根目录新建build.js ({ baseUrl:'js', paths:{ jquery:'static/jquery-1.10.2.min', underscore:'static/underscore', bootstrap:'static/bootstrap' }, shim:{ 'bootstrap':['jquery'] }, name:'main', out:'js/main-build.js' }) 2.cmd下找到项目所在目录 执行 node r.js -o build.

RequireJS模块化后JS压缩合并

使用RequireJS模块化后代码被拆分成多个JS文件了,在部署生产环境需要压缩合并,RequireJS提供了一个打包压缩工具r.js来对模块进行合并压缩.r.js非常强大,不但可以压缩js,css,甚至可以对整个项目进行打包. r.js的压缩工具使用UglifyJS或Closure Compiler.默认使用UglifyJS(jQuery也是使用它压缩).此外r.js需要node.js环境,当然它也可以运行在Java环境中如Rhino.JAVA环境使用Ant构建可以参考另外一篇RequireJ

使用r.js来打包模块化的javascript文件

前面的话 r.js(下载)是requireJS的优化(Optimizer)工具,可以实现前端文件的压缩与合并,在requireJS异步按需加载的基础上进一步提供前端优化,减小前端文件大小.减少对服务器的文件请求.本文将详细介绍r.js 简单打包 [项目结构] 以一个简单的例子来说明r.js的使用.该项目名称为'demo',在js目录下包含s1.js和s2.js两个文件,使用requirejs进行模块化,内容如下 //s1.js define(function (){ return 1; }) /