返回顶部
首页 > 资讯 > 前端开发 > JavaScript >RequireJs怎么用
  • 532
分享到

RequireJs怎么用

2024-04-02 19:04:59 532人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关Requirejs怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、为什么使用RequireJS?  <script&n

这篇文章将为大家详细讲解有关Requirejs怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一、为什么使用RequireJS?

  <script src="a.js"></script>
  <script src="b.js"></script>
  <script src="c.js"></script>

上述多个js文件加载的时候,浏览器会停止网页渲染(JS阻塞浏览器渲染),加载文件越多,网页失去响应的时间就会越长;另外各文件的依赖关系很难管理。

RequireJs的作用:

(1)实现js文件的异步加载,避免网页失去响应;

(2)管理模块之间的依赖性,便于代码的编写和维护。

(3)定义了一个作用域来避免全局名称空间污染。

二、require.js的加载

1.从官网下载最新版本的require,放在js目录下,使用script引入页面:

<script src="js/require.js"></script>

为了不阻塞页面渲染,可以把它放在html的最底部或改为如下方式:

<script src="js/require.js" defer async="true" ></script>

async属性表明该文件需异步加载(defer属性兼容IE)。

2.加载页面逻辑代码:

假定代码文件是main.js,也放在js目录下,则用如下几种方式引入:

方式1:

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

data-main属性指定网页程序的主入口,这个文件会第一个被requirejs加载。requirejs默认所依赖的资源都是js,所以可以把main.js简写成main。

方式2:

在加载require.js后,通过requirejs加载config配置文件(如有),最后加载主模块:

require([‘configUrl'],function () { //config.js必须通过requirejs加载才能注册
 require([moduleAName],function(moduelA){
 //逻辑代码
 })
});

三、主模块的写法

// main.js
  require(['moduleA', 'moduleB', 'moduleC'], function (moduleA, moduleB, moduleC){
    // some code here
  });

require()函数接受两个参数,第一个参数是一个数组,表示当前模块所依赖的模块;第二个参数是一个回调函数,当前面指定的模块都加载成功后,它将被调用。加载的模块会以参数形式传入该回调函数,从而在回调函数内部就可以使用这些模块(被依赖的模块有return的值)。

require()异步加载moduleA,moduleB和moduleC,浏览器不会失去响应;它指定的回调函数,只有当前面依赖的模块全部下载并执行对应的回调之后,才会运行。

四、模块的配置

require.config()方法可以定义模块的路径,并以短模块名的形式进行依赖的定义。该方法可以写在每个主模块(main.js)的前面,配合主模块一起使用。

参数是一个对象,这个对象的paths属性指定各个模块的加载路径。paths可以配置多个路径,如果远程cdn库没有加载成功,则加载本地的库。

如果不定义模块的配置,则在主模块中的依赖需要写完整路径。

在每个页面按需配置路径:

require.config({  //注册模块的配置,供后面的代码使用
    baseUrl: '/js/', 
 paths: {
   "Jquery":”cdnUrl”, "Jquery/jquery-1.12.0.min"
  "fixheight": "login/fixheight"
 }
 });
 require(['jquery', 'fixheight'], function ($, fixHeight) {
 ...other code; 
 fixHeight.init();
});

或者将config配置作为一个单独的js文件,然后

require([“configJsUrl”],function(){  //需要在main文件中通过require先异步加载模块配置
 require([‘ModuleName'],function(Name){
 …other code
 })
})

为了避免每个页面都要嵌套require,还可以用如下方式:

先创建单独的config.js文件:

