[AngularJS] 使用AngularCSS动态加载CSS

前言

上列两篇文章里,介绍了如何如何使用AngularAMD来动态加载Controller与Service。本篇文章以此为基础,介绍如何使用AngularCSS来动态加载CSS,让项目功能更加模块化,增加开发与维护的工作效率。主要为自己留个纪录,也希望能帮助到有需要的开发人员。

安装

本篇文章以「使用AngularAMD动态加载Service」的范例程序为基础,为其附加动态加载CSS的功能。进入本篇的开发步骤之前,开发人员可以先依照上一篇文章的步骤来建立基础架构。

动态加载Service范例:点此下载

取得基础架构之后,开启命令提示字符CD到这个基础架构的文件夹输入下列指令,就可以使用bower来取得AngularCSS套件。

  1. bower install angular-css

完成上列步骤后,开启工作文件夹里面的bower_components文件夹,可以发现加入了angular-css这个套件。

挂载AngularCSS

取得AngularCSS套件之后,接着就要将套件挂载到系统的Angular里面。首先编辑工作文件夹内既有的app.js档案,修改档案中的require.js的设定参数,用来加入系统运行时AngularCSS的套件路径、以及相依性。(相关require.js的使用介绍,可以参考:require.js的用法 - 阮一峰的网络日志)

  1. require.config({
  2. paths: {
  3. // ......
  4. // angularCSS
  5. "angularCSS": "bower_components/angular-css/angular-css"
  6. },
  7. shim: {
  8. // ......
  9. // angularCSS
  10. "angularCSS": ["angular"]
  11. }
  12. });

修改完成require.js设定参数之后,在同一个app.js里,修改下列require语法用来将AngularCSS加入项目的加载套件清单。(相关require语法的使用介绍,同样可以参考:require.js的用法 - 阮一峰的网络日志)

  1. // bootstrap
  2. define(["angular", "angularAMD", "angular-ui-router", "angularCSS"], function (angular, angularAMD) {
  3. // ......
  4. });

接着在同一个require语法内,修改下列angular语法来启动angularCSS套件。这边要特别注意,angularCSS的module名称是「"door3.css"」,要小心不要打错了。(相关angular的使用介绍,建议参考:AngularJS 建置与执行 - Shyam Seshadri, Brad Green)

  1. // module
  2. var app = angular.module("app", ["ui.router", "door3.css"]);

最后,同样在require语法内,使用angularCSS语法所提供的css参数,来定义每个ui-router路由被启动时所要动态加载的CSS档案。(相关AngularCSS所提供的css参数定义,可以参考:AngularAMD:For States (UI Router) - Door3)

  1. // route
  2. $stateProvider
  3. // home
  4. .state("home", angularAMD.route({
  5. url: "/home",
  6. templateUrl: "home.html",
  7. controllerUrl: "home.js",
  8. css: "home.css"
  9. }))
  10. // home
  11. .state("about", angularAMD.route({
  12. url: "/about",
  13. templateUrl: "about.html",
  14. controllerUrl: "about.js",
  15. css: "about.css"
  16. }))
  17. ;

开发Template、CSS

修改app.js用以挂载AngularCSS之后,就可以着手使用CSS语法,来建立系统里每个路由所使用的CSS档案。

  • home.css

    1. h1 {
    2. color: blue;
    3. }
  • about.css

    1. h1 {
    2. color: red;
    3. }

执行

完成开发步骤后,就可以准备使用Chrome执行index.html来检视成果。但是在检视成果之前,必须要先参考下列数据开启Chrome的必要功能,后续就使用Chrome来正常的执行index.html。

执行index.html之后,会系统依照路由设定进入预设的Home页面。而使用Chrome的开发者工具,可以看到系统加载了Home页面的Template、Controller、CSS,并且显示在页面上。

点击Home页面的About按钮,会切换到About页面。这时同样从Chrome的开发者工具中,可以看到系统是在点击了About按钮之后,才去加载About页面的Template、Controller、Service、CSS来显示在页面上,这也就是AngularCSS所提供的动态加载CSS功能。

范例下载

范例档案:点此下载

