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 ...
随机推荐
- Docker在云环境中的应用实践初探:优势、局限性与效能评测
作者 商之狄 发布于 2014年11月10日 本文依据笔者所在团队的一些近期开发和应用的实践,整理出一些有意义的信息,拿出来和社区分享.其中既包括在云端应用Docker与相关技术的讨论,同时也有实施过 ...
- android Spinner的使用
首先是MainActivity package com.example.spinnertest; import java.util.ArrayList; import java.util.List; ...
- Leveraging the Power of Asynchrony in ASP.NET [转]
Asynchronous programming has had a lot of attention in the last couple of years and there are two ke ...
- javascript 和jqurry详解
javascript写的图表库,收费 highcharts jqurry有两个图标函数不收费,好用 Flot.PlotKit与MochiKit 官网下载 http://www.flotcharts.o ...
- Java 性能优化技巧及实战
关于Java代码的性能优化,是每个javaer都渴望掌握的本领,进而晋升为大牛的必经之路,但是对java的调优需要了解整个java的运行 机制及底层调用细节,需要多看多读多写多试,并非一朝一夕之功.本 ...
- HDU 1011 树形背包(DP) Starship Troopers
题目链接: HDU 1011 树形背包(DP) Starship Troopers 题意: 地图中有一些房间, 每个房间有一定的bugs和得到brains的可能性值, 一个人带领m支军队从入口(房 ...
- 右下角显示提示窗口(New-Object,COM)
$title=“title”$message="hello,world"有时候,要使用的实例的类保存在独立的库文件中,PowerShell默认未加载,就需要先加载库文件,然后再创建 ...
- [转]TCP和Http的区别!我都搞懂了,你就别迷糊了!
相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过自己的浅显理解能对初学者有所帮助. 1.TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可 ...
- 通过查看mysql 配置参数、状态来优化你的mysql
mysql的监控方法大致分为两类: 1.连接到mysql数据库内部,使用show status,show variables,flush status 来查看mysql的各种性能指标. 2. 直接使用 ...
- NVMe 与 AHCI
http://elf8848.iteye.com/blog/1731274 AHCI: NCQ技术,600MB/S,一个队列,每个队列32个指令 NVME:65000个队列,每个队列65000指令,3 ...