云乡

云之幻的个人博客

0%

按照《向文件进行写入的最佳做法》这篇文档所述,UWP 中推荐的做法是使用 FileIO 或者 PathIO 进行文件读写。这没问题,但这俩工具类都各有缺陷:

  • FileIO 建立在 StorageFile 基础上,想读写,先拿到 StorageFile
  • PathIO 可以通过路径,但默认仅限于应用文件夹,其它目录没权限(需要一些特殊操作)。

那么有没有既能通过路径获取文件,又没有严格的权限限制的方法呢?当然有了!

阅读全文 »

在 UWP 中,通常是使用 StorageFile 进行文件相关的操作,大多数情况下,这没有问题。但如果涉及到文件夹遍历,你就会发现建立在 Storage 基础上的文件查询太慢了。

以一个普通的 VuePress 前端项目为例,在加载完本地依赖后,整个项目文件数量在 20,000 个左右(包括 node_modules)。使用 StorageFolder.GetItemsAsync(),然后循环递归查询,耗时约 4 分半。

试想,如果你要做一个编辑器,展示文件树,打开应用后可能要等 5 分钟才能完全加载完,这简直是噩梦。

但现在,通过公开的 Win32 API,我们可以直接把时间压缩在 4 秒左右,这种文件查询速度绝对是一个飞跃式的提升(尽管可能比不上真正的 Win32 应用查询速度)。

阅读全文 »

主题定义是一件比较费时的操作,尽管编辑器还是那个 VSCode 的编辑器,但如果你要假装这是自己的,那么总要在 UI 上有些变化才是。

这需要一些精调,所幸 monaco-editor 提供了相当丰富的主题配置选项,完全可以让你的编辑器大变样。

阅读全文 »

官方语法定义

定义语法

我也没兴趣自创语法,但默认的 Markdown 语法是经典语法,一些后期扩展的语法,比如删除线、上标下标、脚注等语法均未涵盖。

为了能让语法高亮得更彻底一点,必须要对当前 markdown 语法解析进行扩展。

阅读全文 »

这篇博客的主要目的是用于从零开始利用 monaco-editor 创建一个 Markdown 编辑器。

由于有着相对明确的目标,所以就不会面面俱到,只能说提供一些简单的参考。

阅读全文 »

本章涉及知识点:

  • DataTemplate
  • ItemContainerStyle

在上一章中,我们简单地介绍了一下 ListView/GridView 的好处,以及如何使用集合进行绑定。

但是在实际项目中,我们很难只绑定一个字符串集合,通常都是绑定类集合,比如 ObservableCollection<User> 等。我们的需求有时候也不会仅显示字符串这么简单,可能会显示一张张卡片,或者像 QQ 那样显示一个聊天列表,那么这该如何完成呢?

阅读全文 »

前言

Windows10X 和 Windows10 有什么区别?当这个问题摆在我面前的时候,我就脱口而出:区别?双屏了呗!

这个答案有点低能,也有点肤浅。Windows10X 的出现,意味着 Windows 可能要进行的一些改变,我只是一个小小的开发者,也不想做过度解读,就带着大家来看看 Windows10X 有哪些新的变化,并稍加分析。

阅读全文 »

本章涉及知识点:

  • ListView/GridView 的用法
  • 与集合的绑定
  • ObservableCollection 的用法

通过本章的学习,你将接触 UWP 最重要的集合控件:ListView 和 GridView。它们虽然是两种控件,但原理相通,最大的区别也不过在于排版方式的不同,故而将这两者合在一起讲。

ListView 和 GridView 控件本身并不难,不足以让我分成上下两章来说,但其背后的数据绑定、数据模板等,却是制作 UWP 应用时必须要具备的知识,值得大书特书。

阅读全文 »

本章涉及知识点:

  • 创建绑定的流程
  • UI 通知

绑定是 UWP 应用的核心知识,熟练运用绑定,可以极大地减轻我们的工作量,同时让我们的代码的可维护性更优秀,即所谓健壮的代码

阅读全文 »