[AngularJS] 使用AngularCSS动态加载CSS的更多相关文章

  1. [AngularJS] 使用AngularAMD动态加载Service

    [AngularJS] 使用AngularAMD动态加载Service 前言 「使用AngularAMD动态加载Controller」:这篇文章里介绍如何使用AngularAMD来动态加载Contro ...

  2. [AngularJS] 使用AngularAMD动态加载Controller

    [AngularJS] 使用AngularAMD动态加载Controller 前言 使用AngularJS来开发Single Page Application(SPA)的时候,可以选用AngularU ...

  3. 用JavaScript动态加载CSS和JS文件

    本文转载自:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/11/14/2248451.html 今天项目中需要用到动态加载 CSS 文件 ...

  4. .NET Web后台动态加载Css、JS 文件,换肤方案

    后台动态加载文件代码: //假设css文件:TestCss.css #region 动态加载css文件 public void AddCss() { HtmlGenericControl _CssFi ...

  5. 动态加载css方法实现和深入解析

    一.方法引用来源和应用  此动态加载css方法 loadCss,剥离自Sea.js,并做了进一步的优化(优化代码后续会进行分析).  因为公司项目需要用到懒加载来提高网站加载速度,所以将非首屏渲染必需 ...

  6. js实用方法记录-js动态加载css、js脚本文件

    js实用方法记录-动态加载css/js 附送一个加载iframe,h5打开app代码 1. 动态加载js文件到head标签并执行回调 方法调用:dynamicLoadJs('http://www.yi ...

  7. JavaScript动态加载CSS和JS文件

    var dynamicLoading = { css: function(path){ if(!path || path.length === 0){ throw new Error('argumen ...

  8. 文字添加响应事件,js动态加载CSS, js弹出DIV

    文字添加响应事件,js动态加载CSS, js弹出DIV <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...

  9. js动态加载css和js

    之前写了一个工具类点此链接里面含有这段代码,感觉用处挺多,特意提出来 var loadUtil = { /* * 方法说明:[动态加载js文件css文件] * 使用方法:loadUtil.loadjs ...

随机推荐

  1. LLBL Gen Pro 4.2 Lite 免费的对象关系映射开发框架与工具

    LLBL Gen Pro是一款优秀的对象关系映射开发框架,自2003年发布以来,一直有广泛的客户群.LLBL Gen Pro有几个标志性的版本,2.5/2.6是一个很稳定的版本,公司的一些旧的项目仍然 ...

  2. 面向对象tab栏例子分析

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. GridView里做页面的链接

    采用Gridview的OnRowDataBound属性 后台 protected void gvTranslateInfo_RowDataBound(object sender, GridViewRo ...

  4. Yii2的深入学习--yii\base\Event 类

    根据之前一篇文章,我们知道 Yii2 的事件分两类,一是类级别的事件,二是实例级别的事件.类级别的事件是基于 yii\base\Event 实现,实例级别的事件是基于 yii\base\Compone ...

  5. selenium处理select标签的下拉框

    有时候我们会碰到<select></select>标签的下拉框.直接点击下拉框中的选项不一定可行.Selenium专门提供了Select类来处理下拉框. <select  ...

  6. 关于Unicode和URL encoding入门的一切以及注意事项

    本文同时也发表在我另一篇独立博客 <关于Unicode和URL encoding入门的一切以及注意事项>(管理员请注意!这两个都是我自己的原创博客!不要踢出首页!不是转载!已经误会三次了! ...

  7. 测试Servlet生命周期学习笔记

    测试环境:windows xp旗舰版 软件环境:myclipse8.5+tomcat7.0 ****************************************************** ...

  8. APP账号密码传输安全分析

            最近在搞公司的安卓APP测试(ThinkDrive 企邮云网盘)测试,安卓app测试时使用代理抓包,发现所此app使用HTTP传输账号密码,且密码只是普通MD5加密,存在安全隐患,无法 ...

  9. 解决Fedora解压文件产生乱码的问题

    最近有发现在使用Linux的时候,之前也遇到过在ubuntu下,最后ubuntu貌似在原生下优化了这个问题,现在换到了fedora上的时候问题又出现了,解压出来的文件中文乱码. 为了在linux下可以 ...

  10. JavaScript DOM学习总结(一)

    DOM 什么是DOM?简单地说DOM是一套对文档内容进行抽象和概念化的方法.   W3C给出的DOM定义是这样的:"一个与系统平台和编程语言无关的接口,程序和脚本以通过这个接口动态的访问和修 ...