|
| 1 | +--- |
| 2 | +sidebar_position: 4 |
| 3 | +--- |
| 4 | + |
| 5 | +# 代码编辑 |
| 6 | + |
| 7 | +JS-Encoder 的代码编辑窗口基于 Codemirror 开发,Codemirror 具有良好的性能、众多的插件和功能扩展性,这就是使用它的原因。 |
| 8 | + |
| 9 | +## 窗口 |
| 10 | + |
| 11 | +初始的代码编辑窗口如下: |
| 12 | + |
| 13 | +<img style={{width: "500px"}} src="http://img-cdn.jsencoder.cn/docs/images/editor-window.png-toWebp.webp"/> |
| 14 | + |
| 15 | +如你所见,JS-Encoder 将 HTML、CSS 和 JavaScript 分成独立的窗口显示。这一方面是因为这三个本来就是不同的技术,另一方面避免了在代码量多的情况下造成代码混乱的问题,分成三个窗口看上去更加整洁。 |
| 16 | + |
| 17 | +在许多时候你会想同时看见多个窗口的代码,在 V4 中 JS-Encoder 提供了这个功能,你可以拖动tab对窗口进行自由分割以及合并: |
| 18 | + |
| 19 | +<img style={{width: "700px"}} src="http://img-cdn.jsencoder.cn/docs/images/split-view.webp"/> |
| 20 | + |
| 21 | +如果你想专注于代码编写,可以点击右上角的箭头按钮将预览窗口隐藏: |
| 22 | + |
| 23 | +<img style={{width: "700px"}} src="http://img-cdn.jsencoder.cn/docs/images/hide-preview.webp"/> |
| 24 | + |
| 25 | +## 工具栏 |
| 26 | + |
| 27 | +每个编辑器窗口右上角展示着该(预处理)语言可用的操作,如格式化,markdown 工具栏。 |
| 28 | + |
| 29 | +## 更简洁的 HTML |
| 30 | + |
| 31 | +在 HTML 窗口中,你不需要使用 `!` + `Tab` 或者手动去生成 HTML 头部,JS-Encoder 会在执行代码前将各个窗口的代码放到相应的位置上执行。下边是一个例子: |
| 32 | + |
| 33 | +```HTML |
| 34 | +<!DOCTYPE html> |
| 35 | +<html lang="en"> |
| 36 | + <head> |
| 37 | + <meta charset="UTF-8" /> |
| 38 | + <meta name="viewport" content="width=device-width, initial-scale=1" /> |
| 39 | + <title></title> |
| 40 | + <style> |
| 41 | + /* CSS 窗口代码 */ |
| 42 | + </style> |
| 43 | + </head> |
| 44 | + <body translate="no"> |
| 45 | + <!-- HTML 窗口代码 --> |
| 46 | + <script> |
| 47 | + /* JavaScript 窗口代码 */ |
| 48 | + </script> |
| 49 | + </body> |
| 50 | +</html> |
| 51 | +``` |
| 52 | + |
| 53 | +但这并不意味着你不可以在 HTML 窗口中编写 CSS 和 JavaScript,只是你需要用 `<style></style>` 和 `<script></script>` 标签将其包裹: |
| 54 | + |
| 55 | +## 编码 |
| 56 | + |
| 57 | +### Emmet |
| 58 | + |
| 59 | +Emmet 是很好用的功能,你可以在编写 HTML、CSS 和 JavaScript 代码的时候按下 `Tab` 进行自动补全。 |
| 60 | + |
| 61 | +目前有如下(预处理)语言支持 Emmet: |
| 62 | + |
| 63 | +- HTML |
| 64 | +- Pug |
| 65 | +- CSS |
| 66 | +- Sass |
| 67 | +- Scss |
| 68 | +- Less |
| 69 | +- Vue |
| 70 | + |
| 71 | +下面是一个例子: |
| 72 | + |
| 73 | +<img style={{width: "400px"}} src="http://img-cdn.jsencoder.cn/docs/images/emmet.webp"/> |
| 74 | + |
| 75 | +你可以在侧边栏的[编码设置](./sidebar/settings)中开启/关闭该功能。 |
| 76 | + |
| 77 | +### Linter |
| 78 | + |
| 79 | +目前有如下(预处理)语言支持 Linter: |
| 80 | + |
| 81 | +- HTML |
| 82 | +- CSS |
| 83 | +- Sass |
| 84 | +- Scss |
| 85 | +- Less |
| 86 | +- Stylus |
| 87 | +- JavaScript |
| 88 | +- TypeScript |
| 89 | + |
| 90 | +下面是一个例子: |
| 91 | + |
| 92 | +<img style={{width: "400px"}} src="http://img-cdn.jsencoder.cn/docs/images/linter.webp"/> |
| 93 | + |
| 94 | +你可以在侧边栏的[编码设置](./sidebar/settings)中开启/关闭该功能。 |
| 95 | + |
| 96 | +### 格式化 |
| 97 | + |
| 98 | +JS-Encoder 使用 Prettier 来格式化代码,你可以在编辑窗口右上角工具栏的**更多**选项中选择格式化代码来让代码变得更美。 |
| 99 | + |
| 100 | +目前有如下(预处理)语言支持格式化: |
| 101 | + |
| 102 | +- HTML |
| 103 | +- Markdown |
| 104 | +- CSS |
| 105 | +- Sass |
| 106 | +- Scss |
| 107 | +- Less |
| 108 | +- JavaScript |
| 109 | +- TypeScript |
| 110 | +- Babel |
| 111 | +- Vue |
| 112 | + |
| 113 | +### 智能提示 |
| 114 | + |
| 115 | +现代编辑器中智能提示是不可或缺的功能。尤其是当语言的基础 API 愈加繁多的情况下,智能提示可以大大增加编码效率。 |
| 116 | + |
| 117 | +下面是一个例子: |
| 118 | + |
| 119 | +<img style={{width: "400px"}} src="http://img-cdn.jsencoder.cn/docs/images/autocomplete.webp"/> |
| 120 | + |
| 121 | +#### LSP |
| 122 | + |
| 123 | +Codemirror 自带的智能提示功能很好,在编写 HTML、CSS 这类语言时完全够用,但仍存在问题:无法动态分析代码中所声明的变量和属性。 |
| 124 | + |
| 125 | +JS-Encoder 通过接入 TypeScript LSP 解决了这个问题。 |
| 126 | + |
| 127 | +如果想了解具体实现方式,请看:[LSP](./deep/LSP) |
| 128 | + |
| 129 | +## 内置插件 |
| 130 | + |
| 131 | +### 代码搜索 |
| 132 | + |
| 133 | +JS-Encoder 开发了一个与 VSCode 相似的搜索框插件,Codemirror 内置的搜索插件的结构无法自定义,但所用到的功能都被 Codemirror 封装成了一个一个的 Command,所以完全可以自己做一个新插件代替。 |
| 134 | + |
| 135 | +<img style={{width: "300px"}} src="http://img-cdn.jsencoder.cn/docs/images/search.png-toWebp.webp"/> |
| 136 | + |
| 137 | +在编辑器中通过 <kbd>Ctrl/Cmd</kbd>+<kbd>F</kbd> 打开搜索框进行使用。 |
| 138 | + |
| 139 | +:::note |
| 140 | +之后该插件将会作为独立的 npm 包便于其他开发者使用。 |
| 141 | +::: |
| 142 | + |
| 143 | +### Markdown工具栏 |
| 144 | + |
| 145 | +使用工具栏可以更快的生成 Markdown 语法,配合[快捷键](./sidebar/shortcut)效果更佳哦。 |
| 146 | + |
| 147 | +<img style={{width: "450px"}} src="http://img-cdn.jsencoder.cn/docs/images/markdown-tools.webp"/> |
0 commit comments