grunt构建基于seajs的网站实现

本文介绍了一个使用Grunt进行自动化构建的具体案例,包括配置文件Gruntfile.js的详细设置,如资源复制、压缩等任务,以及如何通过Seajs进行模块化加载。
Gruntfile.js


module.exports = function(grunt) {

grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),

//源码
src: "asserts",

//输出
dist: "dist",

transport: {
options: {
paths:["<%=src%>/sea-modules"],
alias: {
"jquery": "lib/jquery.js"
}
},
modules: {
files : [
{
cwd: '<%=src%>/sea-modules',
expand: true,
src: '**/*.js',
dest: '<%=dist%>/sea-modules'
}
]
},
dwstatic: {
options:{
},
files : [
{
cwd: '<%=src%>',
expand: true,
src: 'dwstatic/**/*.js',
dest: '<%=dist%>'
}
]
}
},
copy:{
moduleRes:{
files:[
{expand: true, cwd: '<%=src%>/sea-modules/css', src:['**'],dest: '<%=dist%>/sea-modules/css'},
{expand: true, cwd: '<%=src%>/sea-modules/img', src:['**'],dest: '<%=dist%>/sea-modules/img'}
]
},
staticRes:{
files:[
{expand: true, cwd: '<%=src%>/dwstatic/css', src:['**'],dest: '<%=dist%>/dwstatic/css'},
{expand: true, cwd: '<%=src%>/dwstatic/images', src:['**'],dest: '<%=dist%>/dwstatic/images'}
]
}
},
concat: {
//合并一个公用的基础js,并且利用 preload插件,让其前置加载。
aio: {
options: {
paths:["<%=dist%>/sea-modules"],
include: "all"
},
files: {
"<%=dist%>/sea-modules/aio.js": ["<%=dist%>/sea-modules/aio.js"]
}
}
},
uglify:{
allJs:{
files:[{
expand: true,
cwd: '<%=dist%>',
src: ['**/*.js', '!**/*-debug.js'],
dest: '<%=dist%>'
}]
}
},
cssmin: {
allCss: {
expand: true,
cwd: '<%=dist%>',
src: ['**/*.css'],
dest: '<%=dist%>'
}
}
});

grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-cmd-transport');
grunt.loadNpmTasks('grunt-cmd-concat');

grunt.registerTask('min', ['uglify','cssmin']);
grunt.registerTask('default', ['transport', 'concat','copy','uglify','cssmin']);

};


页面调用:



<!doctype html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Image preview example</title>
<link type="text/css" rel="stylesheet" href="asserts/sea-modules/css/common.css" />

<script id="seajsnode" src="http://shawn.yy.com:1234/www/seajsDemo/asserts/sea-debug.js"></script>
<script type="text/javascript" src="http://shawn.yy.com:1234/www/seajsDemo/asserts/seajs-css.js"></script>
<script type="text/javascript" src="http://shawn.yy.com:1234/www/seajsDemo/asserts/seajs-preload.js"></script>
<style>
pre{display:block;background:#000;color:green;padding:20px;font-weight:bold;}
</style>
</head>

<body>
<pre>
npm 安装的包:
npm install -g grunt-cli
npm install grunt --save-dev
npm install grunt-cmd-transport --save-dev
npm install grunt-cmd-concat --save-dev
npm install grunt-contrib-uglify --save-dev
npm install grunt-contrib-cssmin --save-dev

</pre>
<input id="pop" value="pop" type="button" class="greenbtn largebtn"/>
<script>
//静态服务器地址
var staticBase = "http://shawn.test.com:1234/www/seajsDemo/dist/";
if(location.search){
staticBase = "/www/seajsDemo/asserts/"; //使用本地资源
}
seajs.config({
preload:["aio"],
base: staticBase + "sea-modules/",
alias: {
"jquery": "lib/jquery.js"
},
vars: {
'locale': 'zh-CN' //国际化支持
},
paths:{
//dwstatic开头的模块,将被重新映射到具体的资源路径。
"dwstatic" : staticBase + "dwstatic"
},
map:[ [/^(.*\.(?:js|css))(.*)$/i, '$1?ver=20150615']]
});
</script>
<script>
//【规范】:凡是dwstatic开头的资源,视为业务模块,要求放置在dwstatic目录下
seajs.use("dwstatic/index");
//seajs.use("dwstatic/index-debug")
</script>
</body>
</html>



工程目录:

[img]http://dl2.iteye.com/upload/attachment/0109/5510/856ac443-3876-3db0-89a4-574d1ada09e6.png[/img]

代码:
(1)普通用户端(全平台) 音乐播放核心体验: 个性化首页:基于 “听歌历史 + 收藏偏好” 展示 “推荐歌单(每日 30 首)、新歌速递、相似曲风推荐”,支持按 “场景(通勤 / 学习 / 运动)” 切换推荐维度。 播放页功能:支持 “无损音质切换、倍速播放(0.5x-2.0x)、定时关闭、歌词逐句滚动”,提供 “沉浸式全屏模式”(隐藏冗余控件,突出歌词与专辑封面)。 多端同步:自动同步 “播放进度、收藏列表、歌单” 至所有登录设备(如手机暂停后,电脑端打开可继续播放)。 音乐发现与管理: 智能搜索:支持 “歌曲名 / 歌手 / 歌词片段” 搜索,提供 “模糊匹配(如输入‘晴天’联想‘周杰伦 - 晴天’)、热门搜索词推荐”,结果按 “热度 / 匹配度” 排序。 歌单管理:创建 “公开 / 私有 / 加密” 歌单,支持 “批量添加歌曲、拖拽排序、一键分享到社交平台”,系统自动生成 “歌单封面(基于歌曲风格配色)”。 音乐分类浏览:按 “曲风(流行 / 摇滚 / 古典)、语言(国语 / 英语 / 日语)、年代(80 后经典 / 2023 新歌)” 分层浏览,每个分类页展示 “TOP50 榜单”。 社交互动功能: 动态广场:查看 “关注的用户 / 音乐人发布的动态(如‘分享新歌感受’)、好友正在听的歌曲”,支持 “点赞 / 评论 / 转发”,可直接点击动态中的歌曲播放。 听歌排行:个人页展示 “本周听歌 TOP10、累计听歌时长”,平台定期生成 “全球 / 好友榜”(如 “好友中你本周听歌时长排名第 3”)。 音乐圈:加入 “特定曲风圈子(如‘古典音乐爱好者’)”,参与 “话题讨论(如‘你心中最经典的钢琴曲’)、线上歌单共创”。 (2)音乐人端(创作者中心) 作品管理: 音乐上传:支持 “无损音频(FLAC/WAV)+ 歌词文件(LRC)+ 专辑封面” 上传,填写 “歌曲信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值