首先 点击此处 得到requirejs。

捣鼓了俩小时终于运行成功了,原因是因为require(['我是空格underscore',...],function(){...})的时候 变量多个空格(坑爹啊...)以此纪念一下吧!

大标题一:引用

<script src="lib/require.js" data-main="app"></script> 就是如此简单啦。data-main 为JS主入口,Main嘛 引用主要的入口文件。

此处为app.js 可省略扩展名。如果有多层目录就加上目录好了(这不废话吗...)。

require的诞生是为了解决JS加载导致的浏览器渲染失败和N多JS文件的依赖加载。例如以下情形:

<script src="1.js""></script>

<script src="2.js""></script>

<script src="3.js""></script>

<script src="4.js""></script>

我挂了...

<script src="20.js""></script>

20个JS 和 一堆CSS 看着就头疼,而且一个挂了就全挂了。

等一下!万一require挂了怎么办?不怕,你可以加上异步加载defer和 async="true" 或者将引用放在文档底部。

 Like this : <script src="lib/require.js" data-main="app" defer async="true" ></script>.

 好了!这就加载完成了。测试一下吧

 app.js => alert('You');

 假装你打开了vscode 或者 sublime 或者 brackets 等等...并且成功的弹出了You!

 大标题二:Config and Usage 配置和使用

 介绍require三大方法 define([module],fn(){...}),require([module],fn(){...}),和config({...})。

 小标题1:config({...})方法。此方法接受一个对象{...} 作为参数。

    require.config({
    baseUrl: "lib",
    paths: {"jquery": "jquery-1.8.3","underscore": "underscore","backbone": "backbone"},
    shim: {'backbone': {deps: ['jquery', 'underscore'],exports: 'Backbone',init : fn(jquery,underscore){...}}},
    bundles :{...},
    waitSeconds : 15,
    map : {...},
    config : {...},
    packages : {...}
    });
    参数详解:baseUrl :基础目录。paths : 文件引用名称 和 文件名。 shim : 依赖关系。waitSeconeds : 放弃加载脚本前等待时间 默认7s。
    map : 指定modules的不同脚本版本引用(多版本支持)。config : 定义模块的通用配置信息,可被传递给模块。
    shim里的 defs:依赖文件数组,exports:引用标识。init : 脚本加载完毕后执行的方法。
小标题二 : define([module]/*此处为注释 该参数可选 忽略条件为模块无其他依赖*/,fn(){...}) 和 require([module],function(){...})
    If 你要用requireJS管理你的脚本文件 你就得使用AMD规范编写代码。
    假设现在有一个模块名为 duck的脚本并且无依赖: 
    定义方法:define(function(){ var restBlood = function(sticks,times){ return 100 - sticks*times };return {restBlood : restBlood };})
    加载方法:require(['duck'],function(duck){ console.log(duck.restBlood(2*4));})
 
    依赖模块animals:
    定义方法:define(['animals'],function(){ var addBlood = function(){ animals.addBlood() };return {addBlood : addBlood };})
 
 大标题三:require plug-in 插件
   此外require还有一些实现特定功能的插件 需要单独下载噢!
   举几个栗子:
   1.domready
  require(['domready!'], function (doc){

    // when DOM is ready run code here...

    //此种方式可能会发生 加载过大文档等待时间过长而引起waitSeconds错误。

  });

  Or

  require(['domready'], function (domready){

    domReady(function(){

    })

  });

  2.text 和 image  允许加载文本和图片文件
  

   define([

    'text!readme.txt',

    'image!lookyou.jpg',

    'jquery'

    ],
    function(readme,lookyou,$){

      console.log(readme);

      $('body').html(lookyou);

    }

  );

  3.i18n.js(配置语言) json(加载json文件) mdown(加载markdown文件)等插件

  4.更多详细文档移步官方API(虽然是生肉...^_^)

