首先 点击此处 得到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. linux driver开发

    1 开发linux driver时的调试思路 基本上是打印调试,原因很简单,方便.或者使用工具挂住cpu.

  2. mongo11---Access control is not enabled for the database

    今天使用MongoDB时遇到了一些问题 建立数据库连接时出现了warnings 出现这个警告的原因是新版本的MongDB为了让我们创建一个安全的数据库 必须要进行验证 后来在外网找到了答案 解决方案如 ...

  3. HTTP网络请求原理 (三) 简单模拟HTTP服务器

    HTTP实际上是基于TCP的应用层协议,它在更高的层次封装了TCP的使用细节,是网络请求操作更为易用. TCP连接是因特网上基于流的可靠连接,它为HTTP提供了一条可靠的比特传输管道. 从TCP连接一 ...

  4. appium学习【四】:第一个appium脚本

    #coding=utf-8 import os import HTMLTestRunner import unittest import time import sys from appium imp ...

  5. Swift4 扩张(Extenstion), 集合(Set)

    创建: 2018/03/09 完成: 2018/03/10 更新: 2018/04/19 修改小标题  [扩张的定义与使用协议] -> [通过扩张来采用协议] 更新: 2018/09/18 标题 ...

  6. Python数据存储 — MySQL数据库操作

    本地安装MySQL 调试环境python3.6,调试python操作mysql数据库,首先要在本地或服务器安装mysql数据库. 安装参考:https://mp.csdn.net/postedit/8 ...

  7. [App Store Connect帮助]七、在 App Store 上发行(5)手动发布版

    如果在您提交您的 App 以供审核时选择手动发布某个版本,您可以在它被批准且状态更改为“等待开发者发布”后发布该版本.如果您的某个 App 处于“等待开发者发布”状态超过 30 天,您会收到来自 Ap ...

  8. [Swift通天遁地]一、超级工具-(1)动态标签:给UILabel文字中的Flag和url添加点击事件

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  9. POJ 2259 Team Queue(队列)

    题目原网址:http://poj.org/problem?id=2259 题目中文翻译: Description 队列和优先级队列是大多数计算机科学家已知的数据结构. 然而,Team Queue并不是 ...

  10. [UOJ386]鸽子固定器

    题解 堆+贪心 题意就是给你\(n\)个物品,让你最多选\(m\)个 每个物品有两个属性\(a_i,b_i\) 最大化\((\sum_{a_i})^{dv}+(max(b_i)-min(b_i))^{ ...