内容简介:源码下载地址:只有一个player对象, 各种功能在该对象上面进行扩展,核心, 除了主入口index.js, 每一个js文件都这么写
源码下载地址: github.com/liyuanzhe-c… 今天使用jquery按照单对象面向对象思想做了音乐播放器;
只有一个player对象, 各种功能在该对象上面进行扩展,
核心, 除了主入口index.js, 每一个js文件都这么写 禁止使用异步async, await, 避免index.js 先于依赖模块加载出来
(function ($, root) {
function test(data, root){
// 只使用 data 和 root 这两个对象进行开发,
// data 内存入数据
// root 内存方法,变量等
}
// 使用这种方法对接口进行暴露
root.test = test
})(window.$, window.player|| (window.player={}))
复制代码
所有非主入口文件,暴露借口都是 function( data数据, player对象 ), 这样在后期维护和扩展上会更加的方便和容易。
开发使用less + es6;
做了初步的响应式,能适应ipad,手机,电脑, 毕竟就是练手项目,重点还在js;
前后端数据交互使用 fetch 和 $.ajax,
通过concurrently 做了前后端的连载,
//后端package.json 文件
"scripts": {
"start": "node server.js",
"server": "nodemon server.js",
"client": "npm run gulp --prefix music-player-gulp",
"dev": "concurrently \"npm run server\" \"npm run client\""
}
复制代码
//
//前端package.json 文件
"scripts": {
"gulp": "gulp",
"test": "echo \"Error: no test specified\" && exit 1"
},
复制代码
后端使用express, fs模块, 持久层没有使用数据库, 而是采用json文件形式
前端点赞 -> ajax -> 后端读取前端发过来的内容 -> promise -> writeFile -> 写入成功 -> 执行promise.resolve -> promise -> 读取文件 -> 读取成功 -> promise.resolve -> 发送给前端 -> 前端渲染页面。
// 数据库的模拟方法
router.post('/changeLike', (req, res) => {
console.log(req.body);
res.header("Access-Control-Allow-Origin", "*");
new Promise((resolve, reject) => {
//接收数据, 写入并存储文件
fs.writeFile('./fakeDB/onlineMP3-1.json', req.body.data, { encoding: 'utf-8' }, (err, data) => {
err ? reject(err) : resolve(data);
})
}).then((data) => {
//写入完成之后,再读取文件,再发送给前端
fs.readFile('./fakeDB/onlineMP3-1.json', { encoding: 'utf-8' }, (err, data) => {
err ? console.log(err) : res.send(data);
})
}).catch((err) => {
console.log(err)
})
})
复制代码
前端项目js文件夹信息
AudioManager: AudioManager {audio: audio, status: true} //播放器对象
bindEvent: ƒ bindEvent(data, root) //事件绑定对象
blurImg: ƒ blurImg(img, ele) //高斯模糊未使用 因为canvas禁止跨域, 只能在同源策略下使用
disk: {timer: 5, deg: 2096.999999999811, startRotate: ƒ, stopRotate: ƒ, changeSong: ƒ} //对旋转光盘的操作
nowIndex: 0 // 当前播放的歌曲索引
render: ƒ (data, root) // 渲染页面
复制代码
gulp会经常抽风,修改路径名之类的会不停报错,我的文件拿到手之后建议按照如下步骤操作
* gulp在绝对路径发生改变时会抽风, 不是我写的bug * 可以 * 1.删除除了src和gulpfile。package.json之外的所有文件夹, * 改名备份 package.json文件夹, * 从新npm init 再吧package.json的 包依赖 和 script 复制回去 , * 再 npm i * 再 gulp 执行 复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- SpringBoot | :异步开发之异步调用
- 改进异步封装:处理带返回值的异步调用
- 异步发展流程 —— Generators + co 让异步更优雅
- 文件系统与异步操作——异步IO那些破事
- js异步从入门到放弃(四)- Generator 封装异步任务
- netty的Future异步回调难理解?手写个带回调异步框架就懂了
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Transcending CSS
Andy Clarke、Molly E. Holzschlag / New Riders / November 15, 2006 / $49.99
As the Web evolves to incorporate new standards and the latest browsers offer new possibilities for creative design, the art of creating Web sites is also changing. Few Web designers are experienced p......一起来看看 《Transcending CSS》 这本书的介绍吧!