RequireJS 上手使用的更多相关文章

  1. 【整理】 JavaScript模块化规范AMD 和 CMD 的区别有哪些?

    根据玉伯等人在知乎上的回答整理.整理中... AMD 规范在这里:https://github.com/amdjs/amdjs-api/wiki/AMD CMD 规范在这里:https://githu ...

  2. bootstrap + requireJS+ director+ knockout + web API = 一个时髦的单页程序

    也许单页程序(Single Page Application)并不是什么时髦的玩意,像Gmail在很早之前就已经在使用这种模式.通常的说法是它通过避免页面刷新大大提高了网站的响应性,像操作桌面应用程序 ...

  3. 快速上手seajs——简单易用Seajs

    快速上手seajs——简单易用Seajs   原文  http://www.cnblogs.com/xjchenhao/p/4021775.html 主题 SeaJS 简易手册 http://yslo ...

  4. 浅谈HTML5单页面架构(三)—— 回归本真:自定义路由 + requirejs + zepto + underscore

    本文转载自:http://www.cnblogs.com/kenkofox/p/4650310.html 不过,这一篇,我想进一步探讨一下这两个框架的优缺点,另外,再进一步,抛开这两个框架,回到本真, ...

  5. H5单页面架构:自定义路由 + requirejs + zepto + underscore

    angular优点: 强大的数据双向绑定 View界面层组件化 内置的强大服务(例如表单校验) 路由简单 angular缺点: 引入的js较大,对移动端来说有点吃不消 语法复杂,学习成本高 backb ...

  6. requireJS 从概念到实战

    requireJS 可以很轻易的将一个项目中的JavaScript代码分割成若干个模块(module).并且requireJS推荐一个模块就是一个文件,所以,你将获得一些零碎的具有互相依赖关系的JS文 ...

  7. 上手 Webpack ? 这篇就够了!

    JavaSript 模块化打包已混迹江湖许久.2009年,RequireJS 就提交了它的第一个版本,Browserify 接踵而至,随后其他打包工具也开始大行其道.最终,Webpack 从其中脱颖而 ...

  8. 翻译 | 上手 Webpack ? 这篇就够了!

    译者:小 boy (沪江前端开发工程师) 本文原创,转载请注明作者及出处. 原文地址:https://www.smashingmagazine.com/2017/02/a-detailed-intro ...

  9. 实现一个类 RequireJS 的模块加载器 (二)

    2017 新年好 ! 新年第一天对我来说真是悲伤 ,早上兴冲冲地爬起来背着书包跑去实验室,结果今天大家都休息 .回宿舍的时候发现书包湿了,原来盒子装的牛奶盖子松了,泼了一书包,电脑风扇口和USB口都进 ...

随机推荐

  1. PS人物脸部去高光简单之法

    案例素材图: 方法原理步骤:得到高光面的选区,然后吸取高光面附近的颜色填充上去,这样就达到了去高光的效果. 得到高光选区的方法有很多种,要提取这种选区,通过阿尔法通道是最合适不过的了,本案例就通过阿尔 ...

  2. CAS和ABA

    1 CAS compare and swap的缩写,详见乐观锁和悲观锁. 2 ABA 就是说,我获取的旧值是A,然后被人修改成了B,但是又被人修改成了A,我就认为并没有修改,更新内存. 解决办法,给每 ...

  3. 深入研究java.lang.Object类

    前言:Java的类库日益庞大.所包括的类和接口也不计其数.但当中有一些非常重要的类和接口,是Java类库中的核心部分.常见的有String.Object.Class.Collection.ClassL ...

  4. YTU 1004: 1、2、3、4、5...

    1004: 1.2.3.4.5... 时间限制: 1000 Sec  内存限制: 64 MB 提交: 1275  解决: 343 题目描述 浙江工商大学校园里绿树成荫,环境非常舒适,因此也引来一批动物 ...

  5. 路由器的LAN、WAN、WLAN的区别

    路由器的LAN.WAN.WLAN的区别 好多朋友在群内问我路由器如何配置,本来还耐心解答,但是他竟然连LAN.WAN都分不清,瞬间就没了帮助的热情.借这篇经验,小编简单讲一下路由常见的LAN.WAN. ...

  6. Java 抽象类和接口的理解

    Java 抽象类和接口的理解 一.抽象类 为什么使用抽象类(个人理解): 面向对象的概念是,我们知道的所有的对象都是通过类来描绘的,如果类包含的信息不能描绘一个具体的对象,就需要抽象来解决了,意思是一 ...

  7. Android JNI MAC OS环境配置

    前言—JNI技术简介 JNI是Java Native Interface的缩写,即“Java本地调用”,它是Java世界和Native世界的中介桥梁.其中Native世界一般指C/C++的世界.众所周 ...

  8. bzoj4260 REBXOR——Trie树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4260 对于每个位置,求一个前缀最大值和后缀最大值: 也就是从1到 i 的异或和要找前面某处的 ...

  9. MySQL基础 -- 关系代数

    MySQL基础 -- 关系代数 关系代数是一种抽象的查询语言,它用对关系的运算来表达查询.  任何一种运算都是将一定的运算符作用于一定的运算对象上,得到预期的结果.所以运算对象.运算符.运算结果是运算 ...

  10. Luogu P2458 [SDOI2006]保安站岗【树形Dp】

    题目描述 五一来临,某地下超市为了便于疏通和指挥密集的人员和车辆,以免造成超市内的混乱和拥挤,准备临时从外单位调用部分保安来维持交通秩序. 已知整个地下超市的所有通道呈一棵树的形状:某些通道之间可以互 ...