require.config({ //注册模块的配置,供后面的代码使用
 baseUrl: "/js/app/", //其他依赖都是对于此位置的相对路径
 // 路径配置
 paths: {
underscore: 'vender/underscore.min',   backbone:'vender/backbone.min'
 jquery: ‘cdnUrl','vender/jquery/jquery-1.12.0.min',
 “模块短名”:”相对于baseUrl的路径地址,省略模块文件的后缀.js”
 },
 // 非AMD模式编写的类库需要重新配置
 shim: {
 underscore: {
  exports:'_'
 },
 backbone(短模块名仍需要定义路径): {
  exports: 'Backbone',      //类库输出的变量名,表明这个模块被外部调用时的名称
  deps:['jquery','underscore'] //该模块的依赖
 }
 },
 urlArgs: "bust=" + document.getElementById('publishDate').attributes['value'].value  //js资源的参数,控制版本刷新缓存
});
define([ 'marionette'], function () { }); //仍是会被执行的js代码,会依次加载需要的模块

然后通过如下方式使用:

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

通过主入口直接将模块配置注册到requirejs命名空间中,页面中后续的require方法无需再注册,可以直接使用短模块名进行依赖加载。

如果没有显式指定config及data-main,则默认的baseUrl为加载RequireJS的HTML页面所在目录。如果指定了data-main而没有在config中指定根路径,则该路径被设为baseUrl。

若想避开"baseUrl + paths"的解析过程,而是直接指定加载某一个目录下的脚本。可以这样做:如果一个module ID符合下述规则之一,其ID解析会避开常规的"baseUrl + paths"配置,而是直接将其加载为一个相对于当前HTML文档路径的脚本:

•    以 ".js" 结束.

•    以 "/" 开始.

•    包含 URL 协议, 如 "Http:" or "https:".

eg. require(['/www/js/app/vender/underscore.min.js'], function (_) {…})

require.js要求,每个模块是一个单独的js文件。加载多个模块就会发出多次HTTP请求,影响网页的加载速度。因此require.js提供了一个优化工具(r.js),当模块部署完毕以后,可以用这个工具将多个模块合并在一个文件中,减少HTTP请求数,但又需要和缓存之间进行取舍。

六、AMD模块的写法

require.js加载的模块,必须按照AMD的规定来写。即模块必须采用特定的define()函数来定义,通常返回一个对象,该对象具有供别的模块使用的方法或属性;或只执行相关逻辑而无输出。

七、require.js的相关插件

text插件允许require.js异步加载txt、css或html等文本资源供js使用,而不需要在script内构建Html字符串

define(['text!components/multiple/template.html', 'image!cat.jpg'],
 function(template,cat){
 $('body').append($(template));
 document.body.appendChild(cat);
 }
);

注意:

模块的依赖既可以通过[]引入,也可以在回调函数里通过require()方法引入,效果一样。因为define方法会通过正则先扫描回调函数中require方法的依赖并下载,然后才执行该回调函数。但此时需要传入依赖require本身,否则会报错:

