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(['$',''], 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(['$',''], 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/.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的配置

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

  1. requireJs和r.js压缩工具

    上面release是执行命令 node r.js -o build.js 生成的,需要切换到目录require/tools下面,也就是 有r.js和build.js的目录,才能执行命令 代码目录如上: ...

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

    requirejs的官网上有介绍如何使用r.js合并,压缩文件的.http://requirejs.org/docs/optimization.html https://github.com/jrbu ...

  3. 转:requirejs打包压缩r.js使用示例

    为了应对日益复杂,大规模的JavaScript开发.我们化整为零,化繁为简.将复杂的逻辑划分一个个小单元,各个击破.这时一个项目可能会有几十个甚至上百个JS文件,每个文件为一个模块单元.如果上线时都是 ...

  4. requirejs 使用实例r.js打包

    在这里,请先看基础文章与相关技术文档: 安装: npm init npm install requirejs --save npm install jquery@1.11.1 --save 创建基本目 ...

  5. requirejs原理深究以及r.js和gulp的打包【转】

    转自:http://blog.csdn.net/why_fly/article/details/75088378 requirejs原理 requirejs的用法和原理分析:https://githu ...

  6. requireJS中如何用r.js对js进行合并和压缩css文件

    我运行的环境是windows+node.js,首先是用npm安装requirejs(全局安装,即使用 'npm install requirejs -g',这样方便在各个目录调用),接着就是下载r.j ...

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

    requireJS是javascript的模块加载器,是基于AMD规范实现的. r.js是其提供的对模块进行打包和构建的一个工具 下载 r.js 创建r.js 的配置文件 build.js build ...

  8. requirejs的打包工具r.js

    不建议用命令行,还是用配置文件比较方便--build.js. 我的build.js文件内容大概如下: ( { appDir : './', baseUrl : './scripts', dir : ' ...

  9. 转: requirejs压缩打包r.js使用示例 2 (~~很详细的教程)

    这一篇来认识下打包工具的paths参数,在入门一中 就介绍了require.config方法的paths参数.用来配置jquery模块的文件名(jQuery作为AMD模块时id为“jquery”, 但 ...

随机推荐

  1. JavaScript-学习一字符串

    字符串可以存储一系列字符,如 "John Doe". 字符串可以是插入到引号中的任何字符.你可以使用单引号或双引号: 用于字符串的 + 运算符 + 运算符用于把文本值或字符串变量加 ...

  2. Linux下设置静态IP和获取动态IP的方法

    Linux下为机器设置静态IP地址: vim  /etc/sysconfig/network-scripts/ifcfg-eth0 修改这个文件内容如下形式: # Intel Corporation ...

  3. ubuntu 的远程桌面

    好久没有弄ubuntu 丢人的啊,先安装了个服务器版,发现好多命令都忘记了,命令行下根本搞不懂 又安装了个桌面版...但是服务器远程么,putty还是搞的头大,又乱码,有各种文件传输. 还好记得以前用 ...

  4. Excel--java POi

    import java.io.File; import java.io.FileOutputStream; import org.apache.commons.io.FileUtils; import ...

  5. xcode 发展史 及 做iOS 必须知道的小知识

    Xcode 3.0 是开发人员建立 Mac OS X 应用程序的最快捷方式,也是利用新的苹果电脑公司技术的最简单的途径.Xcode 3.0 将Mac OS X的轻松使用,UNIX 能量以及高性能的开发 ...

  6. 『Python』爬行搜索引擎结果获得指定主机二级域名及IP信息

    0x 00 前言 前天自己在玩的时候,自己通过百度搜索主机的二级域名感觉好麻烦,自已要一页页的去翻 而且人工识别是否是重复的二级域名也够蛋疼的,正好最近在学正则表达式,权当练手了 0x 00 代码 # ...

  7. java四种创建对象的方法

    1.用new语句创建对象,这是最常见的创建对象的方法.   2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance ...

  8. Xamarin Studio –Project not built in active configuration

    当我们加载项目以后如果出现以下项目提示 处理方式如下: 解决方案右键->options 配置->configuration mappings->勾选构建的ios项目 项目右键-> ...

  9. chrome_php logger 的实现原理

    chrome_php是什么 1.chrome_php 是什么? 一款 Chrome 下用来配合调试 PHP 的工具,可以通过,console来查看php的信息 1.2用法 用法特别简单,有一个chro ...

  10. 【转】Eclipse导入library的时候报:Found 2 versions of android-support-v4.jar in the dependency list

    原文网址:http://www.07net01.com/2015/03/779691.html 错误类型:Eclipse导入library的时候报:Found 2 versions of androi ...