-
Notifications
You must be signed in to change notification settings - Fork 3.7k
fix(uni-cli-shared): 修复 pages 页面路径变量重复的问题 #5705
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: next
Are you sure you want to change the base?
Conversation
这个是为了允许设置重复的 path ? |
@chouchouji 我重新修改了文案。小程序进行了分包开发,主包里有个路径是
两个不同的路径,对应的 js 变量相同,导致 js 报错,无法启动应用。因此需要修改 js 变量生成逻辑。 |
OK,我来测试一下,报错的小程序平台是哪些? |
@chouchouji 小程序平台是没有报错的,是 h5 启动报错。 |
也就是说你做了分包,小程序运行不会报错,h5 上会出现命名问题,有测试过app吗?安卓,ios等等 |
@chouchouji 是的。没有测试过 APP。 |
我测试了app也有问题,但是你的改动影响面比较大,而且不能保证绝对没有重复的情况,我们需要讨论下合适的做法 |
更安全的放在“引申思考”里提到了,使用 md5 等摘要算法,这样是绝对安全的。但我的改进方法,可以在最大程度上避免重复了。重复的可能性在:
不过这样起名的概率非常低。 |
加hash就是所有的名字加hash了,不太友好 |
问题起因
小程序进行了分包开发,主包里有个路径是
pages/my-book/detail
,副包的目录是pages-my
,有一个页面是pages-my/book/detail
,这是两个完全不同的页面路径:pages/my-book/detail
,在src/pages-json-js
里的 js 变量是PagesMyBookDetail
pages-my/book/detail
,在src/pages-json-js
里的 js 变量是PagesMyBookDetail
两个不同的路径,对应的 js 变量相同,导致 js 报错,无法启动应用。参考图如下:
改进方法
因此需要修改 js 变量生成逻辑。
$
(新增逻辑)_
(改进逻辑)因此修改后的路径对应的变量是:
pages/my-book/detail
,在src/pages-json-js
里的 js 变量是pages$my_book$detail
pages-my/book/detail
,在src/pages-json-js
里的 js 变量是pages_my$book$detail
此时,两个不同的路径,对应的 js 变量也不同,应用可以正常启动。参考图如下:
前后对比
page.json 里直观体现是这样的:
引申思考
其实更安全的方法是使用 md5 等摘要算法,不过此改进方法已经在最大程度上避免了 js 变量的重复。