require.js 基础使用方法记录

require.js作为javsscript的一种模块化编程规范,异步加载模块,主要应用于浏览器端,异步加载js文件,让浏览器不会因为在加载js文件而失去响应。

一、开始

目录结构:

首先要加载require.js

<!-- ***.html-->

<script data-main="js/app.js" src="js/require.js" defer></script>

app.js即是入口文件,我们在里面加载math.js

//app.jsrequire([‘app/math‘],function(math){
    console.log(‘1 + 3 = ‘,math.add(1,3));
})

math.js的编写要符合AMD规范

// math.js
define(function(){
    var add = function(a,b){
        return a+b;
    }
    return {
        add:add
    }
})

这时候运行就可以打印相应的结果

二、加载不符合AMD规范的js文件

require.js为我们提供了一个shim方法,帮助我们加载一些不符合AMD规范的js文件

首先我们随便在People.js里面写点内容:

//People.js
var People = function(name){
    this.name = name;
    this.sayName = function(){
        console.log(`my name is ${this.name}`);
    };
};

改写app.js

//app.js
require.config({
    shim:{
        ‘app/People‘:{
            deps:[], // 这里声明依赖文件
            exports:‘People‘ // 输出方法
       }
    }
});
require([‘app/math‘,‘app/People‘],function(math,People){
    console.log(‘1 + 3 = ‘,math.add(1,3));
    var jack = new People(‘jack‘);
    jack.sayName();
})

运行,正确输出:

三、baseUrl和paths

require提供一些帮助我们定位文件的方法

在app.js中添加baseUrl:

// app.js
require.config({
    baseUrl:‘js/app‘, //相对于html目录定位
    shim:{
        People:{
            deps:[], // 这里声明依赖文件
            exports:‘People‘ // 输出方法
       }
    }
});
require([‘math‘,‘People‘],function(math,People){
    console.log(‘1 + 3 = ‘,math.add(1,3));
    var jack = new People(‘jack‘);
    jack.sayName();
})

同样可以输出相应的结果:

我们还可以为特定的文件指定paths,比如我们要引入jquery:

require.config({
    baseUrl:‘js/app‘, //相对于html目录定位
    paths:{
        jquery:‘../lib/jquery‘ // 相对于baseUrl定位
    },
    shim:{
        People:{
            deps:[], // 这里声明依赖文件
            exports:‘People‘ // 输出方法
        }
    }
});
require([‘math‘,‘People‘,‘jquery‘],function(math,People,$){
    $(function(){
        console.log(‘1 + 3 = ‘,math.add(1,3));
        var jack = new People(‘jack‘);
        jack.sayName();
    })
})

同样输出了一样的结果:

时间: 2024-12-08 05:28:12

require.js 基础使用方法记录的相关文章

require.js配置路径的用法和css的引入

前端开发在近一两年发展的非常快,JavaScript作为主流的开发语言得到了前所未有的热捧.大量的前端框架出现了,这些框架都在尝试着解决一 些前端开发中的共性问题,但是实现又不尽相同.通常一般的前端加载js文件都是这样 : <script type="text/javascript" src="js/js1.js"></script> <script type="text/javascript" src="

js基础心得

最近有想法研究jQuery源码,一顿查阅顿感自己基础薄弱.手中正好有一本js高程,遂决定深入js基础,并记录心得至博客园.以待一举攻克jQuery,VUE等源码. 1,变量.作用域和内存问题 2,引用类型 3,面向对象的程序设计 4,函数表达式 原文地址:https://www.cnblogs.com/cl94/p/11223720.html

记录:sea.js和require.js配置 与 性能对比

最近有点忙,很久无写博客,记录一下之前的配置require.js和sea.js的配置.(有误有望提出 require.js 文件目录 /app(项目使用js) /lib(require.js jq存放处) /plugin(框架对应的功能插件) require.js比较方便在于,不是amd的模块组件可以通过配置文件进行依赖配置.而且异步加载js 页面加载速度是杠杠的.当然会有点问题的,网速过慢的话,可能会出现js,timeout(可以通过配置解决. config.js (配置文件) // 配置信息

require.js使用方法说明

1  前端组件requireJS使用方法说明书 1.1 知识背景之javascript模块化 随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂. 网页越来越像桌面程序,需要一个团队分工协作.进度管理.单元测试等等......开发者不得不使用软件工程的方法,管理网页的业务逻辑. Javascript模块化编程,已经成为一个迫切的需求.理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块. 但是,Javascript不是一

javascript基础修炼(12)——手把手教你造一个简易的require.js

目录 一. 概述 二. require.js 2.1 基本用法 2.2 细说API设计 三. 造轮子 3.1 模块加载执行的步骤 3.2 代码框架 3.3 关键函数的代码实现 示例代码托管在我的代码仓:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端>原创博文目录 华为云社区地址:[你要的前端打怪升级指南] 一. 概述 许多前端工程师沉浸在使用脚手架工具的快感中,认为require.js这种前端模块化的库已经过气了,的确如果只从使用场

js写基础insertAfter()方法

DOM没有提供insertAfter()方法,使用js写一个基础的insertAfter()方法. ? 1 2 3 4 5 6 7 8 9 10 11 12 <script type="text/javascript"> function insertAfter(newElement,targetElement){     var parent = targetElement.parentNode;     if(targetElement == parent.lastCh

AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法

AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一个可用的模块化 JavaScript 的解决方案. AMD 模块格式本身是一个关于如何定义模块的提案,在这种定义下模块和依赖项都能够异步地进行加载.它有很多独特的优势,包括天生的异步及高度灵活等特性,这些特性能够解除常见的代码与模块标识间的那种紧密耦合.目前它已经被很多项目所接纳,包括jQuery(1.7). RequireJS RequireJS是一个工具库,主

node.js基础模块http、网页分析工具cherrio实现爬虫

node.js基础模块http.网页分析工具cherrio实现爬虫 一.前言      说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http.网页分析工具cherrio. 使用http直接获取url路径对应网页资源,然后使用cherrio分析. 这里我主要学习过的案例自己敲了一遍,加深理解.在coding的过程中,我第一次把jq获取后的对象直接用forEach遍历,直接报错,是因为jq没有对应的这个方法,只有js数组可以调用. 二.知识点    ①:supera

js基础篇——call/apply、arguments、undefined/null

a.call和apply方法详解 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象.如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj. apply方法: 语法:apply([thisObj[,ar