全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解RequireJS按需加载样式文件

样式模块化的好处

RequireJS被设计用来加载JavaScript模块的,可是大家有没有联想到其实样式文件可以进行模块化处理,那么问题来了,RequireJS能不能像加载脚本文件一样来加载样式文件呢?

虽然RequireJS本身没有实现这个功能,但官网推荐了一些常用的插件供我们使用,官网插件插件地址为:http://requirejs.org/docs/plugins.html,同时在github上也有社区大量贡献的插件:https://github.com/jrburke/requirejs/wiki/Plugins

当然除了引用第三方插件外,我们也可以动手自己写一个类似插件,不过我在这里要推荐一个很不错的样式模块加载器require-css,其官网地址为:https://github.com/guybedford/require-css。

那么我们再来谈谈,样式模块话的好处吧,和脚本模块化一样,样式模块化也可以做到按需加载,样式依赖,不过对我来说最大的好处是将脚本的管理放权到前端管理,为什么这么说呢? 以前我们添加样式文件都是通过link标签引入的,而被引入的文件基本上都是jsp、php等后台文件,这样对与后台不太熟悉的人来说,如果样式文件发生改变,都要麻烦后台开发人员。但是最懂样式的莫过于前端开发人员了。

require-css的使用介绍

下面我们通过一个简单的例子,来介绍下require-css的用法,首先下载require-css,去到上面给出的官网地址,在页面的右下角点击Download ZIP按钮,下载完成后解压,将css.js拷贝复制到项目中去。

这个简单示例的目录如下所示:

假设我们的目的是,通过加载util模块时,页面先加载其依赖的样式文件1.css。这个需求我们经常遇到,比如我们使用JqueryUI时,在加载其脚本模块时,在页面我们也会添加上link标签引入其相关的UI样式文件。

首先我们在project.html中引入RequireJS和指定配置文件(main.js)的位置。期代码如下所示:

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title>RequireJS简单示例</title>
</head>
<body>
  <p id="test">如何处理依赖问题</p>
  <script src="scripts/lib/jquery-1.11.0.min.js"></script>
  <script src="scripts/require.js" data-main="scripts/main"></script>
</body>
</html>

我们进入到main.js配置文件。main.js应该是页面的入口文件,在这个入口文件中,指定了入口文件需要加载的模块,同事也设置了RequireJS某些具体参数。其代码如下所示:

/*入口脚本*/
require.config({
  baseUrl: "scripts/",
  paths: {
    "util": "helper/util"
  },
  waitSeconds: 15,
  map: {
    '*': {
      'css': 'lib/css'
    }
  },
  shim : {
    'util': ['css!../style/1.css']
  }
});

require(["util"], function(util) {
  // todo
});

其中我们要特别注意map和shim的配置,"map"告诉RequireJS在任何模块之前,都先载入这个模块,这样别的模块依赖于css!../style/1.css这样的模块都知道怎么处理了,shim那时干什么用的呢?这这个示例中,他表示util这个模块在加载之前需要先加载1.css这个样式文件。当然我们也可以在Util模块里直接设置他的依赖,下面将会解释。

下面我们来看看util模块的代码,代码如下所示:

define(function(){
  //alert("Hello RequireJS!!");
  console.log($("#test").text());
});

这个模块很简单,就是通过jQuery获取页面id为test的值。并且在浏览器的控制台输出来。这里你可能感觉有点奇怪。为什么你使用了jQuery但是在依赖数组中且没有设置呢?正确的说,我们应该这样写:

define(['jquery'],function(){
  //alert("Hello RequireJS!!");
  console.log($("#test").text());
});

我这样做的目的是,用RequireJS打包时,不要将jquery打包进去,这样就可以减少文件的大小了。还有一个上面提出的问题,加入我不用shim这个配置时,可以向依赖JQuery一样,将样式文件写到define的依赖数组中去。其代码如下:

define(['css!../style/1.css'],function(){
  //alert("Hello RequireJS!!");
  console.log($("#test").text());
});

不过你应该一眼就能看出来,那种写法比较好吧,我比较推荐,将依赖写到shim配置中去。

一切配置就绪,在浏览器中打开project.html页面,运行结果如图所示:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# requirejs加载样式  # requirejs  # 加载css  # requirejs加载css文件  # 一篇文章掌握RequireJS常用知识  # 教你5分钟学会用requirejs(必看篇)  # RequireJS入门一之实现第一个例子  # RequireJS多页面应用实例分析  # 在Html中使用Requirejs进行模块化开发实例详解  # RequireJS使用注意细节  # 使用requirejs模块化开发多页面一个入口js的使用方式  # requirejs + vue 项目搭建详解  # 在JavaScript应用中使用RequireJS来实现延迟加载  # 使用RequireJS库加载JavaScript模块的实例教程  # RequireJS用法简单示例  # 加载  # 所示  # 官网  # 都是  # 中去  # 写到  # 开发人员  # 配置文件  # 的人  # 来了  # 也有  # 也会  # 在这个  # 都要  # 将会  # 的说  # 目的是  # 不太  # 这样做  # 很简单 


相关文章: 大同网页,大同瑞慈医院官网?  营销式网站制作方案,销售哪个网站招聘效果最好?  建站之星微信建站一键生成小程序+多端营销系统  如何在建站宝盒中设置产品搜索功能?  香港服务器选型指南:免备案配置与高效建站方案解析  建站主机无法访问?如何排查域名与服务器问题  北京网站制作网页,网站升级改版需要多久?  如何通过FTP空间快速搭建安全高效网站?  自助网站制作软件,个人如何自助建网站?  制作企业网站建设方案,怎样建设一个公司网站?  如何在香港免费服务器上快速搭建网站?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何零成本快速生成个人自助网站?  想学网站制作怎么学,建立一个网站要花费多少?  建站之星安装模板失败:服务器环境不兼容?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  如何通过可视化优化提升建站效果?  ,sp开头的版面叫什么?  香港服务器租用费用高吗?如何避免常见误区?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  如何通过西部建站助手安装IIS服务器?  如何制作一个表白网站视频,关于勇敢表白的小标题?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  如何快速上传自定义模板至建站之星?  如何生成腾讯云建站专用兑换码?  如何在腾讯云服务器快速搭建个人网站?  建站之星安装步骤有哪些常见问题?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  淘宝制作网站有哪些,淘宝网官网主页?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  家庭建站与云服务器建站,如何选择更优?  建站之星代理商如何保障技术支持与售后服务?  如何通过WDCP绑定主域名及创建子域名站点?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  如何在万网主机上快速搭建网站?  如何快速建站并高效导出源代码?  如何快速搭建高效WAP手机网站吸引移动用户?  创业网站制作流程,创业网站可靠吗?  高防服务器租用如何选择配置与防御等级?  C#怎么创建控制台应用 C# Console App项目创建方法  简单实现Android文件上传  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  建站中国官网:模板定制+SEO优化+建站流程一站式指南  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  Python多线程使用规范_线程安全解析【教程】  如何获取PHP WAP自助建站系统源码?  建站之星如何修改网站生成路径?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。