当前位置: 首页 > Web前端 > vue.js

傻瓜教程:使用Vue和Electron构建Markdown预览器

时间:2023-04-01 01:08:41 vue.js

开发人员必须适应的最新趋势是为多个操作系统编写一个代码库。Electron是一个JavaScript框架,允许您使用简单的JavaScript和HTML创建桌面应用程序,并将网站转换为可以充分利用Windows、Mac或Linux操作系统的所有功能的可执行应用程序。Vue是一个旨在构建交互式和渐进式Web应用程序的库,它通过简单灵活的API提供数据响应组件。在本教程中,我们将介绍如何使用Vue和Electron构建Markdown预览应用程序。先决条件要继续学习本教程,您需要具备以下条件:熟悉HTML、CSS和Javascript(ES6+)基本了解VSCode或您的开发计算机上安装的任何代码编辑器我们将构建什么我们将构建什么预览降价代码桌面应用程序。基本上,我们将有一个包含两列的网格:一列用于文本编辑器,一列用于预览。完成的结果将如下所示:设置Vue使用VueCLI创建一个新的Vuejs应用程序。如果您的开发计算机上未安装VueCLI,您可以使用以下命令安装它:npminstall-g@vue/cli-g标志将在您的计算机上全局安装它。接下来,使用CLI创建一个新的Vue应用程序,使用vuecreate命令后跟项目名称。我们的应用程序的名称是markdown-previewer,因此我们可以通过运行以下命令来创建它:vuecreatemarkdown-previewer运行vuecreatemarkdown-previewer将创建一个新的Vue应用程序,但首先,系统会提示您设置应用。步骤1选择Manuallyselectfeatures功能并按Enter,这将使您能够明确选择要包含在新项目中的库。Step2选择和控制功能列表中的某一项,鼠标在这里不能工作,所以当你要选择/取消一个功能时,请使用箭头上下移动,然后按空格键。从路由器、Babel和Linter中选择。在第3步中,我们不会使用历史模式,而是使用散列模式。步骤4选择ESLint+标准配置。这基本上就是我们linter的配置,ESLint帮助您在编写代码时维护模式。步骤5单击Lintonsave。当您保存代码时,它将对代码运行lint。单击Lintonsave,它会在您保存代码时对代码运行lint。第6步选择package.json,我们将在其中存储所有项目依赖项。第7步输入Y或N,具体取决于您是否要将其保存为预设,这样可以节省您在创建新的Vue应用程序时执行所有这些步骤的时间。单击Enter开始构建新的Vue应用程序。创建应用程序后,您应该在终端上看到以下内容:要运行应用程序,请移至项目目录,然后运行??npmrunserve。cdmarkdown-previewercode。&&npm运行服务代码。命令将在VSCode中打开项目,但欢迎您使用您选择的任何代码编辑器。编译后,应用程序将在应用程序运行的终端上在端口http://localhost:8080/上输出。如果您在浏览器上访问http://localhost:8080/,您应该会看到以下内容。现在我们已经启动并运行了Vue应用程序,是时候添加electron-builder包了。添加electron-builderelectronic-builder包可帮助您为macOS、Windows和Linux打包和构建可分发的Electron应用程序,并提供开箱即用的自动更新支持。要将此包添加到您的应用程序,请使用Vueadd命令,VueCLI的这个很酷的功能会自动在您的应用程序中配置该包。要安装包,请运行以下命令vueaddelectron-builder接下来,系统将提示您选择您喜欢的版本。选择最新版本(撰写本文时为9.0.0)并按Enter键继续。运行此命令后,将在src目录中创建一个background.js文件。这就是Electron所做的,主进程为应用程序创建桌面窗口。安装完electron-builder包后,你会在package.json文件中发现一些新的脚本:"electron:build":"vue-cli-serviceelectron:build","electron:serve":"vue-cli-serviceelectron:serve","postinstall":"electron-builderinstall-app-deps","postuninstall":"electron-builderinstall-app-deps"使用electron:serve命令运行应用程序。npmrunelectron:serve这将在您的桌面上打开Electron应用程序。安装Bootstrap下一步是安装Bootstrap,它将帮助您更快地设置用户界面。使用vueadd命令安装Bootstrap。请记住,vueadd命令将处理main.js文件中的包注册。要安装它,请运行以下命令:vueaddbootstrap-vuebootstrap系统将询问您是否要使用babel。输入y并按Enter键继续。现在,我们可以设置用户界面(UI)。设置用户界面在设置用户界面之前,让我们整理一下。首先,将compoments/HelloWorld中的代码替换为以下代码。这是Bootstrap中的基本网格系统,您应该会遇到由于eslint-loader而导致的错误。要禁用它,请创建一个vue.config.js文件并添加以下内容。module.exports={lintOnSave:false}为了使这些更改生效,您需要重新启动服务器。现在,让我们设置代码编辑器。为此,我们将使用Ace包。要安装此软件包,请打开您的终端并键入以下内容。npminstall--save-devvue2-ace-editor接下来,在HelloWorld.vue组件中定义ace包。components:{editor:require("vue2-ace-editor")}您还必须为编辑器定义一些状态。例如,您需要定义内容状态,其中存储所有降价代码。此外,您应该使用state属性定义编辑器的高度。data(){return{content:"",height:window.innerHeight-100};},现在创建一个方法来引入编辑器的所有实例,例如语言类型、主题和模式。方法:{editorInit(){editorInit(){require("brace/ext/language_tools");require("大括号/模式/降价");require("大括号/主题/吸血鬼");}}}现在,您可以在模板部分注册组件。输出应该看起来像this:我们的UI需要更多清理,让我们删除Vue徽标并添加一个预览部分。要删除Vue徽标,请转到views/Home.vue文件并将代码替换为以下代码。我们还需要移除应用程序顶部的导航链接并更改背景颜色。打开根App.vue组件并将代码替换为以下内容。更改的结果应该如下所示:现在我们可以添加预览部分了。我们将使用卡片来预览标记。在components/HelloWorld.vue文件中向模板添加一张简单的卡片。

