VueCli3+TypeScript3项目显示Markdown内容

简介: VueCli3+TypeScript3项目显示Markdown内容

版本记录

vue: v2.6.10@vue/cli-plugin-babel: v3.12.0typescript: v3.4.3showdown: v1.9.1

安装 showdown

npm install showdown -D
npm install @types/showdown -D

基础使用

在显示 Markdown 内容的 Component 中引入 showdown

import showdown from 'showdown'
<template>
  <div>
    <div v-html="html" class="center"></div>
  </div>
</template>
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator'
import showdown from 'showdown'
@Component({
  components: {}
})
export default class Showdown extends Vue {
  private html: string = ''
  private mounted() {
    const converter = new showdown.Converter()
    const markdownContent: string = '# Markdown Title `showdown.js`'
    this.html = converter.makeHtml(markdownContent)
  }
}
</script>

到这一步应该就能看到 Markdown 基本内容显示了,如下图效果

image.png

引入项目中的 md 文件并显示

这里引入项目根目录下的 README.md 文件并显示,使用 import 引入 README.md

import * as readmeContent from '../../../README.md'

控制台报错,提示 Cannot find module '../../../README.md' or its corresponding type declarations

image.png

文件路径路径是正确的,缺少类型声明导致,添加类型声明即可。在 src 目录下的 types.d.ts 文件中添加 declare module "*.md", 如下图效果

image.png

这时候 md 文件引入就没问题了,使用 console.info(readmeContent) 输出看下内容如何,这时候提示模块解析失败

image.png

这个情况需要使用 loader 来处理,分别安装配置 html-loadermarkdown-loader

npm install html-loader markdown-loader -D 

在 vue.config.js 中配置这两个 loader

module.exports = {
  publicPath: process.env.NODE_ENV === 'production' ?
    '/vue-vuetify-admin/' : '/',
  outputDir: 'docs',
  // configureWebpack: {
  //   devtool: 'source-map'
  // },
  chainWebpack: config => {
    config.module
      .rule('md')
      .test(/\.md/)
      .use('html-loader')
      .loader('html-loader')
      .end()
      .use('markdown-loader')
      .loader('markdown-loader')
      .end()
  }
}

配置完以后,需要重新执行 npm run dev 运行服务,操作都OK的话这时候页面的控制台就输出了 README.md 的内容,如下图效果

image.png

image.png

在页面中显示 README.md 文件中的内容,调整 makeHTML() 的参数为文件内容参数即可

image.png

注意:<sytle> 标签中没有 scoped 属性, 添加 scoped 属性后页面样式设置会无效

项目链接

github.com/gywgithub/v…

相关文章
|
6天前
|
前端开发 JavaScript 测试技术
从零开始搭建react+typescript+antd+redux+less+vw自适应项目
从零开始搭建react+typescript+antd+redux+less+vw自适应项目
65 0
|
4天前
|
JavaScript 前端开发 IDE
TypeScript在前端项目的渐进式采用策略
该文介绍了渐进式采用TypeScript在前端项目中的策略。首先,通过将JS文件扩展名改为TS并添加类型注解,如在`utils.js`中添加类型。接着,配置`tsconfig.json`,包括目标版本、模块系统、输出目录等。高级配置涉及路径别名、JSON导入、库文件等。然后,集成TypeScript到构建流程,如Webpack,安装`ts-loader`并调整配置。利用类型定义,包括安装第三方库的类型定义包,自定义类型定义或使用社区定义。最后,逐步迁移其他模块至TypeScript,强化类型检查,并确保IDE支持。
9 0
|
6天前
|
监控 JavaScript 前端开发
【JavaScript与TypeScript技术专栏】TypeScript在JavaScript项目中的渐进式采用
【4月更文挑战第30天】TypeScript是JavaScript的超集,引入静态类型、接口等特性,提升代码安全性和可读性。在JavaScript项目中采用TypeScript可享受类型安全、社区支持及优秀工具集成等优势。渐进式采用策略包括评估项目现状、逐步引入新旧模块、编写类型定义文件、配置编译选项和编写测试用例,以提高项目质量和效率。
|
6天前
|
传感器 JavaScript 前端开发
【TypeScript技术专栏】TypeScript在大型项目中的实践与挑战
【4月更文挑战第30天】TypeScript在大型前端项目中日益流行,以其类型系统和ES6+支持提升代码安全与维护性。然而,采用 TypeScript 面临学习曲线、构建时间增加及类型推断挑战。通过最佳实践和成熟工具链(如 tsc、tslint 和 Visual Studio Code)可克服这些问题。案例如Angular、Basecamp和Slack已成功应用TypeScript。掌握TypeScript对提升开发者技能和市场竞争力至关重要。
|
6天前
|
JavaScript 前端开发 开发工具
【TypeScript 技术专栏】使用 TypeScript 重构 JavaScript 项目
【4月更文挑战第30天】TypeScript 在前端开发中日益流行,因其静态类型检查、增强代码可读性和更好的工具支持。本文讨论如何用 TypeScript 重构 JavaScript 项目,包括评估项目、安装 TypeScript 工具、逐步添加类型注解、处理兼容性问题以及解决重构中遇到的问题。重构后,代码质量、团队协作和可维护性均得到提升。通过实例分析,文章为 TypeScript 重构提供指导,助力构建更可靠的前端应用。
|
6天前
|
JavaScript 前端开发 IDE
TypeScript在大型前端项目中的价值与实践策略
【4月更文挑战第7天】本文探讨了TypeScript在大型前端项目中的价值和实践策略。 TypeScript通过静态类型检查、代码提示、接口与泛型提高代码质量和开发效率。在大型项目中,可采用逐步迁移策略,制定类型规范,利用IDE特性,并维护类型定义文件。通过CI/CD和培训分享,团队能充分发挥TypeScript优势,提升项目可维护性、可扩展性和开发效率。
24 0
|
6天前
|
前端开发 JavaScript 测试技术
Vue3+Vite+TypeScript常用项目模块详解(下)
现在无论gitee还是github,越来越多的前端开源项目采用Vue3+Vite+TypeScript+Pinia+Elementplus+axios+Sass(css预编译语言等),其中还有各种项目配置比如eslint 校验代码工具配置等等,而我们想要进行前端项目的二次开发,就必须了解会使用这些东西,所以作者写了这篇文章进行简单的介绍。
|
6天前
|
JavaScript 前端开发 API
Vue3+Vite+TypeScript常用项目模块详解
现在无论gitee还是github,越来越多的前端开源项目采用Vue3+Vite+TypeScript+Pinia+Elementplus+axios+Sass(css预编译语言等),其中还有各种项目配置比如eslint 校验代码工具配置等等,而我们想要进行前端项目的二次开发,就必须了解会使用这些东西,所以作者写了这篇文章进行简单的介绍。
Vue3+Vite+TypeScript常用项目模块详解
|
6天前
|
JavaScript
Vega-Embed 在 Vue Typescript 项目中引入报错
Vega-Embed 在 Vue Typescript 项目中引入报错
|
6天前
|
JavaScript
Vue TypeScript 项目引导页功能实现
Vue TypeScript 项目引导页功能实现