基于Vue.js平台的Markdown标记语言插件的研究与实现
作者:王辰 刘晓鑫 曹晓燕 王佳楠
来源:《科技风》2018年第35期
        摘 要:随着Web技术的不断革新,ECMAScript標准应运而生,ECMAScript6版本通过加入模块和类,从而使得JavaScript可以通过模块化的开发方式开发各类插件。基于Vue.js技术,遵循插件化的原则,开发了符合Markdown标记语言标准的Web插件,具备了结构清晰、可移植性强、API(Application Programming Interface,应用程序编程接口)简明、与宿主程序低耦合。
        关键词:Vue.js;Markdown;插件化开发
        近几年Web前端技术飞速发展,前端技术从静态到动态、从前端到全端。[1]2009年发布的Node.js,Node.js可以运行JavaScript的服务端,它基于V8引擎。其允许JavaScript运行在其之上,这也意味着JavaScript不仅仅是运行在浏览器上的脚本语言,更能够作为服务端处理数据。NPM是Node的模块管理器,开发者可以通过NPM开发者能够模块化引入或者导出代码,大大增强了代码的复用性。
        随着CMAScript标准的诞生,前端的框架也层出不穷,例如Google的Angular.js、Facebook的React.js、以及当下发展最迅猛的Vue.js。Vue.js可以提供插件化编程方法,允许开发者在其基础上构建插件,提升代码质量,提高开发效率。
        1 Markdown标记语言
        Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。[2]Markdown的语法简洁明了、学习成本低,而且功能比纯文本丰富。[3]目前,一些主流的大型的在线编辑类的Web平台,例如一些大型博客以及大型CMS,都能够很好的支持Markdown标记语言。
        2 相关技术
        2.1 Vue.js框架
        Vue.js(通常称作Vue)是一个用于构建用户界面的开源渐进式JavaScript框架。与其他重量级框架不同的是,Vue遵循自底向顶增量开发的设计模式,Vue的核心库只关注视图层,它不仅易于上手,还便于与第三方库或既有项目进行整合。此外,Vue是一个功能强大
的Web应用程序框架,能够为高级单页应用程序提供支持。[4]
        2.2 响应式设计
        响应式网页自身会根据用户行为和设备环境(系统平台、屏幕尺寸、屏幕方向等)进行相应的响应和调整,以达到最优体验。由各方面的具体实践,从而总结出响应式开发的基本要领,如弹性布局、响应式媒体、CSS媒体查询等,都能有效的提升用户体验度,无论用户使用笔记本电脑或平板电脑,页面会根据分辨率自动适应展示最优效果。总而言之,响应式页面应该有自动响应用户的设备环境的能力。
        响应式网页设计可以做到多终端兼容,而不是为每一个终端做一个特定版本,避免开发上的资源浪费,提高开发效率。
        3 插件功能结构图
        3.1 结构分析
        本插件主要拥有四大块:
        (1)Markdown文本渲染,拓展Markdown基础语法,丰富编辑操作。
        (2)快捷编辑工具栏开发,支持键盘快捷键与鼠标点击按钮编辑操作
        (3)功能性工具栏开发,支持阅读模式、单栏编辑、标题导航等个性化功能。
        (4)插件响应式,多终端自适应。
        其中上图所示解析器采用Markdown-it,它在初始化的时候需要做一些个性化定制,并装配语法拓展。遵循模块化的思想,将Markdown-it的初始化单独放入Markdown.js中,并利用export关键词将其对外开放。
        通过初始化与装配Markdoen-it实现对Markdown文本的渲染以及语法的拓展,核心代码如下:
        var markdown = require(markdown-it)({
        html: true, // Enable HTML tags in source
        xhtmlOut: true, // Use /
        breaks: true, // Convert \\n
        langPrefix: language-markdown, // CSS
        linkify: false, // 自动识别url
        typographer: true,
        quotes:“”‘’
        });
        export default markdown
        3.2 单栏实时编辑模式
        传统的Markdown编辑器都是采用左右分栏式设计,根据左侧Markdown文本实时渲染右侧Html样式。但是不乏有些比较成熟的编辑器支持单栏目编辑,将Markdown与Html相结合,实时渲染Markdown文本,这样虽然增加了逻辑复杂性,但提升的用户体验度,本设计采用此种设计方式,实现实时渲染模式。
        单栏目实时编辑的核心在于需要把Html文本反编译为Markdown文本,将相关逻辑处理放入to-Markdown.js中,当用户开启单栏目编辑的时候,原始双栏编辑框会被隐藏,取而代之的是一个可编辑的div,因为div能够实时渲染样式,此时每次触发TAB键编译的时候,to-Markdown.js会将div中的Html代码反编译为Markdown文本。如下对上角标的渲染示例:
        // 上角标
        const coverterSup = {
        filter:sup,
        replacement:function(content){
        return ^ + content + ^;
        }
        }
        4 API设计
        4.1 插件引入方式
        插件化的软件要做到能够方便开发者使用,拥有多元化接入方式、简洁的接入步骤。本插件在详细设计阶段分析了多种接入方式,最终选择借助webpack进行打包,通过NPM进行发布进行发布,这样,最大限度的方便了开发者引入插件。
        4.2 @event事件响应
        当用户触发某些事件,如:输入文本、点击阅读模式、点击保存等,插件都会以回调函数的形式通知给开发者,方便开发者做进一步处理。预定义@event事件如下所示:
        预定义@event事件:
react router 和vue router        name 方法名params 参数describe 描述
        changeString:value,String:reder编辑区发生变化的回调事件
        saveString:value,String:rederctrl + s 的回调事件
        ……
        5 结语
        本文基于Vue.js框架,遵循插件化开发原则,设计并实现了一套Markdown标记语言的Web插件,具有结构清晰、可移植性强、API简明、与宿主程序低耦合等特点。并在普通文本编辑器功能的基础上,拓展了Markdown的语法规则,支持表情、数学公式等,提供单双栏编辑、实时预览、沉浸式阅读、标题导航等个性化功能,且所有功能允许热插拔式接入插件,实现插件内部的解耦。
        参考文献:
        [1]朱二华.基于Vue.js的Web前端应用研究[J].科技与创新,2017(20):119-121.
        [2]王伟.标记语言及HTML和XML的比较分析[J].现代图书情报技术,2000,16(5):22-24.
        [3]胡亚明.基于标记语言的论文写作辅助系统[J].广东化工,2017,44(4):81.
        [4]麦冬,陈涛,梁宗湾.轻量级响应式框架Vue.js应用分析[J].信息与电脑(理论版),2017(7):58-59.
        作者简介:王辰(1988-),助教,研究方向:移动信息化。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。