Play - js/css concatenation & minify
1. Css
We’ll use LESS CSS, all less sources are defined in the app/assets, and they will be
compiled to standard css by the build process.
Below are steps to use the less css.
a. add sbt-less plugin to your project’s plugins.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.0")
b. enable the sbt-web plugin for your project
Note: sbt-web is auto enabled in play 2.3.x, we do not need this step if our app is
based on play2.3.x
lazy val root = (project in file(".")).enablePlugins(SbtWeb)
c. tell less compiler to compile related less sources
add the following lines to build.sbt of your project.
includeFilter in (Assets, LessKeys.less) := "*.less"
excludeFilter in (Assets, LessKeys.less) := "_*.less"
d. enable compress
add the following line to build.sbt of your project.
LessKeys.compress in Assets := true
for step c & d, we can also configure these settings in Build.Scala, which is
equal to built.sbt
e. create less file in your assets/css(e.g. assets/css/demo.less), you can import other
less file.
e.g. @import "lib/bootstrap/less/bootstrap.less";
f. use the less in your page, just add the stylesheet reference to demo.css
e.g. <link rel="stylesheet" type="text/css" href=”css/demo.css”/>
h. LESS sources are compiled automatically during an assets command, or when
you refresh any page in your browser while you are running in development mode.
i. More online resource
Javascript
We’ll use RequireJS(a JavaScript file and module loader) to modularize our
JavaScript. Using RequireJS makes it is possible to resolve and load javascript modules
on the client side while allowing server side optimization. For server side optimization
module dependencies may be minified and combined, and we can use sbt-rjs to do the
optimization.
Using RequireJS, we should write our js in modular. Below is an example on how to use
requirejs.
//demouser/UserController.js
|
define([], function(){ function UserController($scope, $http){ $scope.user = {"email":"", "name":"", "id":null}; $scope.load = function(){ $http.get('user/list') .success(function(resp){ $scope.users = resp; }) }; $scope.load(); } UserController.$inject = ['$scope', '$http']; return UserController; }); |
//userMain.js, module loader
|
requirejs.config({ paths: { 'angular': ['../lib/angularjs/angular'], 'angular-route': ['../lib/angularjs/angular-route'], }, shim: { 'angular': { exports : 'angular' }, 'angular-route': { deps: ['angular'], exports : 'angular' } } }); require(['angular', './demouser/UserController'], function(angular, UserController) { var app = angular.module('app', []); app.controller("UserController", UserController); angular.bootstrap(document, ['app']); }); |
//page
|
<html> <body> ………………………….. <script data-main=’userMain.js’ src=”lib/requirejs/require.js”></script> </body> </html> |
Server Side optimization
add sbt-rjs plugin to your plugins.sbt of your project
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.7")
2. configure sbt-rjs in Build.scala
includeFilter in rjs := GlobFilter("*.js"),
RjsKeys.paths := Map(
"angular" -> ("../lib/angularjs/angular", "../lib/angularjs/angular")
),
RjsKeys.modules := Seq(
//WebJs.JS.Object("name" -> "angularDemoMain"),//do optimization for module
WebJs.JS.Object("name" -> "userMain")
)
3. add the plugin to the asset pipeline
pipelineStages := Seq(rjs)
4. generate the minified & combined js
The RequireJS optimizer shouldn’t generally kick-in until it is time to perform a
deployment. i.e. by running start, state, dist tasks.
Play - js/css concatenation & minify的更多相关文章
- grunt 压缩js css html 合并等配置与操作详解
module.exports = function(grunt){ //1.引入 grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTa ...
- electron之Windows下使用 html js css 开发桌面应用程序
1.atom/electron github: https://github.com/atom/electron 中文文档: https://github.com/atom/electron/tree ...
- JS/CSS缓存杀手——VS插件
背景 前些天去考科目二,感觉经历了一场不是高考却胜似高考的考试(10年前的5分之差, 还是难以释怀)! 一行八人,就我学的时间最少(4天,8人一辆车),教练都觉得我肯定还得再来一次! 靠着运气和 ...
- gulp实现打包js/css/img/html文件,并对js/css/img文件加上版本号
参考打包教程: http://www.cnblogs.com/tugenhua0707/p/4069769.html http://www.cnblogs.com/tugenhua0707/p/498 ...
- 配置springMVC之后,引入js,css等资源处理
配置了sringMVC之后,要引入js,css处理: 做法1:在<%page %>下面增加: <%@ taglib prefix="yesurl" uri=&qu ...
- springmvc js/css路径问题
①No mapping found for HTTP request with URI[/msm2/css/login2.css] in DispatcherServlet with name 'sp ...
- iOS之在webView中引入本地html,image,js,css文件的方法 - sky//////////////////////////////////////ZZZZZZZZZZZZZZZ
iOS之在webView中引入本地html,image,js,css文件的方法 2014-12-08 20:00:16CSDN-sky_2016-点击数:10292 项目需求 最近开发的项 ...
- springMVC下jsp引用外部js,css等静态资源的解决方法
直入主题. 1. web.xml对springMVC配置如下: <servlet> <description>Spring MVC配置</description> ...
- 在Sublime Text 3 中安装SublimeLinter,Node.js进行JS&CSS代码校验
转载自:http://www.wiibil.com/website/sublimelinter-jshint-csslint.html 在Sublime Text中安装SublimeLinter,No ...
随机推荐
- Windows Server基础架构云参考架构:硬件之上的设计
作者 王枫 发布于2014年1月27日 综述 毫无疑问,移动互联网.社交网络.大数据和云计算已经成为IT发展的四个大的趋势.其中云计算又为前三个提供了一个理想的平台.今天不仅互联网公司,很多传统行业的 ...
- oracle 回收站
oracle10g,在pl/sql中选中删除后会出现类似:BIN$nJ5JuP9cQmqPaArFei384g==$0的表. 1.查看回收站 select * from user_recyclebin ...
- [C# 网络编程系列]专题七:UDP编程补充——UDP广播程序的实现
转自:http://www.cnblogs.com/zhili/archive/2012/09/03/2666974.html 上次因为时间的关系,所以把上一个专题遗留下的一个问题在本专题中和大家分享 ...
- ASP.NET返回Json数据
Schedule.ashx: <%@ WebHandler Language="C#" Class="Schedule" %> using Syst ...
- 如何实现批处理文件传参数给SQLPLUS
原文地址:http://www.cnblogs.com/HondaHsu/archive/2012/11/23/2784094.html 第一:批处理文件drop_table.bat 说明: 批处理中 ...
- javaweb要点复习 jsp和servlet
jsp:就是java server page , html嵌入java ,所以更方面显示(V) serlet,就是服务器端小程序 java中嵌入html,更方面业务处理. jsp执行过程 1)客户 ...
- Bzoj 4034: [HAOI2015]T2 树链剖分,子树问题,dfs序
4034: [HAOI2015]T2 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1841 Solved: 598[Submit][Status] ...
- Linux统计文件夹下文件信息
统计当前文件夹里面有多少文件,即统计文件个数 ls -l |grep "^-"|wc -l 统计当前文件夹里面有多少文件夹,即统计文件夹个数 ls -l |grep "^ ...
- SQLite 入门教程(四)增删改查,有讲究 (转)
转于: SQLite 入门教程(四)增删改查,有讲究 一.插入数据 INSERT INTO 表(列...) VALUES(值...) 根据前面几篇的内容,我们可以很轻送的创建一个数据表,并向其中插入一 ...
- Java NIO使用及原理分析(三)
在上一篇文章中介绍了缓冲区内部对于状态变化的跟踪机制,而对于NIO中缓冲区来说,还有很多的内容值的学习,如缓冲区的分片与数据共享,只读缓冲区等.在本文中我们来看一下缓冲区一些更细节的内容. 缓冲区的分 ...