首先为程序打个广告:如果您喜欢看漫画,欢迎尝试使用「哔哩哔哩漫画 UWP 」,我正在努力将其打造成为体验接近 PerfectViewer / ComicsViewer / MangaMeeya 等老牌漫画软件的 UWP 漫画应用,心情舒畅地在 Windows 大屏设备上阅读漫画,当然还处于早期,有问题可按程序中提供的方式进行反馈,感谢支持,商店地址: https://www.microsoft.com/store/apps/9NN9L42J9FS3
本来这是一个 Side Project,我的本职工作是 Web 切图仔,所以这是一个个人项目,一开始的目标只是让自己能够使用 Surface 去阅读漫画而已,不过在和其他人交流的工程中,慢慢变成希望能够和大家一起分享,所以就开始往更加细致的方向打磨,做成一个大概能拿出来给大家使用的程序.
至于使用 UWP 而没有选择 Electron 之类的主要还是因为 UWP 程序的触摸体验要好很多,在 Surface 上看漫画的话触摸体验是刚需,不过这也意味着放弃了熟悉的技术选型和跨平台部署,不过没关系只要最终好用就行了.
我个人感性地认为微软的这套技术( XAML 的 WinUI + C#)的开发体验是非常好的,比拿社区的东西东拼西凑要舒服很多,所有事情微软都帮你做的一清二楚,从丰富的 API 到最后的部署打包整个流程非常紧凑,丝毫没有打断的感觉,我认为特别是 JS 社区需要学习的地方,三大金刚除了 Angular 因为其定位不同所以功能比较完整之外,其他两个需要拼凑的东西很多,刚开始的体验就比较糟心(比如公司使用 Vue + TS 的面向对象,所以要额外配置 TS 的 Loader、写好 TSLint、自定义 VueLoader、规划项目结构划分模块、实现可以注入至 VueComponent 的 ServiceContainer、实现 TS 反射的 DI、自己配置 Jest 等等等等).
个人本身就比较偏好标记语言写界面,所以 XAML 深得我心,再加上 Web 视图框架借来的 MVVM 已被微软实践好多年,所以上手速度就是一个字快,十分容易接受,而且 XAML 的功能确实强大,Web 上能实现的功能它基本全都有,而且微软新为 UWP 加入的特性让你的选择更广,结果就是出人意料的灵活,我一开始总觉得 Windows 的程序界面不会灵活到像 Web 一样,但结果是真有一拼.
WinUI 内置的 UWP 组件功能还是比较齐全,设备交互上做的十分完善,已经做好了各种外设的交互处理,非常省心;内置组件的可制定性很高,可以通过模板完全自己控制,魔改一番还能保持已有功能,加分;另外微软也实现了很多诸如懒加载、虚拟列表等细节功能,可以省去很多自己写代码实现的时间.
UWP 用 C# 开发的话有时候给人一种在用脚本施展魔法的错觉,优秀的语言 + 高度封装的接口设计使得精力完全集中在程序业务实现,不管过了多久键盘上都会留下浓浓的糖的味道,两个字舒服. 虽然身为切图仔但个人还是比较推崇在工程上使用面向对象来构建,能够最大程度统一代码风格,稳固项目结构,因此 C# 也没给个人带来什么困扰,反而因为不用去实现一堆 ServiceContainer 啊 DI 啊的轮子什么的变得更省心了.
另外大家也知道 UWP 限制很多,不能那么随心所欲,不过因为没有什么 Win32 经验所以不敢过多评论,因为对于一个漫画阅读器来讲 UWP 的功能是完全足够了.
用其他热门语言的眼光来看确实很惨,常见的东西有一些但也不那么丰富,比如想找一个 webp 的解码轮子然而并没有,最终还是使用 jpg 放弃了 webp ;比如设计师会使用 AE 制作 SVGA 动画在程序中使用,UWP 就完全没有这个东西,不过自己简单使用 Win2D 造了一个之后会用上去——总之以干活的眼光看还是少.
程序打包直接用 VS 向导完成后上传微软商店即可,程序审核时间最长经历过两天,最短 40 分钟,幺蛾子不多,不像苹果一样严格到发疯. 数据打点使用巨硬家的 AppCenter,无缝与 UWP 集成的 SDK 非常方便,数据打点 API 也十分简单,程序崩溃自动记录并上传,很省心.
虽然是个人的 Side Project,不过公司同事对本项目的态度还是很积极的,在 Leader 的支持下也变为了官方名义版本,一位后端同学专门为 UWP 开发了独立接口(一个也算啊 (:3 」∠ ❀) ),账号部门的同学帮忙协助解决极验验证码的问题,所以心里是非常非常感激的,这种编码之外的工作体验对个人的激励是非常大的.
不过 UWP 这种 .NET 技术栈的东西,在国内互联网公司中的基础设施建设就是 0,所以有很多东西是要重新造的,比如登录、评论、支付、JSBridge 等等,这些组件在很多公司基本都是公司级别的通用组件,业务部门只负责调取,平台部门负责实现,在面对什么都没有的情况下只能自己从头开始,不过好在需要造的东西不是很多,和相关部门的同学沟通也很顺利,还是在相对短的时间内实现了基础功能. 当然有一些东西就直接将计就计,比如评论就直接嵌了一个网页评论组件而已.
而且整个项目中没有产品经理的介入我觉得是最爽快的一点——按照自己的口味去做设计,按照自己的想法实现功能,然后上架让大家使用,没有乱七八糟的条件约束,这应该是很多朋友也包括我一直想做的事情之一,现在稍稍摸到了这个成就还是比较开心的 (:3 」∠ ❀)
另外多亏当年对美术产生的浓厚兴趣,再加上接触设计类工具软件较早并且在一直使用没有荒废,因此就算在没有设计师的支援下,做出来的东西大概应该没有瞎到各位,自认为正常使用应该是没问题的吧.
因为算是刚刚接触,所以有时候会被微软的迷之 API 迷惑,比如 WinRT 和 .Net Framework 的混搭,能找到多个可以实现相同功能的 API,相关讨论比较少,所以需要多花点时间摸索;有时候会碰到一些有 Bug 的 API,不过多是 .Net 遗留下来的,一般使用 UWP 的新 API 可解决——总之就是相关讨论确实比其他语言少,所以要花的时间多一点.
另外就是微软的文档,你说它全吧它确实挺全的,但有时候感觉逻辑上不清晰,比如一个组件上的重要使用方式会放在设计规范文档中; API Document 有些带示例有些不带就不太方便;还有一些新 Feature 没有详细文档,只有一个类似博文的 Introduction,而且还可能因为 Nuget 的包比较新细节上略有不同,反正文档上总会有些瑕疵吧,不过总体来讲还是很全的.
另外目前 UWP 使用 Sqlite + EF Core 不太友好,比较折腾,简单的说就是 Migration 需要使用 CLI 进行手工操作,还需要先将项目转换为 .NET Standard 项目后进行操作之后再转为 UWP Application,感觉有些山寨,而不是直接改表定义改 Entity 之后自动迁移.
还有就是 VS + Resharper 那个流畅度真的不咋地啊,程序一开多就慢到不行了(但我又离不开 JB 家的习惯).
至今为止微软的 UWP 生态依然很薄弱,当然这和当下的需求和历史进程有关,不过从个人感情来讲,还是希望微软的生态建设越来越好,这两年微软的态度大家都有目共睹;对于本应用,希望还是能够继续完善下去,毕竟作为十年前钻被窝用 PSP 看漫画的基佬,如今使用自己开发的程序在看漫画,还是想要以认真负责的态度来对待,成为自己理想中的目标.
很少写文章记录,感谢您的阅读.
PS:一个微小的贡献,适用于 UWP 的 SVGA 播放器: https://github.com/LancerComet/SVGAPlayer-UWP
1
pod 2019-02-16 01:06:30 +08:00 via Android 1
强势关注
|
2
ych8398527 2019-02-16 01:10:21 +08:00 via Android 1
关注
|
3
May725 2019-02-16 01:10:38 +08:00 via iPhone 1
赞,文章写得很用心
|
4
hjc4869 2019-02-16 01:16:47 +08:00 1
webp 可以直接建一个 C++项目编译 libwebp,然后 C#这边 P/Invoke。
|
5
LancerComet OP @hjc4869 感谢,之后试试
|
6
duskdandelion 2019-02-16 01:36:24 +08:00 via Android
原来是群里的大佬
|
7
litmxs 2019-02-16 01:41:56 +08:00 via Android
这是 Bilibili 官方的吗?还是第三方?
|
8
ragnaroks 2019-02-16 08:42:46 +08:00
XAML 喜欢吗?
喜欢就砍了 |
9
neko2 2019-02-16 09:04:22 +08:00 1
.瑟瑟发抖
|
10
LancerComet OP |
11
hljjhb 2019-02-16 10:51:57 +08:00 via Android 1
好评 前两天有在 windows store 看到
|
12
azh7138m 2019-02-16 11:40:05 +08:00 via Android 1
好评,这就回去给 640 充电(
哎,话说 B 站 App 没有上架 play 的计划吗? 我觉得 web 看漫画体验还可以,某些盗版漫画网站改版之后的前端水准相当高,比哔咔还要舒服不少( |
13
azh7138m 2019-02-16 11:41:43 +08:00 via Android
> 而且整个项目中没有产品经理的介入我觉得是最爽快的一点
切图狗表示赞同。 |
14
verrickt 2019-02-16 11:55:48 +08:00 via Android 1
希望微软今年能在 build 上发力 XAML
|
15
Myprincess 2019-02-16 12:23:50 +08:00 1
用户路过
|
16
dhssingle 2019-02-16 13:01:53 +08:00 via iPhone 1
支持,目前在用 Surface 看漫画,不得不说大屏幕就是爽。
|
17
lynskylate 2019-02-16 13:12:55 +08:00 via Android 1
uwp 刚出来没多久的时候,写过一个大作业,xaml 体验很棒,当时还运行在已经在天国的 win10 的 lumia 950xl.
|
18
tulongtou 2019-02-16 13:22:24 +08:00 via iPhone 1
uwp 不是死掉了吗 还弄这个干啥
|
19
LancerComet OP @azh7138m Play 其实是锁区了,酷安有很多搬运; Web 版正在开发,实际上我也认为先上 Web 比较合适,比较手机看起来很难受,但奈何大家觉得手机入口比较重要
|
20
luojianxhlxt 2019-02-16 13:39:00 +08:00
其实我挺想知道
B 站的两个官方 UWP,是怎么合作的呀 B 站找的你们还是你们毛遂自荐的 |
21
mmdsun 2019-02-16 13:47:16 +08:00 via Android
@tulongtou Windows 10 mobile 死掉了。uwp 还没。Xbox,HoloLens 还都是 uwp
|
22
LancerComet OP @tulongtou Mobile 版本 GG,不过不代表 UWP 完蛋
|
23
azh7138m 2019-02-16 13:54:30 +08:00 via Android
@LancerComet 漫画 app 能有啥入口。。。一个月打开个位数次,对 w10m 用户来说 app 才比较重要,有的时候浏览器适配是有点尴尬的
|
24
lizhuoli 2019-02-16 18:25:41 +08:00 via iPhone 1
身为公司还能支持这种所谓的业余兴趣,真的爽啊。哪像我们,UWP 的今日头条和抖音都是完全第三方开发者自己搞的,API 全靠抓包,感觉和公司氛围有关
|
26
LancerComet OP @lizhuoli 所以个人还是很感激的,在国内感觉可遇不可求
|
27
winoros 2019-02-17 14:09:05 +08:00 via Android 1
支持
ipad 是不是只能等网页版了 |
28
LancerComet OP @winoros iPad 正在适配中
|
29
inoki 2019-02-19 22:58:04 +08:00 via Android
请教一下生成 upload 包之后本地 certificate 一直通不过,各项都显示 nullpointer,原因未知。但真机和模拟器运行都可以正常运行,审核那边大丈夫?😂
|
30
LancerComet OP @inoki 没遇到过这种问题,感觉是不是那个测试工具的事情?不过微软那边的审核看起来只是装上去用一会而已,如果能运行估计也就放走了
|
31
inoki 2019-02-20 02:26:37 +08:00 via Android
嘛,我这边也是这样感觉的,看审核结果啦!
|
32
Handle 2019-02-21 01:03:03 +08:00
赞,正好平板上需要一些靠谱的 UWP 应用,库喜+1
|
33
inoki 2019-02-22 12:31:35 +08:00 via Android 1
@LancerComet 好了好了,看来是本地认证工具的问题了,谢啦老哥
|
34
nsynet 2019-09-24 20:22:49 +08:00
如果是使用 Electron 开发,受众应该是至少多 10 倍吧。
|