阶段2:拆分为 ES Module + Rollup 构建,重写 README
- src/ 下拆分为入口/语言包/默认配置/主函数/工具模块,主函数整体搬入零改动 - rollup 打包 UMD(moeplayer.js + moeplayer.min.js),用户使用方式不变 - 库拷贝逻辑移至 scripts/copy-libs.js - README 重写:中文文档、快速开始、路线图、致谢原作者 - index.html 增加皮肤切换演示(默认/红色/西瓜)
This commit is contained in:
@@ -6,17 +6,24 @@ MoePlayer —— 一款中文友好的开源网页视频播放器(MIT 协议
|
||||
|
||||
目标定位:中文文档 + 主流浏览器/手机 H5 支持 + 官方 Moodle media 插件(`media_moeplayer`,独立仓库)。
|
||||
|
||||
**注意**:当前处于改造阶段 2(改名 + 模块化)。改名已完成:目录 `moeplayer/`、全局变量/API 为 `MoePlayer`(语言包全局变量 `moeplayerLanguage`);单文件拆分为 ES Module 待做。
|
||||
**注意**:当前处于改造阶段 2(改名 + 模块化)。改名已完成:目录 `moeplayer/`、全局变量/API 为 `MoePlayer`(语言包全局变量 `moeplayerLanguage`);单文件已拆分为 ES Module(源码在 `src/`,经 rollup 打包为 UMD 产物)。**主函数 `moeplayerEmbed` 尚未内部拆分**,仍是一个 ~6400 行的巨大函数,位于 `src/core/moeplayerEmbed.js`。
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
├── index.html # 演示/测试页(含 API 调用示例)
|
||||
├── package.json # npm 工程化入口,依赖与构建脚本
|
||||
├── scripts/build.js # 构建脚本:压缩核心 + 从 node_modules 拷贝运行时库
|
||||
├── rollup.config.js # rollup 配置:src/ 打包为 UMD 产物 + terser 压缩
|
||||
├── scripts/copy-libs.js # 构建脚本第二步:从 node_modules 拷贝运行时库
|
||||
├── src/ # 播放器源码(ES Module,2026-07 由单文件拆分而来)
|
||||
│ ├── index.js # 入口:export default moeplayerEmbed
|
||||
│ ├── language.js # 默认中文语言包
|
||||
│ ├── defaults.js # videoObjectDefault 默认配置
|
||||
│ ├── core/moeplayerEmbed.js # 主函数,【整体搬自旧单文件,内部未拆分,逻辑零改动】
|
||||
│ └── utils/ # 工具函数:type/dom/format/net/cookie/path
|
||||
├── moeplayer/ # 播放器本体,部署时整个上传到网站
|
||||
│ ├── js/moeplayer.js # 核心源码(UMD 模块,~7400 行,ES5)
|
||||
│ ├── js/moeplayer.min.js # 压缩版,【由 npm run build 自动生成,勿手改】
|
||||
│ ├── js/moeplayer.js # UMD 产物,【由 npm run build 自动生成,勿手改】
|
||||
│ ├── js/moeplayer.min.js # 压缩版,同上
|
||||
│ ├── css/moeplayer.css # 默认皮肤;另有 moeplayer.red.css、moeplayer.ixigua.css
|
||||
│ ├── css/images/ # 皮肤图片资源
|
||||
│ ├── language/ # 语言包:zh.cn.js(默认内嵌)、zh.hk.js、en.js
|
||||
@@ -29,12 +36,13 @@ MoePlayer —— 一款中文友好的开源网页视频播放器(MIT 协议
|
||||
## 构建与依赖
|
||||
|
||||
- 安装:`npm install`
|
||||
- 构建:`npm run build` —— 做两件事:
|
||||
1. terser 压缩 `moeplayer/js/moeplayer.js` → `moeplayer.min.js`
|
||||
2. 从 node_modules 拷贝 hls.js / flv.js / mpegts.js 的产物及 LICENSE 到 `moeplayer/` 对应目录
|
||||
- **改动 `moeplayer.js` 后必须执行 `npm run build`** 重新生成 min 版
|
||||
- 构建:`npm run build`(即 `rollup -c && node scripts/copy-libs.js`) —— 做两件事:
|
||||
1. rollup 把 `src/` 的 ES Module 打包为 UMD:`moeplayer/js/moeplayer.js`,并经 @rollup/plugin-terser 生成 `moeplayer.min.js`(保留 `软件名称|版权` 头部注释)
|
||||
2. `scripts/copy-libs.js` 从 node_modules 拷贝 hls.js / flv.js / mpegts.js 的产物及 LICENSE 到 `moeplayer/` 对应目录
|
||||
- **改动 `src/` 后必须执行 `npm run build`** 重新生成两个产物;`moeplayer/js/` 下两个 js 均为生成物,勿手改
|
||||
- 升级依赖:改 `package.json` 版本号后 `npm install && npm run build`
|
||||
- 运行时机制:播放器用 `getPath()` 定位自身所在目录,按需动态 `<script>` 加载同级 `hls.js/` 等目录里的文件,库挂全局变量(`Hls`/`flvjs`/`mpegts`)。**这个目录结构约定不能破坏**
|
||||
- rollup 配置要点:`treeshake: false`(完整保留所有工具函数,与旧单文件一致);UMD `name: 'MoePlayer'`、`exports: 'default'`,CJS/AMD/全局变量行为与旧 UMD 等价
|
||||
|
||||
## 测试方式
|
||||
|
||||
@@ -43,8 +51,9 @@ MoePlayer —— 一款中文友好的开源网页视频播放器(MIT 协议
|
||||
## 代码风格
|
||||
|
||||
- 注释与文档使用中文(项目惯例)
|
||||
- 核心源码为单文件 ES5 风格(`var`、函数式),阶段 2/3 重构前保持一致,不要引入 ES6+ 语法
|
||||
- `moeplayer/` 下由构建生成的文件(min.js、hls.js/flv.js/mpegts.js 目录内容)不要手动修改
|
||||
- `src/` 为 ES Module 源码,但函数体保持旧单文件的 ES5 风格(`var`、函数式),阶段 2/3 重构前不要在函数体内引入 ES6+ 语法;只允许模块级的 `import`/`export` 语句
|
||||
- 主函数 `moeplayerEmbed` 整体搬迁、内部逻辑零改动;语言包替换机制(`window.moeplayerLanguage`)在其内部,勿动
|
||||
- `moeplayer/` 下由构建生成的文件(js 两个产物、hls.js/flv.js/mpegts.js 目录内容)不要手动修改
|
||||
|
||||
## Git 约定
|
||||
|
||||
@@ -54,7 +63,7 @@ MoePlayer —— 一款中文友好的开源网页视频播放器(MIT 协议
|
||||
## 改造路线图
|
||||
|
||||
1. ~~工程化:npm + 构建脚本 + 依赖 npm 化~~(已完成)
|
||||
2. 改名 ckplayer → MoePlayer(已完成)+ 单文件拆分为 ES Module(待做)+ README 重写
|
||||
2. 改名 ckplayer → MoePlayer(已完成)+ 单文件拆分为 ES Module(已完成,`src/` + rollup 打包;主函数 `moeplayerEmbed` 内部尚未拆分)+ README 重写
|
||||
3. 核心与 UI 分层、皮肤改用 CSS 变量 + SVG 图标
|
||||
4. 协议插件化(hls/mpegts 按需加载,移除 flv.js)、移动端 H5 兼容专项
|
||||
5. Moodle media 插件(独立仓库 moodle-media_moeplayer)
|
||||
|
||||
Reference in New Issue
Block a user