# 升级到vue vite
注意
本文档只适用于旧的JsView-Vue工程升级到jsview@2.0.xxx以上。
# 1. 升级工程文件
(1). 手动备份既有工程(很重要 升级过程可能会覆盖掉之前的代码),推荐使用git做版本管理。
(2). 在既有工程中执行升级命令。
$ cd jsview-project
$ npm init jsview@latest -- --upgrade
2
(3). 安装依赖模块。
# 第一次执行 npm install,再次执行使用 npm ci
$ npm install
2
(3). 试运行新工程。
$ npm start
# 因为vite使用了懒编译的加速策略,所以需要通过npm run build才能测出工程是否全部完成适配。
$ npm run build
2
3
4
(4). 因为新版本JsView使用了vue3+vite框架,所以不可避免出现语法错误。一些常见错误的解决方法请参照 3. 常见错误的修复方法
对于新版本JsView的语法错误,最常见的是在
npm start
命令行和Chromium的Console中打印出来,你可以选择使用JsView提供的jsview-batch-upgrade.mjs工具进行批量更改,或手动进行修复。
# 2. 批量工具的使用方法
警告:
请注意!!!由于源码编写的灵活性,使用批量工具很可能会造成误修改的后果。
请在执行后,认真检查修改点。
(1). 获取批量适配脚本的帮助信息。
$ cd jsview-project-new
$ node ./node_modules/@shijiu/jsview/tools/jsview-batch-upgrade.mjs -h
Usages:
--stages: [Required] Upgrade stages, separate by comma(,). The value means the following:
1. Fix appConfig. * app_config.json
=> app.config.mjs
* jsview.config.js
=> jsview.config.mjs
2. Fix alias: @. * import App from '@/App'
=> import App from '/src/App'
3. Fix import postfix. * import somemodule from 'somemodule'
=> import somemodule from 'somemodule[.js|.vue|/index.js|/index.vue]',
* import('somemodule')
=> import('somemodule[.js|.vue|/index.js|/index.vue]')
4. Fix commonjs. * const somemodule = require('somemodule')
=> import somemodule from 'somemodule',
* module.exports = somemodule
=> export default somemodule
* module.exports = {}
=> export {}
5. Fix hash history. * createJsvHashHistory
=> jsvCreateHashHistory
6. Fix animation. * :onAnimationEnd
=> @animationend
7. Fix jsv-audio. * <audiotrack>
=> <jsv-audiotrack>
* import JsvPlayer from 'jsview'
=> import { JsvPlayer } from 'jsview'
8. Fix pixels. * [left, top, width, height, fontSize, lineHeight]="00px"
=> [left, top, width, height, fontSize, lineHeight]=00
--dir: [Optional] Upgrade directory, default is [src].
-h | --help: Print help usages.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
(2). 根据帮助信息提示输入适当的参数进行vue文件升级。
$ node ./node_modules/@shijiu/jsview/tools/jsview-batch-upgrade.mjs \
--dir=src --stages=[1,2,3,4,5,6,7,8]
2
(3). 对比内容改动,手动修复未更新以及被误修改的内容。
- package-lock.json文件可以忽略,可以通过npm install更新。
# 3. 常见错误的修复方法
错误出现位置包含 npm start 和 npm run build 等
# 1) 'app.config.mjs' 文件不存在
示例:
解决方法:
- 手动:
- 将 src/appConfig/app_config.json 重命名为 src/appConfig/app.config.mjs,并改为js export default{} 写法。
- 将 src/appConfig/jsview.config.js 重命名为 src/appConfig/jsview.config.mjs。
# src/appConfig/app_config.json
{
"AppName": "xxxx.domain.cn/XXXX",
"AppTitle": "Demo中文名(UTF8)",
"AppVersion": "1.00"
}
# src/appConfig/app.config.mjs
export default {
AppName: "xxxx.domain.cn/XXXX",
AppTitle: "Demo中文名(UTF8)",
AppVersion: "1.00"
}
2
3
4
5
6
7
8
9
10
11
12
13
- 自动:jsview-batch-upgrade.mjs --stage=1
过滤条件:src/appConfig/app_config.json文件存在; src/appConfig/jsview.config.js文件存在。
$ node ./node_modules/@shijiu/jsview/tools/jsview-batch-upgrade.mjs --stages=1
# 2) '@' 未定义
示例:
解决方法:
- 手动:将'@'改为/src 或 在vite.config.ts中添加'@'的路径。
// import App from '@/App.vue' 改为
import App from '/src/App.vue'
2
import path from 'path'
export default defineConfig({
...
resolve: {
alias: {
'@': path.resolve(process.cwd(), 'src'),
},
},
})
2
3
4
5
6
7
8
9
10
- 自动:jsview-batch-upgrade.mjs --stage=2
过滤条件:import 中含有 '@/'。
$ node ./node_modules/@shijiu/jsview/tools/jsview-batch-upgrade.mjs --stages=2
# 3) '.vue' 后缀未加导致的找不到文件
示例:
解决方法:
- 手动:在import路径中添加 '.vue' 或 '/index.vue'。
// component: () => import("../game/src/Gifts") 改为
component: () => import("../game/src/Gifts.vue")
2
- 自动:jsview-batch-upgrade.mjs --stage=3
过滤条件:单行中含有import [from] 或 import()。
$ node ./node_modules/@shijiu/jsview/tools/jsview-batch-upgrade.mjs --stages=3
# 4) 源码包含CommonJS的写法
这里不包括依赖的module中出现了commonjs写法
示例:
解决方法:
- 手动:使用ES6方式修改源码。
// var somemodule = require('./somemodule.js') 改为
import somemodule from './somemodule.js'
// somemodule.js 文件中
// module.exports = somemodule 改为
export default somemodule
2
3
4
5
6
- 自动:jsview-batch-upgrade.mjs --stage=4
过滤条件:单行中含有 require() 或 module.exports。
$ node ./node_modules/@shijiu/jsview/tools/jsview-batch-upgrade.mjs --stages=4
# 5) 'createJsvHashHistory' 未定义
示例:
解决方法:
- 手动:将createJsvHashHistory改为jsvCreateHashHistory。
// import { createJsvHashHistory } from "jsview" 改为
import { jsvCreateHashHistory } from "jsview"
// createJsvHashHistory() 改为
jsvCreateHashHistory()
2
3
4
5
- 自动:jsview-batch-upgrade.mjs --stage=5
过滤条件:单行中含有'createJsvHashHistory'。
$ node ./node_modules/@shijiu/jsview/tools/jsview-batch-upgrade.mjs --stages=5
# 6) ':onAnimationEnd' 事件未生效
示例:
这个问题并不会报错,但是在JsView运行时,会导致动画结束回调的处理没有生效。
解决方法:
- 手动:将:onAnimationEnd改为@animationend。
<div
:style="{
animation: 'anim 0.5s'
}"
...
// :onAnimationEnd="onAnimEnd" 改为
@animationend="onAnimEnd"
>
2
3
4
5
6
7
8
- 自动:jsview-batch-upgrade.mjs --stage=6
过滤条件:单行中含有':onAnimationEnd'。
$ node ./node_modules/@shijiu/jsview/tools/jsview-batch-upgrade.mjs --stages=6
# 7) JsvAudio函数未定义
示例:
解决方法:
- 手动:使用{JsvAudio}方式并将JsvAudio的import路径改为jsview。
// import JsvAudio from "jsview/utils/JsViewPlugin/JsvAudio" 改为
import { JsvAudio } from "jsview"
<!-- <audiotrack> --> 改为
<audiotrack>
2
3
4
5
- 自动:jsview-batch-upgrade.mjs --stage=7
过滤条件:单行中含有'import JsvAudio from' 或 '<audiotrack'。
$ node ./node_modules/@shijiu/jsview/tools/jsview-batch-upgrade.mjs --stages=7
# 8) 依赖module中含CommonJS写法
示例:
解决方法:
- 手动:在vite.config.ts中添加CommonJs的编译适配。
export default defineConfig({
...
build: {
commonjsOptions: {
include: [
/crypto-js/,
],
},
},
})
2
3
4
5
6
7
8
9
10
# 4. 升级后JsView的性能优化
JsView2.0 对渲染进行了大幅优化,为了发挥JsView2.0的最优性能,建议将所有单位为 px 的style属性去掉px后缀。并使用number类型对以下属性赋值:
top, left, width, height, fontSize, lineHeight
- 手动优化:去掉 px 和 双引号"。
<div
:style="{
// top="100px", left="100px",
// width="100px", height="100px",
// fontSize="100px", lineHeight="100px",
// color: '#FFFFFF',
// borderRadius="100px" 改为
top=100, left=100,
width=100, height=100,
fontSize=100, lineHeight=100,
color: '#FFFFFF',
borderRadius="100" // 注意除了上述6种以外的属性不支持number类型,不要去除原有的双引号
}"
...
>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- 自动优化:jsview-batch-upgrade.mjs --stage=8
过滤条件:单行中含有"00px"。
$ node ./node_modules/@shijiu/jsview/tools/jsview-batch-upgrade.mjs --stages=8