RequireJS - 插件


RequireJS 包含一小组插件,允许加载各种类型的资源作为依赖项。以下是 RequireJS 中可用插件的列表 -

  • 文本
  • 准备就绪
  • 国际化
  • CSS加载

文本

文本插件用于异步加载基于文本的资源,主要用于在 JavaScript 文件中插入 HTML 内容使用文字的时候就可以加载了!在任何 require 或 Define 模块调用中添加前缀,并将文件扩展名传递给插件。与普通模块加载相比,文本插件使用 XHR 加载模块,并且不会将代码作为脚本标签添加到标头。

文本文件资源可以作为依赖项包含在代码中,如下所示:

require(["mymodule", "text!mymodule.html", "text!mymodule.css"],
   
   function(mymodule, html, css) {
      //the html and css variables will be the text
      //of the mymodule.html file and mymodule.css files respectively
   }
);

准备就绪

RequireJS 可用于在 DOM 准备好之前加载脚本,并且只有当脚本完全加载时,开发人员才能与 DOM 交互。有时可以在 DOM 准备好之前加载脚本。因此,为了克服这个问题,RequireJS 提供了称为DOMContentLoaded事件的现代方法,一旦 DOM 准备好,它就会调用 domReady 函数。

require(['domReady'], function(domReady) {
   
   domReady(function() {
      //the domReady function is called when DOM is ready 
      //which is safe to manipulate DOM nodes in this function
   });
});

国际化

它可以与提供i18n捆绑支持的多个语言环境一起使用,当模块或依赖项指定“i18n!”时,该支持将自动加载。字首。要使用它,请下载它并将其放在主 JavaScript 文件所在的同一目录中。将此插件放置在名为“nls”的目录中以查找本地化文件。

例如,假设我们有一个名为country.js的js文件,其中包含以下内容,并将其放置在mydirectory/nls/country.js目录中:

define({
   
   "root": {
      "india": "india",
      "australia": "australia",
      "england": "england"
   }
});

您可以使用fr-fr locale 将特定翻译添加到文件中,上面的代码将更改为 -

define({
   
   "root": {
      "title": "title",
      "header": "header",
      "description": "description"
   },
   
   "es-es": true
});

接下来,使用以下内容指定mydirectory/nls/es-es/country.js中的文件-

define({
   
   "root": {
      "title": "título",
      "header": "cabecera",
      "description": "descripción"
   },
   
   "es-es": true
});

您可以借助main.js文件中的模块配置将语言环境传递给插件来设置语言环境,如下所示 -

requirejs.config({
   
   config: {
      //set the config for the i18n plugin
      
      i18n: {
         locale: 'es-es'
      }
      
   }
});

使用 RequireJS 加载 CSS

您可以使用一些插件来加载CSS文件,只需附加到标题链接即可加载CSS文件。

可以使用您自己的函数加载 CSS,如下所示 -

function myCss(url) {
   var mylink = document.createElement("mylink");
   mylink.type = "text/css";
   mylink.rel = "stylesheet";
   mylink.href = url;
   document.getElementsByTagName("head")[0].appendChild(mylink);
}