预览器

{{content}}
然后,定义一个状态来保存数据的一些样式。styleObject:{height:window.innerHeight-100+"px",color:"black",overflowY:"auto"},这里我们要给div添加一些动态样式,class是card,这样height将始终与代码编辑器的高度一致。您在代码编辑器中键入的任何内容都将显示在预览卡上。实施降价预览器您可以使用v-html指令将代码库转换为HTML预览器。
这会将编辑器中的代码转换为HTML。我们将通过两种方式演示如何实现Markdown预览器:简单方式和复杂方式。复杂的方法需要编写您自己的自定义降价指令。简单的方法是简单地从你的降价代码安装一个包。让我们从复杂的方法开始。复杂的方法我们将使用正则表达式为标记设置我们自己的自定义Vue指令,这是一个繁琐的过程。首先在src中创建一个指令目录,然后创建一个encode.js文件。您将在此处编写所有降价配置。接下来,在main.js文件中注册markdown。importdecodefrom'@/directives/decode'Vue.directive("decode",decode)设置你的降价代码。在bind()方法中包装一个自定义Vue指令,并将一个元素作为参数传递。exportdefault{bind:el=>{console.log(el.innerHTML)}}现在,您可以在模板上使用v-decode指令。{{content}}
当内容出现在编辑器keyup事件,该命令会将内容记录到控制台。下一步是开始为降价编写一些正则表达式。创建一个自定义规则数组来保存所有正则表达式。从一个简单的标题开始:construles=[[/^(?:######)\s*(.+?)[\t]*$/gm,'
$1
'],]这个简单的规则将把######转换成HTML元素。让我们分解一下这里发生的事情:^在一行的开头声明一个位置(?:######)匹配字符######\s*匹配一个空格字符(.+?)匹配everythingexceptlinetermination除字符外的所有字符。一个例子是行终止符,它标记输入字符序列中一行的结束[\t]*是一个限定符,在0和无限制之间匹配,并且匹配空格或制表符g返回所有匹配m使^和$匹配每行的开始/结束现在我们有了元素的正则表达式,我们可以通过修改表达式对其他head元素做同样的事情。常量规则=[[/^(?:######)\s*(.+?)[\t]*$/gm,'
$1
'],[/^(?:#####)\s*(.+?)[\t]*$/gm,'
$1
'],[/^(?:####)\s*(.+?)[\t]*$/gm,'

$1

'],[/^(?:###)\s*(.+?)[\t]*$/gm,'

$1

'],[/^(?:##)\s*(.+?)[\t]*$/gm,'

$1

'],[/^(?:#)\s*(.+?)[\t]*$/gm,'

$1

']]这里我们为所有的头部元素定义了一个正则表达。为了使用它们,我们必须遍历并用匹配表达式的规则替换我们的自定义输入。bind(el){让内容=el。文本内容规则。forEach(([rule,template])=>{content=content.replace(rule,template);console.log(content)})el.innerHTML=content}}有了这个定义,我们就可以在编辑器中使用header元素了。让我们定义一些其他的简单规则。列表:[/^(?:-)\s*(.+?)[\t]*$/gm,'']块引号:[/^(?:>)\s*(.+?)[\t]*$/gm,'
$1
']为我们的markdown编写所有表达式可能会造成混淆并浪费时间。但了解所有包的幕后发生的事情总是好的。这使我们找到了一种实现降价预览器的简单方法。简单的方法更简单的方法是安装一个可以帮助您操作数据的软件包。我们将使用vue-directive-markdown。要安装它,请打开您的终端并运行以下命令。npminstallvue-directive-markdown--save-dev接下来在main.js文件中进行注册和配置,使其在应用程序中可以全局访问。importVueDirectiveMarkdownfrom'vue-directive-markdown'Vue.directive('decode',VueDirectiveMarkdown)可以通过分析模板中的v-decode来访问。{{content}}最后,将内容作为密钥传递,这样您就可以两者都在输入时更新。最终了解如何编写自定义指令将真正提高您的Vue技能。需要为桌面和Web编写代码库是我们都必须适应的。前往GitHub获取完整的源代码。原文:https://blog.logrocket.com作者:WisdomEkpot微信搜索【前端全栈开发者】关注这个掉头发,摆地摊,卖货,继续学习的程序员。第一时间阅读最新文章,过两天会优先发布新文章。关注大礼包,让你省钱!