来说说Markdown
💡今天发布全新版本:v1.2
1.2版本更新的内容:
- 新增文件列表排序功能,方便用户快速查找所需内容。
- 支持文件夹管理功能,让文件归类更加高效便捷。
- 增强 Markdown 支持:添加标题(#)、列表(-)、代码块等常用语法。
- 实现自定义的文字“标注”渲染功能:针对中文输入习惯,将【【内容】】(两个中文方括号内的内容)自动渲染为标注样式(见本文图片示例)。
- 修复部分已知问题,提升使用体验。
- 其实以上内容你也不需要记,因为后面我将添加AI助手,有不会markdonw语法的同学,可以直接问AI,AI会帮你解决。😀
介绍了更新的版本信息后,我想再说说 Markdown。
Markdown 是一种轻量级的标记语言,使用简单的标记符号对文本内容进行格式化。它最初由 John Gruber 和 Aaron Swartz 于 2004 年设计,旨在通过简洁易读的语法,便于书写、编辑和转换成 HTML 或其他格式。Markdown 被广泛用于编写技术文档、博客文章、说明文件等。
Markdown 的优点(相比传统 Word文档的优势)
- 轻量简单:
Markdown 的语法极其简单直观,使用符号如 #、*、 等即可标记标题、列表、链接等内容,不需要复杂的菜单操作。
对比 Word:
Word 依赖繁琐的格式设置菜单,而 Markdown 更像写代码,直接在文本中完成格式控制,无需频繁切换操作界面。
- 跨平台支持:
Markdown 是纯文本文件(通常是 .md 后缀),可以在任何文本编辑器中打开和编辑,无需特定的软件支持(如 Word)。
对比 Word:
Word 文件需要专用的软件(如 Microsoft Word)或兼容工具,而 Markdown 文件更灵活,几乎可以在任何设备上编辑。
- 高度可移植性:
Markdown 文件可以轻松转换为 HTML、PDF、Word 等格式,适应不同的应用场景。
对比 Word:
Word 虽然也支持格式转换,但生成的文件复杂性较高(如 HTML 文件含有多余的样式代码),而 Markdown 转换输出干净、轻量。
- 易于版本控制:
Markdown 文件是纯文本,非常适合与版本控制系统(如 Git)结合,方便追踪和管理文档的历史更改。
对比 Word:
Word 文件是二进制文件,虽然也支持修订和版本功能,但在团队协作和版本管理中不如纯文本文件高效。
- 专注于内容:
Markdown 以内容为核心,排版格式被简化到最小程度,鼓励用户专注于内容创作,而不是纠结于样式调整。
对比 Word:
Word 提供大量的格式化选项,用户容易被花哨的排版功能分散注意力。
- 文件小巧:
Markdown 文件由于是纯文本格式,体积非常小,便于存储和分享。
对比 Word:
Word 文件通常包含复杂的格式信息和嵌入资源,文件体积较大,不便于轻量级共享。
- 支持扩展:
Markdown 可以通过插件支持数学公式(LaTeX)、流程图、表格、高亮代码等,灵活满足技术写作和复杂文档的需求。
对比 Word:
Word 功能强大但不够灵活,复杂功能需要额外的插件支持,学习曲线较高。
Markdown 的适用场景
- 知识管理: 用于个人笔记。
- 技术文档: 撰写 README 文件、API 文档等。
- 博客与文章: 撰写 Markdown 格式的博客并发布到支持的平台。
- 团队协作: 结合 Git 管理文档和代码。
一个简单的 Markdown 示例
上图效果通过输入以下内容便可以直接在星辰app中渲染
# 上下文隔离(Context Isolation)
【【 🌈 上下文隔离(Context Isolation)是 Electron 中的一项重要安全功能,它确保预加载脚本(Preload Script)和 Electron 的内部逻辑运行在与网页内容(Web Content)隔离的独立上下文中。这项功能的主要目的是防止网页访问 Electron 的内部组件或预加载脚本中的高权限 API,从而增强应用程序的安全性。】】
### 上下文隔离的作用
1. **隔离运行环境**:
- 预加载脚本和网页内容运行在不同的 JavaScript 上下文中。
- 网页无法直接访问预加载脚本中的变量或函数。
2. **防止高权限 API 暴露**:
- 预加载脚本可以访问 Node.js API 和 Electron 的内部模块,但这些 API 不会直接暴露给网页。
- 通过 `contextBridge` 模块,可以安全地将特定的 API 暴露给网页。
---
### **迁移到上下文隔离**
如果您的应用程序之前未启用上下文隔离,需要将预加载脚本中的 API 暴露方式从直接修改 `window` 对象改为使用 `contextBridge`。
- **之前(未启用上下文隔离)**:
```javascript
// preload.js
window.myAPI = {
doAThing: () => {}
};
```
- **之后(启用上下文隔离)**:
```javascript
// preload.js
const { contextBridge } = require('electron');
contextBridge.exposeInMainWorld('myAPI', {
doAThing: () => {}
});
```