《vite+vue3实现网页版编辑器,带高亮以及代码提示(以SQL语言为例)》
## 引言:探索Vite与Vue3结合构建高效Web应用
随着前端技术的飞速发展,Vite和Vue3已成为现代Web开发领域的热门工具。Vite以其快速冷启动、热更新等特性让开发者享受前所未有的开发体验;而Vue3则凭借其优秀的组件化设计与Composition API,极大地提高了开发效率和代码可维护性。本文将引导您如何利用这两者搭建一款功能齐全、性能卓越的网页版SQL编辑器,包括代码高亮显示及智能提示等功能。
## 一、项目初始化与环境配置
### 1. 创建项目
首先,确保已安装Node.js和npm。然后通过Vite创建一个基于Vue3的新项目:
```bash
npm create vite@latest my-sql-editor --template vue
cd my-sql-editor
npm install
```
### 2. 安装相关依赖
为了实现实时语法高亮和代码提示,我们需要借助`codemirror`库及其SQL相关的插件:
```bash
npm install codemirror @codemirror/lang-sql
```
## 二、编写基础HTML结构与Vue组件
### 1. 在App.vue中引入CodeMirror
```html
<template>
<div id="app">
<textarea ref="editor"></textarea>
</div>
</template>
<script setup lang="ts">
import { onMounted, ref } from 'vue';
import CodeMirror from 'codemirror';
onMounted(() => {
const editor = CodeMirror.fromTextArea(
document.querySelector('textarea'),
{
mode: 'text/x-sql',
lineNumbers: true,
theme: 'dracula', // 更多主题可以自定义选择
}
);
});
</script>
```
此处我们已在App.vue中引入并初始化了一个基本的CodeMirror编辑器,并设置SQL模式以支持初步的语义高亮。
## 三、实现SQL代码高亮
上述代码已经实现了基础的SQL高亮,CodeMirror内置了对SQL的支持。但为了让效果更佳,我们可以进一步优化配置项,如添加SQL关键字高亮等。
### 高级配置示例:
```javascript
import '@codemirror/theme-dracula'; // 引入主题样式
import { Extension } from '@codemirror/state';
const sqlExtensions: Extension[] = [
// SQL语言插件
langSql(),
// 添加代码行号
lineNumbers(),
// 设置主题
EditorView.theme({
'&': { background: '#282a36' },
'.cm-comment': { color: '#6272a4' }, // 注释颜色
'.cm-keyword': { color: '#ff79c6' }, // 关键字颜色
// ...其他样式自定义
}),
];
onMounted(() => {
const editor = CodeMirror.fromTextArea(
document.querySelector('textarea'),
{
extensions: sqlExtensions,
}
);
});
```
## 四、实现SQL代码提示
CodeMirror并没有直接提供SQL的自动补全功能,但我们可以通过自定义扩展来实现。这里我们使用`hint`和`autocomplete`插件配合自定义数据源实现SQL代码提示。
### 实现代码提示功能:
```javascript
// 假设我们有一个包含所有SQL关键字和函数的数组
const sqlKeywords = ['SELECT', 'FROM', 'WHERE', 'LIKE', /*...*/ ];
function sqlHint(cm: EditorView) {
let cur = cm.state.field(EditorState.cursor).head;
let token = cm.getTokenAt(cur);
if (token.string.startsWith('@')) { // 示例:针对特定字符开头触发提示
let list: string[] = [];
for (let keyword of sqlKeywords) {
if (keyword.startsWith(token.string.slice(1))) {
list.push(keyword);
}
}
return {
from: cm.posFromIndex(cur - token.start),
to: cm.posFromIndex(cur),
list: list,
};
}
}
const hintExtension = [
Completion.of([
{ provide: ['completion'], get: () => sqlHint },
]),
];
sqlExtensions.push(...hintExtension);
```
## 结语:进阶优化与未来展望
至此,我们已成功利用Vite+Vue3构建了一个具备SQL高亮和代码提示功能的网页版编辑器。然而,为了提升用户体验,还可以在此基础上进行诸如错误检测、实时预览查询结果等更多高级功能的开发。同时,对于SQL提示的完善,可以考虑接入数据库API获取实时表结构信息,实现更精准的智能提示。希望本文能为您的前端开发之旅注入新的灵感与动力,让我们一起在前端世界里创造更多可能!
着这几年go语言的热度提高,go的开源项目越来越多,得到商业应用的开源也层出不穷,现在给大家推荐一个go实现的开源mqtt服务hmq,他支持websocket web调用和http接口认证,配合paho-mqtt.js调用库方便集成到web应用中
GitHub下载最新的hmq,编译生成hmq.exe
配置文件为json格式的hmq.config文件,常用配置如下:
{
"workerNum": 4096,
"port": "1883",//服务端口
"host": "0.0.0.0",
"debug": true,
"httpPort": "8080",
"tlsPort": "8883",
"tlsHost": "0.0.0.0",
"wsPort": "8083", //websocket服务端口
"wsPath": "/mqtt",//服务路径
"wsTLS": false,
"tlsInfo": {
"verify": false,
"caFile": "ssl/ca/ca.pem",
"certFile": "ssl/server/cert.pem",
"keyFile": "ssl/server/key.pem"
},
"plugins": {
"auth": "authhttp" //通过http鉴权
}
}
其中http鉴权的地址配置在plugins\auth\authhttp目录下的http.json
{
"auth": "http://www.xxx.com/CoreSYS.SYS/AuthMQTT_RawJson.ajax",//一般用户验证
"acl": "http://www.xxx.com/CoreSYS.SYS/AuthALCMQTT_RawJson.ajax",//订阅发布时候会验
"super": "http://www.xxx.bslzg.com/CoreSYS.SYS/AuthSuperMQTT_RawJson.ajax"//超级用户认证
}
通过认证接口由web应用负责登陆订阅发布权限鉴定,mqtt连接clientid可使用前缀加用户id形式如mqtt-username,登陆临时密钥可由web应用临时分配clientid->口令存入redis,当页面的mqtt登陆时由hmq调用web应用登陆认证接口,web应用通过clientid拿到临时密钥和传递过来密钥比对一致通过否则认证
失败,认证成功删除redis中clientid,发布和订阅通过传递过来的client id确定客户端是否有相应权限,至于mqtt消息类型与消息订阅发布可查阅相关资料,通过此方法可方便快捷实现web应用的实时交互,譬如:公告,订单等信息都可使用mqtt进行推送
以下是mqtt web应用用于认证的和伪代码
//超级用户认证
//接口传递过来clientid username,鉴权通过状态返回200否则401
[ModeMethod("{CanNoLogin:true,CanEnable:true}")]
static public ReturnJson AuthSuperMQTT_RawJson(HttpContext ctx, Object m_Parame)
{
ReturnJson m_ReturnJson = new ReturnJson();
Hashtable m_HH = new Hashtable();
JsonHelper.OBJToHashTable(m_Parame, m_HH);
int StatusCode = 401;
try
{
m_ReturnJson.bOK = true;
WriteLog("AuthSuperMQTT_RawJson:" + JsonHelper.OBJToJsonStr(m_HH));
string username = "", clientid = "";
if (KeyIsOK(m_HH, "username"))
{
username = m_HH["username"].ToString();
}
if (KeyIsOK(m_HH, "clientid"))
{
clientid = m_HH["clientid"].ToString();
}
string sMsg = "用户:" + clientid + ",账户:" + username;
WriteLog("AuthSuperMQTT_RawJson:" + sMsg);
if (m_EMQAdminDIC.ContainsKey(clientid))
{
string tusername = m_EMQAdminDIC[clientid].ToString();
if (username == tusername)
{
StatusCode = 200;
}
}
else
{
}
WriteLog("AuthSuperMQTT_RawJson 返回码:" + StatusCode.ToString());
ctx.Response.StatusCode = StatusCode;//验证失败调用
//ctx.Response.StatusCode=200;//验证通过调用
ctx.Response.End();
return m_ReturnJson;
}
catch (Exception e)
{
m_ReturnJson.bOK = false;
ctx.Response.StatusCode = StatusCode;
WriteLog("AuthSuperMQTT_RawJson 返回码:" + StatusCode.ToString() + ",异常:" + e.ToString());
ctx.Response.End();
return m_ReturnJson;
}
}
//订阅发布授权
[ModeMethod("{CanNoLogin:true,CanEnable:true}")]
static private ReturnJson AuthALCMQTT_RawJson(HttpContext ctx, Object m_Parame)
{
ReturnJson m_ReturnJson = new ReturnJson();
Hashtable m_HH = new Hashtable();
JsonHelper.OBJToHashTable(m_Parame, m_HH);
int StatusCode = 401;
try
{
m_ReturnJson.bOK = true;
WriteLog("AuthALCMQTT_RawJson:" + JsonHelper.OBJToJsonStr(m_HH));
string username = "", clientid = "", topic = "", access = "", ipaddr = "";
if (KeyIsOK(m_HH, "username"))
{
username = m_HH["username"].ToString();
}
if (KeyIsOK(m_HH, "clientid"))
{
clientid = m_HH["clientid"].ToString();
}
if (KeyIsOK(m_HH, "topic"))
{
topic = m_HH["topic"].ToString();
}
if (KeyIsOK(m_HH, "access"))
{
access = m_HH["access"].ToString();
}
if (KeyIsOK(m_HH, "ipaddr"))
{
ipaddr = m_HH["ipaddr"].ToString();
}
if (access == "1")
{
access = "订阅";
}
if (access == "2")
{
access = "发布";
}
string sMsg = "用户:" + clientid + ",账户:" + username + "," + access + ",消息:" + topic + ",ip地址:" + ipaddr;
WriteLog("AuthALCMQTT_RawJson:" + sMsg);
if (access == "订阅")
{
if (AuthSubFreeMQTT(ctx, topic, username, clientid))
{
StatusCode = 200;
ctx.Response.StatusCode = StatusCode;//验证通过调用
ctx.Response.End();
return m_ReturnJson;
}
else
{
StatusCode = 401;
ctx.Response.StatusCode = StatusCode;//验证通过调用
ctx.Response.End();
return m_ReturnJson;
}
}
else
{
if (AuthPubFreeMQTT(ctx, topic, username, clientid))
{
StatusCode = 200;
ctx.Response.StatusCode = StatusCode;//验证通过调用
ctx.Response.End();
return m_ReturnJson;
}
else
{
StatusCode = 401;
ctx.Response.StatusCode = StatusCode;//验证通过调用
ctx.Response.End();
return m_ReturnJson;
}
}
}
catch (Exception e)
{
m_ReturnJson.bOK = false;
ctx.Response.StatusCode = StatusCode;
ctx.Response.End();
return m_ReturnJson;
}
}
}
//普通用户登录鉴权
[ModeMethod("{CanNoLogin:true,CanEnable:true}")]
static private ReturnJson AuthMQTT_RawJson(HttpContext ctx, Object m_Parame)
{
ReturnJson m_ReturnJson = new ReturnJson();
Hashtable m_HH = new Hashtable();
JsonHelper.OBJToHashTable(m_Parame, m_HH);
int StatusCode = 401;
try
{
m_ReturnJson.bOK = true;
WriteLog("AuthMQTT20200107_RawJson:" + JsonHelper.OBJToJsonStr(m_HH));
string username = "", clientid = "", password = "";
if (KeyIsOK(m_HH, "username"))
{
username = m_HH["username"].ToString();
}
if (KeyIsOK(m_HH, "clientid"))
{
clientid = m_HH["clientid"].ToString();
}
if (KeyIsOK(m_HH, "password"))
{
password = m_HH["password"].ToString();
}
string sMsg = "用户:" + clientid + ",账户:" + username + ",口令:" + password;
WriteLog("AuthMQTT20200107_RawJson:" + sMsg);
if (m_EMQAdminDIC.ContainsKey(clientid))
{
string tusername = m_EMQAdminDIC[clientid].ToString();
if (username == tusername)
{
StatusCode = 200;
}
}
if (StatusCode != 200)
{
if (username == password)
{
using (NodeDBEngine m_NodeDBEngine = new NodeDBEngine())
{
try
{
string SQLString = "select username from sys_users where sys_users_nodeuuid=@sys_users_nodeuuid and username=@username";
List<Hashtable> m_varList = new List<Hashtable>();
m_varList.Add(NodeDBEngine.VarString("@username", username));
m_varList.Add(NodeDBEngine.VarDecimal("@sys_users_nodeuuid", clientid));
bool bOK;
DataSet pSet = m_NodeDBEngine.XNGetRecordVar(SQLString, out bOK, m_varList);
if (bOK)
{
if (pSet.Tables[0].Rows.Count > 0)
{
WriteLog("AuthMQTT20200107_RawJson 1");
StatusCode = 200;
}
else
{
if (AuthConnectFreeMQTT(ctx, username, clientid, password))
{
WriteLog("AuthMQTT20200107_RawJson 2");
StatusCode = 200;
}
else
{
WriteLog("AuthMQTT20200107_RawJson 3");
StatusCode = 401;
}
}
}
else
{
WriteLog("AuthMQTT20200107_RawJson 4");
StatusCode = 401;
}
}
catch (Exception r)
{
WriteLog("AuthMQTT20200107_RawJson 5:" + r.ToString());
StatusCode = 401;
}
}
}
else
{
if (AuthConnectFreeMQTT(ctx, username, clientid, password))
{
WriteLog("AuthMQTT20200107_RawJson OK1");
StatusCode = 200;
}
else
{
WriteLog("AuthMQTT20200107_RawJson 6");
StatusCode = 401;
}
}
}
else
{
WriteLog("AuthMQTT20200107_RawJson OK2");
StatusCode = 200;
}
}
catch (Exception e)
{
StatusCode = 401;
}
ctx.Response.StatusCode = StatusCode;//验证通过调用
ctx.Response.End();
return m_ReturnJson;
}
关于paho-mqtt.js的使用可参看相关资料
在前面:
好久没发文了……2021年余额基本告罄,为了走好2022年的IT之旅,这里为Python编程斗士或相关潜在人物,评估罗列了一下业界的开发IDE或编码用的文本编辑器,你且看了后再来自行了断——说错了,自行决断,以为来年早早做个准备~
Python 由其创建者 Guido van Rossum 于 1991 年推出,是用于自动化特定重复性任务的主要编程语言之一。在许多开发人员/程序员的贡献下,该语言已经发生了巨大的发展。如果您是编程新手,建议您从 Python 开始学编程。 Python 解释器可用于多种操作系统,例如 Linux、macOS 和 Windows。
Python 是一种通用语言,这意味着它可以用于从 Blender(3D 建模软件)到 Web 开发的许多应用程序中都有。您可以使用 shell学习或来为小型项目编写 Python 代码。但是,如果您想处理更大的项目,强烈建议使用专用代码编辑器或集成开发环境 (IDE)。每个 Python IDE 或代码编辑器在功能、用户界面等方面都各不相同。Python 社区也推荐了一些主流的这类工具。
在继续之前,先来看看什么是 IDE 和代码编辑器,以及良好的 Python 编码环境的要求都有哪些。
无论您是这方面的新手还是老手,都需要一个 IDE(集成开发环境)或代码编辑器来展示您的编码技巧和才能。 IDE 是一种软件,它将常见的开发人员工具整合到一个用户友好的 GUI(图形用户界面)中。 IDE 主要包括用于编写软件代码的源代码编辑器、用于软件的本地自动化构建的特征工具,如编译计算机源代码。最后,它有一个调试器,一个用于测试其他程序的程序。除了这些功能之外,IDE 还可以具有更多功能,并且每个 IDE 的功能各不相同。
代码编辑器也是软件;它就像一个带有一些附加功能的文本编辑器。它不是 IDE,因为 IDE 有许多开发人员工具。根据编辑器上的语言代码,它突出显示特殊关键字并提供一些建议。 Sublime Text、Atom、Visual Studio Code 是一些流行的代码编辑器。
我们列出了每个项目在其构建阶段和之后所需的一些主要和标准功能和要求。一个项目可以有比下面提到的更多的要求,但这些是基本的,IDE必须具备:
Ø 保存并重新加载源代码
IDE 或编辑器必须能保存您的工作成果,并可在以后重新打开所有内容,要能保持离开/停止工作时的状态,以便节省开发时间。
Ø 在相同环境中执行
要有一个内置的编译器来执行你的代码。如果不能在同一个软件环境中执行所有代码,那么它可能是一个文本编辑器。
Ø 调试支持
大多数 IDE 中的调试器提供单步调试代码并为代码的部分执行设置断点。
Ø 语法高亮
能够快速发现代码中的关键字、变量和符号使阅读和理解代码变得更加容易。
Ø 自动代码格式化
这是一个有趣的功能。当开发人员使用循环、函数或任何其他块代码时,代码会自行缩进。
有了总体的了解后,开始上正菜……
为了帮助选择最佳 Python IDE,我们整理了一些流行的 Python IDE 列表。这些推荐列表,是根据功能、用户数量和每个用户体验的积极反馈而来,请看以下列表:
1) Pydev
平台: GNU/Linux/macOS/Windows/Solaris
官网: https://www.eclipse.org/; http://pydev.org/
类型: IDE
Pydev
Eclipse 历史上为 Java 语言设计的集成开发环境 (IDE)。尽管如此,由于有一个优秀的插件或扩展系统机制,它可以与其他编程语言一起使用,包括 C/C++ 和 PHP。 Pydev 是一个插件,它允许将 Eclipse 用作 Python IDE,它也支持 Jython 和 IronPython。 Pydev 使用高级推理技术来提供代码完成和代码分析等要素。 IDE 还提供以下功能:调试器、Django、交互式控制台、基本语法突出显示、代码覆盖率等。它也是 Python 的最佳 Ide 之一,也是最佳 Python 编辑器。
Pydev 是免费的、独立于平台的,并促进了与 Eclipse 世界的卓越完整性。由于开发人员的努力和技术的发展,python 开发几乎可以与 Eclipse 上的 Java 开发相媲美,使开发体验更加令人印象深刻并且表现卓越。
优势:
短处:
2)2. Pycharm
平台: Linux/macOS/Windows
官网: https://www.jetbrains.com/pycharm/
类型: IDE
Pycharm
Pycharm 是 JetBrains 开发的集成开发环境(IDE)。它因其生产力工具(例如快速修复)而在竞争中脱颖而出。它提供三个版本,Apache 许可的社区版、教育 (Edu) 版和专有的专业版。前两个版本是开源的,因此是免费的,而专业版是付费的
社区版非常有趣,因为它具有不同的功能,例如语法高亮、自动完成和实时代码验证。付费版本具有更高级的功能,例如完整的数据库管理和许多社区版没有的重要框架,例如 Django、Flask、Google App、Engine、Pyramid 和 web2py。
优势:
缺陷:
3) Sublime Text
平台: Linux/macOS/Windows
官网: http://www.sublimetext.com/
类型: Python Text editor(Python文编辑器)
Sublime Text
Sublime Text 最初被认为是 Vim 的扩展,是一个用于 C++ 和 Python 编码的通用文本编辑器。从 2.0 版本开始,该软件支持 44 种主要编程语言,包括 Python。它于 2007 年首次出版,由 Jon Skinner 开发。为了创建这个软件,Jon Skinner 采用了三个原则:
由于不同的插件和包,一旦将 Sublime Text 安装为 Python IDE,您将获得高质量和强大的 IDE,使您可以非常轻松地在 Python 中进行开发。它结合了基本 Python 文本编辑器的大部分功能,包括可自定义的语法突出显示。
优势:
短处:
4)Visual Studio Code
平台: Linux/macOS/Windows
官网: https://code.visualstudio.com
类型: IDE
Visual Studio Code
由 Microsoft 为 Windows、Linux 和 OS 开发的 VS Code 是一个可扩展的代码编辑器,不要与 Visual Studio 混淆。确实,VS Code 虽小但功能齐全,而且软件是在 MIT 许可下开源的;这就是 Visual Studio 和 VS Code 之间区别特征。 VS Code 第一版于 2015 年 4 月 29 日发布,VS Code 在功能上与 Atom 不相上下。的确,就像 Atom 一样,VS Code 也是建立在 Electron 之上的,这意味着这两个程序具有几乎相同的优点和缺点。
VS Code 是微软的项目,在 GitHub 上贡献者数量最多。这一举措提升了微软的知名度,并将其定位为社区软件的主要参与者之一。在这种情况下,您可以向环境中添加新语言,例如 Python。只需下载并安装相应的插件即可适应环境。通过集成强大的代码自动完成引擎 (IntelliSense)、调试控制台和启动服务器命令的终端等功能,代码得到了增强。
VS Code 的整体设计非常好,它的主要优点是它提供了基于扩展的架构。由于 IDE 是轻量级的,因此可以根据需要通过添加连续的组件来对其进行扩展。
优势:
短处:
5)Vim
平台: Linux/macOS/Windows
官网: https://www.vim.org
类型: Text editor
Vim
Vim 是一个文本编辑器,一个允许操作文本文件的编辑器。它的源代码于 1991 年由其主要开发人员 Bram Moolenaar 首次发布。从那时起,该软件得到了开发人员以及开发人员社区的贡献,得到不断发展和改进。 Vim 与大多数其他 Python 文本编辑器的不同之处在于其操作模式,请注意 Vim 具有三种基本模式:插入模式、正常或命令模式以及命令行模式。
Vim 是免费软件,可以通过添加扩展或修改其配置文件在很大程度上进行自定义,这意味着您可以非常轻松地将其调整为用 Python进行开发。该软件包括多种功能,例如支持同步文件编辑的多缓冲区、适应语言的自动缩进等。要下载 Vim,只需单击此链接 https://www.vim.org/download.php。
优势:
短处:
6) GNU/Emacs
平台: Linux/macOS/Windows
官网: https://www.gnu.org
类型: Text editor
GNU/Emacs
Emacs(在 TECO 上运行的编辑 MACroS)于 1976 年由 Richard Stallman 创建,是一系列具有可扩展功能的文本编辑器。这个免费软件在开发者社区中非常受欢迎。
Richard Stallman 坚持这样一个事实,即该软件必须是完全免费和可定制的,在编程上没有任何限制。几年后,Emacs 出现了很多版本,包括 1984 年由 Richard Stallman 发起的 GNU Emacs 和 1991 年推出的 XEmacs。GNU Emacs 使用一种称为 Emacs Lisp 的强大扩展语言,它支持高级任务,例如写作、编译程序、上网、阅读电子邮件和论坛讨论。
该软件可免费下载,适用于所有平台。 GNU Emacs 使用各种定制脚本进行多种语言的开发,包括 Python。
对于 Python 开发,您可以使用 Emacs 上的 Elpy 扩展来处理 Python 项目。这个软件功能非常丰富。在它的众多功能中,如前面提到的突出显示语法以区分关键字和注释等文档元素;在文件中自动缩进以具有一致的格式等。
优势 :
短处:
7)Atom/Atom-IDE
平台: Linux/macOS/Windows
官网: https://atom.io/
类型: IDE
Atom/Atom-IDE
Atom 包括基本 IDE 的大部分功能。它的功能包括语法突出显示和自动完成。 Atom 的开发人员正在致力于集成 Rust 或 Go 等主要编程语言。 Atom 在提升性能方面不断取得进展,开发者非常关注社区的需求和意见,努力让用户体验更有价值。打开软件的等待时间有改进,重要计算所需的时间有小幅改进,以减少延迟。尽管如此,预计未来几个月会取得越来越多的进展。
Atom 是最好的 Python 文本编辑器之一。
促成 Atom 成功的原因之一是其完全可定制的界面。从界面到基本功能,一切都可以改变。另一方面,这种相当有利的举措也是程序延迟的根源问题之一。但总的来说,Atom 仍然是一个非常实用和功能强大的 IDE,我们期待程序更新。
优势:
短处:
8)IDLE
平台: Linux/macOS/Windows
官网: https://docs.python.org/3/library/idle.html
类型: IDE
IDLE
集成开发与学习环境,是Guido Van Rossum于1998年12月发布的用于Python开发的IDE(集成开发环境)。它是一个简单的 IDE,因此适合初学者。它包含一个多窗口文本编辑器,具有语法高亮显示和集成调试器,具有按步、持久断点和调用堆栈可见性等调试特性。
优势:
短处:
9.)Spyder
平台: Linux/macOS/Windows
官网: https://github.com/spyder-ide/spyder
类型: IDE
Spyder
Spyder 的第一个版本命名为 Pydee,由 Pierre Raybaut 于 2008 年创建。它是跨平台的,并且在非 copyleft 许可下(非 copyleft 自由软件由其作者发布,并获得重新分发和修改的许可)。自 2012 年以来,由于他们的贡献,Python 科学社区一直在维护 Spyder。
Spyder 具有语法高亮和自动补全等基本功能,还集成了许多科学使用库,如 Matplotlib、Numpy、IPython、Scipy。它是开源和免费的,而且安装非常容易,这要归功于 Python 包管理器。
它提供了科学软件包的高级分析、调试、编辑、交互式执行、深入检查和可视化功能的独特组合。这些主要组件是交互式控制台、文档查看器、变量浏览器和开发工具等。
优势:
短处:
10)Thonny
平台: Linux/macOS/Windows
官网: https://thonny.org
类型: IDE
Thonny
Thonny 是一个集成开发环境 (IDE)。该软件由爱沙尼亚的塔尔图大学开发,主要旨在通过为 Python 初学者提供简单、轻量级的 IDE 来使他们的编码更轻松。尽管如此,凭借出色的功能,它有点像初学者的工具包。因此,该软件特别适合希望开始使用 Python 进行编程和开发的初学者,因此完全不适合开发专家。
用户界面与所有可能分散初学者注意力的功能隔离开来。对于想要快速、轻松、简单地使用 Python 进行开发的初学者来说,这是一门经过深思熟虑的课程教学IDE。
优势:
劣势:
对于初学者,有许多具有基本功能的 IDE可供选择,可在进入下一个级别之前发现此环境并熟悉每个功能。对于有经验的开发人员,IDE 的选择应该基于大型项目的需要,IDE 的性能和高级功能的支持。这里有个列表供参考:
2022 IDE for Python
Python 是最著名的语言之一,甚至可能是最受欢迎的语言。与大多数主要语言一样,拥有大量有用、实用且功能强大的 IDE可供选择,无论它们是付费的还是免费的。
如果你有更好的IDE推荐,也请您推荐一下,并说说你的体验。
如果你是 Python 的初学者或计划学习Python编程,请留言给我 @牛旦IT课堂 ,我正在编写一门《从初学者到专家级》 Python 开发者绝佳课程,希望可以助你玩转Python编程。
*请认真填写需求信息,我们会在24小时内与您取得联系。