JavaScript的模块化开发到如今,已经相当成熟了,当然,一个应用包含的不仅仅有js,还有html模板和css文件。

那么,如何将html和css也一起打包,来减少没必要的HTTP请求数呢?

本文将和大家一起分享两个requrejs插件:textcss

1. html模板与text插件

我们在开发一个widget时,如果将html模板直接写在js文件中,将会很难维护,处理各种换行以及双引号就会让人抓狂,对于后续维护的人来说也是噩梦。

个人比较推荐的做法是将widget的html模板提取到一个独立的文件中,减少html与js的耦合,同时方便维护与管理。

那么,widget内部如何获取这个独立的html模板文件呢?如果直接在widget内部通过ajax加载,势必增加后续的维护成本。

这时text插件就上场了!

我们可以像这么做:

define([

  "text!./templates/login.html"//指向当前组件依赖的模板文件

],function(template /*html模板字符串*/){
//do something
//declare widget
});

当应用上线之前,我们需要打包这些widget,而text插件会将widget依赖的模板文件一并打包进去,模板文件将做为一个独立的字符串模块存在。

这样一来,我们就达到了两个目的:1.将html模板与js文件解耦 2.减少HTTP请求数

2. css文件与css插件

大部分widget都会有自己的样式,就像jquery-ui那样,每一个ui组件都有自己的样式文件。

某些情况下,我们希望css文件与js打包在一起加载,而不需要去html/head添加各种css文件引用,当使用的时候,我们只需要require这个widget就好。

这时,css插件就上场了。

define([

  "css!./css/login.css"

],function(){

      //这个时候,css文件已经被append到html/head中了,也就是说,你的widget依赖的样式已经就绪

  //declare widget

});

当我们打包这些widget的时候,css插件会将widget依赖的模板文件一并打包进去,同时可以自动优化css,比如去除空格,合并重复样式等等。

这样一来,我们就达到了两个目的:1.自动加载css依赖 2.减少HTTP请求数

当然,text插件和css插件在打包时,还有很多参数可以配置,大家有兴趣的可以点击链接到Github去查看。

PS: 尊重他人原创,转载请务必注明来自http://www.cnblogs.com/Raoh/p/4204228.html

利用text插件和css插件优化web应用的更多相关文章

  1. Sublime Text 中使用Git插件连接GitHub

    sublime Text的另一个强大之处在于它提供了非常丰富的插件,可以帮助程序员来适合大多数语言的开发.这些插件通过它自己的Package Controll(包管理)组件来安装,非常方便.一般常用的 ...

  2. 如何安装 Sublime text 编辑器相关的插件

    Sublime是一个伟大的编辑器,具有可靠的基础功能,使编写代码变得愉快.您可以安装一个包管理器,以便于安装插件和添加新功能. 为什么使用包管理器(package manager) 包管理器可以方便地 ...

  3. 2分钟 windows下sublime text 3安装git插件:

    12:35 2015/11/182分钟 windows下sublime text 3安装git插件:推荐博客:http://blog.csdn.net/naola2001/article/detail ...

  4. 10秒钟sublime text 3安装SVN插件

    注意:此处我提前已经安装了towerSVN,你可能需要提前安装好 towerSVN,之前安装redis之后我才明白,安装插件时安装软件好像 是一个必要的步骤,也就是说安装插件只是让你能在这里使用你已 ...

  5. Sublime text 3安装svn插件

    这几天在研究sublime text 3的使用,感觉还不错,现在想让他能够支持svn,所以就写一下怎么安装svn插件吧~ 首先先说一下这个官方的插件网站 点我进入~ 进入之后,最上边的第一个就是点击安 ...

  6. 给Sublime Text 2安装CTags插件

    以Windows操作系统为例介绍安装过程: 安装ctags应用程序. 到CTags的官方网站下载最新版本,解压后将ctags.exe文件放到系统的搜索路径中. 安装Sublime Text 2的Pac ...

  7. Sublime text代码补全插件(支持Javascript、JQuery、Bootstrap框架)

    Sublime text代码补全插件(支持Javascript.JQuery.Bootstrap框架)   插件名称:javascript-API-Completions 支持Javascript.J ...

  8. 利用jsPerf优化Web应用的性能

    在前端开发的过程中,掌握好浏览器的特性进行有针对性的性能调优是一项基本工作,jsperf.com是一个用来发布基于HTML的针对性能比较的测试用例的网站,你可以在jsPerf上在线填写和运行测试用例, ...

  9. vue中使用第三方插件animate.css实现动画效果

    vue中使用第三方插件animate.css实现动画效果1.首先先引入第三方类animated.css2.将你所需要动画的标签用包裹起来3.在transition元素中添加enter-active-c ...

随机推荐

  1. MVC中CheckBox

    一.单个Checkbox 1.View文件 <%= Html.CheckBoxFor(model => model.IsNeverExpired)%> 2.生成的HTML为 < ...

  2. 用Intellij Idea创建简单的Servlet

    Servlet作为Java服务端程序,使用起来还是挺方便的,下面是具体配置过程,我用的是Intellij Idea. 1. 做好必要准备,Intellij Idea(或者Eclipse for J2E ...

  3. 了解RFC协议号

    RFC是Request For Comment的缩写,意即“请求注解”,是由IETF管理,所有关于Internet的正式标准都以文档出版,但不是所有的RFC都是正式的标准,很多RFC的目的只是为了提供 ...

  4. HDU 5919 -- Sequence II (主席树)

    题意: 给一串数字,每个数字的位置是这个数第一次出现的位置. 每个询问对于序列的一个子区间,设一共有k个不同的数,求第ceil(k/2)个数的位置. 因为强制在线,所以离线乱搞pass掉. 主席树可解 ...

  5. linux@64 获取时间的性能评估

    听人说gettimeofday 在64bit下有缓存,速度很快,测试下了,感觉不对啊.. #include <time.h> #include <sys/time.h> #in ...

  6. UVALive 7454 Parentheses (栈+模拟)

    Parentheses 题目链接: http://acm.hust.edu.cn/vjudge/contest/127401#problem/A Description http://7xjob4.c ...

  7. ds18b20里的 温度值正负判断 为什么要判断大于6348 ,为什么取这个值?

    http://zhidao.baidu.com/question/576118682.html?quesup2&oldq=1

  8. codeforces 624B Making a String

    Making a String time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  9. Light oj 1197 - Help Hanzo (素数筛技巧)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1197 给你a和b求a到b之间的素数个数. 先在小区间素数筛,大区间就用类似素数筛的想法 ...

  10. qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统

    qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和linux kernel,达到与开发板上一样的学习效果! 虽然已经买了2440开发板,但是在实际学习 ...