[AngularJS] 使用AngularCSS动态加载CSS
[AngularJS] 使用AngularCSS动态加载CSS
前言
上列两篇文章里,介绍了如何如何使用AngularAMD来动态加载Controller与Service。本篇文章以此为基础,介绍如何使用AngularCSS来动态加载CSS,让项目功能更加模块化,增加开发与维护的工作效率。主要为自己留个纪录,也希望能帮助到有需要的开发人员。
安装
本篇文章以「使用AngularAMD动态加载Service」的范例程序为基础,为其附加动态加载CSS的功能。进入本篇的开发步骤之前,开发人员可以先依照上一篇文章的步骤来建立基础架构。
动态加载Service范例:点此下载
取得基础架构之后,开启命令提示字符CD到这个基础架构的文件夹输入下列指令,就可以使用bower来取得AngularCSS套件。
bower install angular-css
完成上列步骤后,开启工作文件夹里面的bower_components文件夹,可以发现加入了angular-css这个套件。
挂载AngularCSS
取得AngularCSS套件之后,接着就要将套件挂载到系统的Angular里面。首先编辑工作文件夹内既有的app.js档案,修改档案中的require.js的设定参数,用来加入系统运行时AngularCSS的套件路径、以及相依性。(相关require.js的使用介绍,可以参考:require.js的用法 - 阮一峰的网络日志)
require.config({
paths: {
// ......
// angularCSS
"angularCSS": "bower_components/angular-css/angular-css"
},
shim: {
// ......
// angularCSS
"angularCSS": ["angular"]
}
});
修改完成require.js设定参数之后,在同一个app.js里,修改下列require语法用来将AngularCSS加入项目的加载套件清单。(相关require语法的使用介绍,同样可以参考:require.js的用法 - 阮一峰的网络日志)
// bootstrap
define(["angular", "angularAMD", "angular-ui-router", "angularCSS"], function (angular, angularAMD) {
// ......
});
接着在同一个require语法内,修改下列angular语法来启动angularCSS套件。这边要特别注意,angularCSS的module名称是「"door3.css"」,要小心不要打错了。(相关angular的使用介绍,建议参考:AngularJS 建置与执行 - Shyam Seshadri, Brad Green)
// module
var app = angular.module("app", ["ui.router", "door3.css"]);
最后,同样在require语法内,使用angularCSS语法所提供的css参数,来定义每个ui-router路由被启动时所要动态加载的CSS档案。(相关AngularCSS所提供的css参数定义,可以参考:AngularAMD:For States (UI Router) - Door3)
// route
$stateProvider
// home
.state("home", angularAMD.route({
url: "/home",
templateUrl: "home.html",
controllerUrl: "home.js",
css: "home.css"
}))
// home
.state("about", angularAMD.route({
url: "/about",
templateUrl: "about.html",
controllerUrl: "about.js",
css: "about.css"
}))
;
开发Template、CSS
修改app.js用以挂载AngularCSS之后,就可以着手使用CSS语法,来建立系统里每个路由所使用的CSS档案。
home.css
h1 {
color: blue;
}
about.css
h1 {
color: red;
}
执行
完成开发步骤后,就可以准备使用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的更多相关文章
- [AngularJS] 使用AngularAMD动态加载Service
[AngularJS] 使用AngularAMD动态加载Service 前言 「使用AngularAMD动态加载Controller」:这篇文章里介绍如何使用AngularAMD来动态加载Contro ...
- [AngularJS] 使用AngularAMD动态加载Controller
[AngularJS] 使用AngularAMD动态加载Controller 前言 使用AngularJS来开发Single Page Application(SPA)的时候,可以选用AngularU ...
- 用JavaScript动态加载CSS和JS文件
本文转载自:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/11/14/2248451.html 今天项目中需要用到动态加载 CSS 文件 ...
- .NET Web后台动态加载Css、JS 文件,换肤方案
后台动态加载文件代码: //假设css文件:TestCss.css #region 动态加载css文件 public void AddCss() { HtmlGenericControl _CssFi ...
- 动态加载css方法实现和深入解析
一.方法引用来源和应用 此动态加载css方法 loadCss,剥离自Sea.js,并做了进一步的优化(优化代码后续会进行分析). 因为公司项目需要用到懒加载来提高网站加载速度,所以将非首屏渲染必需 ...
- js实用方法记录-js动态加载css、js脚本文件
js实用方法记录-动态加载css/js 附送一个加载iframe,h5打开app代码 1. 动态加载js文件到head标签并执行回调 方法调用:dynamicLoadJs('http://www.yi ...
- JavaScript动态加载CSS和JS文件
var dynamicLoading = { css: function(path){ if(!path || path.length === 0){ throw new Error('argumen ...
- 文字添加响应事件,js动态加载CSS, js弹出DIV
文字添加响应事件,js动态加载CSS, js弹出DIV <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...
- js动态加载css和js
之前写了一个工具类点此链接里面含有这段代码,感觉用处挺多,特意提出来 var loadUtil = { /* * 方法说明:[动态加载js文件css文件] * 使用方法:loadUtil.loadjs ...
随机推荐
- LLBL Gen Pro 4.2 Lite 免费的对象关系映射开发框架与工具
LLBL Gen Pro是一款优秀的对象关系映射开发框架,自2003年发布以来,一直有广泛的客户群.LLBL Gen Pro有几个标志性的版本,2.5/2.6是一个很稳定的版本,公司的一些旧的项目仍然 ...
- 面向对象tab栏例子分析
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- GridView里做页面的链接
采用Gridview的OnRowDataBound属性 后台 protected void gvTranslateInfo_RowDataBound(object sender, GridViewRo ...
- Yii2的深入学习--yii\base\Event 类
根据之前一篇文章,我们知道 Yii2 的事件分两类,一是类级别的事件,二是实例级别的事件.类级别的事件是基于 yii\base\Event 实现,实例级别的事件是基于 yii\base\Compone ...
- selenium处理select标签的下拉框
有时候我们会碰到<select></select>标签的下拉框.直接点击下拉框中的选项不一定可行.Selenium专门提供了Select类来处理下拉框. <select ...
- 关于Unicode和URL encoding入门的一切以及注意事项
本文同时也发表在我另一篇独立博客 <关于Unicode和URL encoding入门的一切以及注意事项>(管理员请注意!这两个都是我自己的原创博客!不要踢出首页!不是转载!已经误会三次了! ...
- 测试Servlet生命周期学习笔记
测试环境:windows xp旗舰版 软件环境:myclipse8.5+tomcat7.0 ****************************************************** ...
- APP账号密码传输安全分析
最近在搞公司的安卓APP测试(ThinkDrive 企邮云网盘)测试,安卓app测试时使用代理抓包,发现所此app使用HTTP传输账号密码,且密码只是普通MD5加密,存在安全隐患,无法 ...
- 解决Fedora解压文件产生乱码的问题
最近有发现在使用Linux的时候,之前也遇到过在ubuntu下,最后ubuntu貌似在原生下优化了这个问题,现在换到了fedora上的时候问题又出现了,解压出来的文件中文乱码. 为了在linux下可以 ...
- JavaScript DOM学习总结(一)
DOM 什么是DOM?简单地说DOM是一套对文档内容进行抽象和概念化的方法. W3C给出的DOM定义是这样的:"一个与系统平台和编程语言无关的接口,程序和脚本以通过这个接口动态的访问和修 ...