首先 点击此处 得到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. Page 实例的生命周期

    注册页面 · 小程序 https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page.html

  2. git 团队代码管理交流共同进步

    Installation methods for GitLab | GitLab https://about.gitlab.com/installation/#centos-7 gittutorial ...

  3. Eclipse添加Qt插件

    此文件仅为步骤操作作一个记录,以便以后方便查阅. 1.操作大体参考这个网站:http://blog.csdn.net/defonds/article/details/5013412 2.我的运行环境: ...

  4. YTU 2572: 猜灯谜

    2572: 猜灯谜 时间限制: 1 Sec  内存限制: 128 MB 提交: 154  解决: 91 题目描述 A 村的元宵节灯会上有一迷题: 请猜谜 * 请猜谜 = 请边赏灯边猜 小明想,一定是每 ...

  5. 【Selenium】HTML/XML/XPATH基础

    Html超文本标记语言 网页上单击右键→查看源文件/查看源代码 Html基本结构 <html>               为文档根元素,所有元素都在内部进行 <head>   ...

  6. sphinx源码分析总结

    http://www.cnblogs.com/bonelee/p/6667955.html shinx索引部分源码分析——过程:连接到CSphSource对应的sql数据源,通过fetch row取其 ...

  7. yum: Cannot find a valid baseurl for repo: migsrv解决方法

    yum安装程序报错: Loaded plugins: fastestmirror Setting up Update Process Determining fastest mirrors Could ...

  8. [转]python_常用断言assert

    原文地址:http://www.jianshu.com/p/eea0b0e432da python自动化测试中寻找元素并进行操作,如果在元素好找的情况下,相信大家都可以较熟练地编写用例脚本了,但光进行 ...

  9. C++实现从尾到头打印链表(不改变链表结构)

    /* * 从尾到头打印链表.cpp * * Created on: 2018年4月7日 * Author: soyo */ #include<iostream> #include<s ...

  10. python 面向对象六 动态添加方法 __slots__限制动态添加方法

    一.动态添加属性 >>> class Student(object): pass >>> st = Student() >>> st.name = ...