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 ...
随机推荐
- 全面理解Unity加载和内存管理
全面理解Unity加载和内存管理http://game.ceeger.com/forum/read.php?tid=4394&fid=2&uid=6507 1.用简单的“for”循环 ...
- eclipse android重新安装遇到各种问题
1.JAVA_HOME环境变量失效的解决办法 原文网址:http://www.cnblogs.com/yjmyzz/p/3521554.html 晚上把oracle自带的weblogic给卸载了,然后 ...
- GeoServer基础教程(一):环境搭建篇
转自:http://imxz.me/tech/3sdev/installation-of-geoserver.html GeoServer的是一个基于Java的软件,它允许用户查看和编辑地理空间数据, ...
- (转载)PHP解析URL并得到URL中的参数
(转载)http://my.oschina.net/liuhui1990/blog/42232 <?php //例举一个URL格式的字符串: $str = 'http://test.com/te ...
- 去掉有序数组中重复数字 原地 leetcode java (最简单的方法)
1.利用荷兰国旗的思路,每次记住最后一个位置,遇到一个不重复的数,放在它后面,代码很简单. Given a sorted array, remove the duplicates in place s ...
- Kruskal算法构造最小生成树
Kruskal算法来构造最小生成树,我总结了分为以下步骤: (1)建图,构造Kruskal边集,边集元素应该包括该边的起始顶点.终止顶点.权值: (2)将边集按权值从小到大的顺序进行排序: (3)从小 ...
- 微信、QQ这类IM App怎么做——谈谈Websocket
前言 关于我和WebSocket的缘:我从大二在计算机网络课上听老师讲过之后,第一次使用就到了毕业之后的第一份工作.直到最近换了工作,到了一家是含有IM社交聊天功能的app的时候,我觉得我现在可以谈谈 ...
- Yii framework 应用总结小窍门(转)
1. Yii Framework] 如何获取当前controller的名称? 下面语句就可以获取当前控制器的名称了! Yii::app()->controller->id 2. yii 如 ...
- Spring实例化bean的三种方法
1.用构造器来实例化 <bean id="hello2" class="com.hsit.hello.impl.ENhello" /> 2.使用静态 ...
- mysql引擎互转问题
// InnoDB转MyISAM ALTER TABLE `tablename` ENGINE = MYISAM // MyISAM转InnoDB alter table tablename type ...