最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 22:30:52
文档

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

详解require.js配置路径的用法和css的引入:前端开发在近一两年发展的非常快,JavaScript作为主流的开发语言得到了前所未有的热捧。大量的前端框架出现了,这些框架都在尝试着解决一 些前端开发中的共性问题,但是实现又不尽相同。通常一般的前端加载js文件都是这样 : <script type=te
推荐度:
导读详解require.js配置路径的用法和css的引入:前端开发在近一两年发展的非常快,JavaScript作为主流的开发语言得到了前所未有的热捧。大量的前端框架出现了,这些框架都在尝试着解决一 些前端开发中的共性问题,但是实现又不尽相同。通常一般的前端加载js文件都是这样 : <script type=te


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

<script type="text/javascript" src="js/js1.js"></script>
<script type="text/javascript" src="js/js2.js"></script>
<script type="text/javascript" src="js/js3.js"></script>
<script type="text/javascript" src="js/js4.js"></script>

但是当一个项目特别大的时候  引入的js文件就特别多,这样看起来不雅观,并且不高效,当js文件多而大的时候,网页下载就会出现超时,导致网站响应超时,直接500,所以一个神奇的

js框架(js工具包)就出现了:require.js。

require.js主要解决两个问题:

1、实现js的异步加载,避免js太多加载响应时间太多导致网站超时,

2、管理模块之间的依赖性,便于编写与维护。

好了步入今天的正题,写一个require.js用法的案例,供大家参考一下:

假设我们的项目有一个这样的资源目录:

第一步在index.html中引入已经下载好的require.js

然后我们新建一个config.js来写相应的加在配置:

然后打开config.js里面写入代码如下:

require.config({
 baseUrl:'/data/points/',//配置基目录
 urlArgs:'v='+(new Date()).getTime(),//清楚缓存
 paths:{
 'css': 'libs/js/css.min',
 'jquery': 'libs/js/jquery-1.11.1.min',
 'vur': 'libs/js/vue.min',
 'amazeui': 'libs/js/amazeui.min',
 'color': 'libs/js/color.min'
 },
 shim:{
 'amazeui':{
 deps: ['jquery','css!libs/css/amazeui.min','css!style/common','css!style/footer'],
 },
 'color':{
 deps:['css!libs/css/color.min']
 }
 }

});

其中加入css应该用模块的依赖性 也就是deps

deps:['css!libs/css/color.min'] 这里会优先加在css这个模块名下的文件(libs/js/css.min.js) 然后一个 "!"后面紧接着在基目录下加在libs/css/color.min.css

其中css.min.js这个是一个依赖模块js,这里面是写了一个加载css文件的方法,

具体css.min.js

define(
 function () {
 if (typeof window == "undefined")return {
 load: function (n, r, load) {
 load()
 }
 };
 var head = document.getElementsByTagName("head")[0];
 var engine = window.navigator.userAgent.match(/Trident\/([^ ;]*)|AppleWebKit\/([^ ;]*)|Opera\/([^ ;]*)|rv\:([^ ;]*)(.*?)Gecko\/([^ ;]*)|MSIE\s([^ ;]*)/) || 0;
 var useImportLoad = false;
 var useOnload = true;
 if (engine[1] || engine[7])useImportLoad = parseInt(engine[1]) < 6 || parseInt(engine[7]) <= 9; else if (engine[2])useOnload = false; else if (engine[4])useImportLoad = parseInt(engine[4]) < 18;
 var cssAPI = {};
 cssAPI.pluginBuilder = "./css-builder";
 var curStyle;
 var createStyle = function () {
 curStyle = document.createElement("style");
 head.appendChild(curStyle)
 };
 var importLoad = function (url, callback) {
 createStyle();
 var curSheet = curStyle.styleSheet || curStyle.sheet;
 if (curSheet && curSheet.addImport) {
 curSheet.addImport(url);
 curStyle.onload = callback
 } else {
 curStyle.textContent = '@import "' + url + '";';
 var loadInterval = setInterval(function () {
 try {
 curStyle.sheet.cssRules;
 clearInterval(loadInterval);
 callback()
 } catch (e) {
 }
 }, 10)
 }
 };
 var linkLoad = function (url, callback) {
 var link = document.createElement("link");
 link.type = "text/css";
 link.rel = "stylesheet";
 if (useOnload)link.onload = function () {
 link.onload = function () {
 };
 setTimeout(callback, 7)
 }; else var loadInterval = setInterval(function () {
 for (var i = 0; i < document.styleSheets.length; i++) {
 var sheet = document.styleSheets[i];
 if (sheet.href == link.href) {
 clearInterval(loadInterval);
 return callback()
 }
 }
 }, 10);
 link.href = url;
 head.appendChild(link)
 };
 cssAPI.normalize = function (name, normalize) {
 if (name.substr(name.length - 4, 4) == ".css")name = name.substr(0, name.length - 4);
 return normalize(name)
 };
 cssAPI.load = function (cssId, req, load, config) {
 (useImportLoad ? importLoad : linkLoad)(req.toUrl(cssId + ".css"), load)
 };
 return cssAPI
}
);

现在好了浏览器打开index.html发现没有把我们需要额外加在的加在进来,这个是为是么呢?好了,这里的话记得要在index.html的head下<script type="javascript/text" src="config.js"></script>后面调用require.js中的方法require,也就是加上这一句

<script type="javascript/text' >require['color']</script>//标识调用配置中的color模块

再次访问index.html好了完美出现我们想要的了。

如图:

 

 注意

index.html中引入的顺序不能打乱

<script type="text/javascript" src="config.js"></script>
 
<script type="text/javascript" src="require.js"></script>
 
<script type="text/javascript">require(['color']);</script>

require.config()接受一个配置对象,这个对象除了有前面说过的paths属性之外,还有一个shim属性,专门用来配置不兼容的模块。具体来说,每个模块要定义(1)exports值(输出的变量名),表明这个模块外部调用时的名称;(2)deps数组,表明该模块的依赖性。

文档

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

详解require.js配置路径的用法和css的引入:前端开发在近一两年发展的非常快,JavaScript作为主流的开发语言得到了前所未有的热捧。大量的前端框架出现了,这些框架都在尝试着解决一 些前端开发中的共性问题,但是实现又不尽相同。通常一般的前端加载js文件都是这样 : <script type=te
推荐度:
标签: 使用 用法 js
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top