index.html

<body class="requireBODY" id="body"><div id="vuebox">{{ a }}<script src="require.js" data-main='main.js'></script>
//引入requirejs,配置data-mian属性,作为程序主入口

main.js

require.config({    
paths: {
"jquery": "../../content/jquery-2.1.1.min",
//"moudleA": "a",//(1-1)
"moudleB": "b",
"moudleC":"c",
"vue":"vue.min"
},
shim: {
      'jquery.window': ['jquery'],//加载非AMD规范的模块定义依赖模块,jquery全屏幕滚动插件
'vue':{'exports':'vue'},
//'a':{deps:[], exports:'fna'},//exports定义导出全局函数(1-2)
    }
}); //加载非AMD规范的模块
//config(1-1) paths: {"moudleA": "a"}
require(['moudleA'],function(Amodule){
//Amodule()//Amodule undefined is not a function 该模块未遵循AMD规范,所以并没有回传参数模块;
fna()//但是a.js脚本已经引入,脚本内的 fna 函数已经引入全局,所以可以直接调用 fna 函数
})
//config(1-2) shim{'a':{deps:[], exports:'fna'}}//exports定义导出全局函数
require(["a"],function(Amodule){
Amodule()//shim中定义的模块,将全局变量回传到回调函数中;实际这个变量引入后就在全局,与上种方法的区别是该方法导入模块的全局变量值 fna 作为参数传入了该回调函数
}) require(['moudleB'],function(Bmodule){
Bmodule.moudleBfn()
alert(Bmodule.moudleBmath)
Bmodule.moudleBrequireC()
}) require(['jquery','jquery.window'],function(){
$(document).ready(function(){
var $windows = $('.window');
$windows.windows({
snapping: true,
snapSpeed: 500,
snapInterval: 1100,
onScroll: function(s){},
onSnapComplete: function($el){},
onWindowEnter: function($el){}
});
});
}) require(['vue'],function(Vue){
var vue = new Vue({
'el':'#vuebox',
data:{
a:'aaaaaaaa'
}
})
})

  

 

a.js

function fna(){
  alert('moduleA')
}

b.js(两种定义模块方法)

b-1:
define(["require","exports","module",'jquery','moudleC'],function(e,t,m,moduleJQ,moduleC){ var b1 = function (){
alert($('body').attr('class'))
} var b2 = 1000; var requireC = e('moudleC').c//=moduleC.c :导入c模块,引用c模块的方法 t.moudleBfn = b1;//定义导出模块,也可以直接return
t.moudleBmath = b2;
t.moudleBrequireC = requireC; // return {
// "moudleBfn":b1,
// "moudleBmath":b2,
// "moudleBrequireC":requireC
// };
})
b-2
define(function(require,exports,module){
  //这种方式并不像seajs一样按需加载,实际上也是前置加载
  var $ = require('jquery')
var b1 = function (){ alert($('body').attr('class')) }
var b2 = 1000; //return;
//在引用c模块前断点发现c模块还是引入了,因为RequireJS 内部通过 Function.prototype.toString() ,然后使用正则匹配所有的require 方法,将其转化为 define(['./mod1',./mod2']function(mod1,mod2);
//这也就是为什么这种方式定义模块参数名只能是require,从而使用打包工具压缩代码时出现问题。
var requireC = require('moudleC').c //导入c模块,引用c模块的方法
exports.moudleBfn = b1;//定义导出模块,也可以直接return
exports.moudleBmath = b2;
exports.moudleBrequireC = requireC;
})

  

  

c.js

define(function(){

  return {
    c:function(){
      return alert('moduleC')
    }
  };
})

  

  

