首先 点击此处 得到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. 【Java报错】Message: 3 字节的 UTF-8 序列的字节 2 无效

    报错logs 2015-03-10 10:15:32,360 ERROR [qtp32195030-27] [InvokeAfterValve.java:55] - javax.xml.stream. ...

  2. XMU 1050 Diffuse Secret 【最短路】

    1050: Diffuse Secret Time Limit: 500 MS  Memory Limit: 64 MBSubmit: 10  Solved: 8[Submit][Status][We ...

  3. 用dpkg命令制作deb包方法总结

    用dpkg命令制作deb包方法总结 如何制作Deb包和相应的软件仓库,其实这个很简单.这里推荐使用dpkg来进行deb包的创建.编辑和制作. 首先了解一下deb包的文件结构: deb 软件包里面的结构 ...

  4. WdatePicker.js的使用方法(转)

    WdatePicker.js的使用方法 博客分类: 其他   1. 跨无限级框架显示 无论你把日期控件放在哪里,你都不需要担心会被外层的iframe所遮挡进而影响客户体验,因为My97日期控件是可以跨 ...

  5. Avoiding memory leaks

    Android applications are, at least on the T-Mobile G1, limited to 16 MB of heap. It's both a lot of ...

  6. bzoj3995

    线段树 额 计蒜客竟然把这个出成noip模拟题... 这个东西很像1018,只不过维护的东西不太一样 然后我参考了fuxey大神的代码,盗一波图 具体有这五种情况,合并请看代码,自己写了一个结果wa了 ...

  7. Tomcat相关的LNMT和LAMT

    Tomcat相关的LNMT和LAMT LNMT:Linux Nginx MySQL Tomcat Client (http) --> nginx (reverse proxy)(http) -- ...

  8. cardboard sdk for unity 下载地址

    https://github.com/googlesamples/cardboard-unity

  9. idea 快捷键以及包含字符串文件搜索

    1.idea也有一个类似于eclipse的包含字符串文件搜索(特别实用) idea 里按快捷键:ctrl+H 2.下图是idea的快捷键汇总 3.debug调试 F5:跳入方法   F6:向下逐行调试 ...

  10. 创建Mesh->格子地图转NavMesh->可破坏墙壁

    1. 前言     最近连续做了很多代码动态生成Mesh的工作,从动态生成修改瞄准范围的Mesh到可破坏的墙壁,以及之前写了一半导航网格生成.     想借此机会整理下最近的积累,如果在阅读过程中发现 ...