define(function(require){
 var helper=require(‘helpModuleUrI');//也会提前加载该依赖
 …
})

多个模块先后多次依赖同一个模块时,该模块只会被下载并初始化一次,之后require会保持对其的引用供别的模块再次使用。

区分require方法的执行和回调的执行:

require('config',callBack1);
require('b',callBack2);
// 两个require方法会立即执行,但callBack的执行顺序不确定,取决于下载的顺序。
//不同于以下代码,会严格按顺序执行
require('config',function(){
 require('b',callBack2)
})

关于“RequireJs怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: RequireJs怎么用

本文链接: https://lsjlt.com/news/75725.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • RequireJs怎么用
    这篇文章将为大家详细讲解有关RequireJs怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、为什么使用RequireJS?  <script&n...
    99+
    2024-04-02
  • RequireJs如何使用
    这篇文章主要为大家展示了“RequireJs如何使用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“RequireJs如何使用”这篇文章吧。§ 1.使用§ 1.1...
    99+
    2024-04-02
  • RequireJS实战指南:用RequireJS构建现代前端应用
    RequireJS简介 RequireJS是一个流行的前端模块加载器,它可以帮助我们更好地管理和加载JavaScript模块。使用RequireJS,我们可以将JavaScript代码组织成一个个独立的模块,并在需要的时候加载这些模块。...
    99+
    2024-02-11
    RequireJS 模块加载器 前端开发 JavaScript
  • RequireJS案例分析:看看如何用RequireJS构建真实项目
    模块定义 在 RequireJS 中,模块是 JavaScript 代码的独立单元,每个模块都有自己的作用域和依赖关系。模块的定义十分简单,只需要使用 define() 函数即可,该函数接受三个参数: 模块的名称(字符串) 模块的依赖...
    99+
    2024-02-11
    RequireJS 模块化 依赖管理 异步加载 代码组织
  • 从零开始用RequireJS构建模块化JavaScript应用程序
    了解RequireJS RequireJS是一个用于JavaScript模块加载的库。它允许您将JavaScript代码分成较小的模块,以便可以在应用程序的不同部分使用它们。RequireJS还具有依赖管理功能,可以确保模块在使用之前加...
    99+
    2024-02-11
    JavaScript 模块化 RequireJS 前端开发
  • JavaScript RequireJS 的前世今生,原来它这么有意思!
    JavaScript 的模块化 JavaScript 的模块化是一项重要的技术,它能够将 JavaScript 代码组织成更小的、可重用的模块,从而提高代码的可读性和可维护性。传统上,JavaScript 模块化可以通过使用全局变量、闭...
    99+
    2024-02-22
    文章 JavaScript RequireJS 模块加载器 动态加载 管理模块 性能 可维护性
  • 如何使用requirejs模块化开发多页面一个入口js
    这篇文章主要为大家展示了“如何使用requirejs模块化开发多页面一个入口js”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用requirejs模块化开...
    99+
    2024-04-02
  • java怎么用
      本次来跟大家聊聊关于Java安装后如何使用的问题。我第一次接触Java时也是一头雾水,本以为安装了Java这款软件就能直接开始Java编程,其实不然,还要搭建小小的开发条件。推荐教程:Java入门视频教程1、首先安装jdk  这里先说明...
    99+
    2018-01-07
    java教程 java
  • 怎么用redis
    这篇文章运用简单易懂的例子给大家介绍怎么用redis,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。安装redis后,在命令行输入“redis-cli"回车输入”auth pa...
    99+
    2024-04-02
  • SqlClr怎么用?
    开启 clr 的 它不支持UI 这是 sql 语句,如下EXEC sp_configure "clr enabled" ,1goRECONFIGURE关闭就是 把值改为 0开始构建 cl...
    99+
    2024-04-02
  • redis怎么用
    这篇文章将为大家详细讲解有关redis怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。redis什么时候用● Redis使用最佳方式是全部数据in-memory。● ...
    99+
    2024-04-02
  • phpMyAdmin怎么用
    小编给大家分享一下phpMyAdmin怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是phpMyAdmin ?phpM...
    99+
    2024-04-02
  • sqlldr怎么用
    小编给大家分享一下sqlldr怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!sqlldr userid=btup...
    99+
    2024-04-02
  • Hanlp怎么用
    这篇文章主要介绍了Hanlp怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Hanlp是由一系列模型与算法组成的工具包,目标是普及自然语...
    99+
    2024-04-02
  • oradebug怎么用
    小编给大家分享一下oradebug怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!oradebug是个sql*plus命令行...
    99+
    2024-04-02
  • Cassandra怎么用
    小编给大家分享一下Cassandra怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!    一...
    99+
    2024-04-02
  • mysql怎么用
    这篇文章将为大家详细讲解有关mysql怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。常用的命令:   1.登录  mysql &nbs...
    99+
    2024-04-02
  • SQLite怎么用
    这篇文章主要为大家展示了“SQLite怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SQLite怎么用”这篇文章吧。大体步骤:创建SQLiteDataba...
    99+
    2024-04-02
  • Neo4j怎么用
    这篇文章主要介绍Neo4j怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!NEO4j  Neo4j是一个世界领先的图数据库,具有本机图形存储与处理功能,具有展示方便、支持面广、性...
    99+
    2024-04-02
  • mydumper怎么用
    小编给大家分享一下mydumper怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!下载:https://launchpad....
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作