requireJS基础使用的更多相关文章

  1. RequireJS基础(三)

    这篇来写一个具有依赖的事件模块event. event提供三个方法bind.unbind.trigger来管理DOM元素事件. event依赖于cache模块,cache模块类似于jQuery的$.d ...

  2. RequireJS基础(二)

    上一篇是把整个jQuery库作为一个模块.这篇来写一个自己的模块:选择器. 为演示方便这里仅实现常用的三种选择器id,className,attribute. RequireJS使用define来定义 ...

  3. JavaScript模块化编程之AMD - requireJS基础使用

    JavaScript模块化编程之AMD requireJS基础使用 标签(空格分隔): JavaScript 参考文章 AMD规范 AMD是"Asynchronous Module Defi ...

  4. requirejs基础教程

    一.初识requirejs 随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作.模块复用. ...

  5. RequireJS 基础(一)

    RequireJS由James Burke创建,他也是AMD规范的创始人. RequireJS会让你以不同于往常的方式去写JavaScript,你将不再使用script标签在HTML中引入JS文件,以 ...

  6. RequireJS基础知识

    RequireJS解决代码依赖问题,异步加载js,避免页面失去相应 RequireJS的目标是鼓励代码的模块化,它使用了不同于传统<script>标签的脚本加载步骤.可以用它来加速.优化代 ...

  7. 前端JS框架系列之requireJS基础学习

    1 背景 伴随着项目功能的不断扩充,客户体验的不断完善,实现交互逻辑的JS代码变得越来越多.起初,为了管理JS代码,我们把JS从页面中解放出来独立成文件,接着又把相似的交互代码提取到公共的JS页面中. ...

  8. requirejs——基础

    一.requirejs存在的意义: 我们引用外部JS文件通常是这样引用的: <script src="1.js"></script> <script ...

  9. requireJS入门基础

    参考  require.js详解 1.引用requireJS的html文件 <!DOCTYPE html> <head> <title>requireJS</ ...

随机推荐

  1. 最全的iOS数据存储方法

    目的 项目准备运用的Core Data进行本地数据存储,本来打算只写一下Core Data的,不过既然说到了数据存储,干脆来个数据存储基础大总结!本文将对以下几个模块进行叙述. 沙盒 Plist Pr ...

  2. Shell脚本数据备份

  3. JavaWeb框架SSH_Struts2_(三)

    1. Struts2的拦截器(使用拦截器实现权限控制) 拦截器简介 拦截器概述 拦截器工作原理 拦截器的配置 Struts2的内建拦截器 内建拦截器的介绍 内建拦截器的配置 自定义拦截器 实现自定义拦 ...

  4. TFBOY 养成记 一些比较好多文章。

    API解释中文版(简书文章,没事看看): http://www.jianshu.com/p/e3a79eac554f Tensorlfow op辨异:tf.add()与tf.nn.bias_add() ...

  5. OC语言的Block与Protocol(协议)

    Block ● Block封装了一段代码,可以在任何时候执⾏行 ● Block可以作为函数参数或者函数的返回值,⽽而其本⾝身又可以带输⼊入参数或返回值. ● 苹果官⽅方建议尽量多⽤用block.在多线 ...

  6. [翻译]Python List Comprehensions: Explained Visually || Python列表解析式

    原文1地址: http://treyhunner.com/2015/12/python-list-comprehensions-now-in-color/ 原文2地址: http://blog.tea ...

  7. 51nod 1058 N的阶乘的长度 位数公式

    1058 N的阶乘的长度基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注输入N求N的阶乘的10进制表示的长度.例如6! = 720,长度为3.Input输入N( ...

  8. POJ1837--二维背包

    Balance Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 13525 Accepted: 8474 Description ...

  9. 真正的精通Java是种什么样的境界?

    会在不适合使用java的地方不用java! 作为一名软件开发者,要追求的,应该是不断地提升自己分析问题把握事物关键点,实事求是地给出切实可行且能"一剑封喉"的优雅解决方案的能力,再 ...

  10. Centos-6.5 + python3 + mysql5.6 环境搭建

    注意:Centos6.5 是刚装好的系统 yum install lrzsz  (ftp上传和下载) yum install -y gcc     yum install -y gcc gcc-c++ ...