打印稿怎么在Vue项目中使用

  介绍

这篇文章将为大家详细讲解有关打印稿怎么在Vue项目中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

<强> Webpack配置

配置Webpack对TS, TSX的支持,以便于我们在Vue项目中使用打印稿和TSX。

module.exports =, {   ,条目:& # 39;。/index.vue& # 39;   ,输出:{,文件名:& # 39;bundle.js& # 39;,},   ,解决:{   扩展才能:[& # 39;.ts& # 39;,, & # 39; .tsx& # 39;,, & # 39; .vue& # 39;,, & # 39; .vuex& # 39;】   },   ,模块:{   规则:,才能   ,,{,测试:/\ .vue/美元,装载机:,& # 39;vue-loader& # 39;,   ,,,选择:,{   ,,,加载器:,{   ,,,,ts:, & # 39; ts-loader& # 39;   ,,,,tsx:, & # 39; babel-loader ! ts-loader& # 39;   ,,,}   ,,,}   ,,},   ,,,{   ,,,测试:,/\ .ts/美元,,   ,,,装载机:,& # 39;ts-loader& # 39;,,   ,,,选择:,{,appendTsSuffixTo: [/TS/美元\ .vue],},,,,},   ,,,{   ,,,测试:,/\ .tsx/美元,,   ,,,装载机:,& # 39;babel-loader ! ts-loader& # 39;,,   ,,,选择:,{,   ,,,,appendTsxSuffixTo:, [/TSX \ .vue/美元),   ,,,},   ,,}   ,,)   ,}   }

在上面的配置中,vue文件中的TS内容将会使用ts-loader处理,而TSX内容将会按照ts-loader——祝辞babel-loader的顺序处理。

appendTsSuffixTo/appendTsxSuffixTo配置项的意思是说,从vue文件里面分离的脚本的TS, TSX(取决于& lt;脚本lang=皒xx"祝辞& lt;/script>)内容将会被加上TS或者TSX的后缀,然后交由ts-loader解析。

我在翻看了ts-loader上关于appendTsxSuffixTo的讨论发现,ts-loader貌似对文件后缀名称有很严格的限定,必须得是TS/TSX后缀,所以得在vue-loader提取& lt; script>中内容后,给其加上TS/TSX的后缀名,这样ts-loader才会去处理这部分的内容。

<强> ts-loader只对TSX做语法类型检查,真正的jsx——在渲染函数应该交由巴别塔处理。

所以我们还需要使用plugin-transform-vue-jsx来将vue jsx转换为真正的渲染函数。

//, babel.config.json   {   ,“presets": [“env"],   ,“plugins": [“transform-vue-jsx"]   }

同时,配置TS对tsx的处理为保护区,让其只对tsx做类型类型检查。

//, tsconfig.json   {   ,“compilerOptions": {   ,“jsx":,“preserve"   }

<强>使用vue cli 4。x

高版本的vue cli如4所示。vue + x已经集成了打印稿的配置。选择使用打印稿+使用组件类样式的语法选项创建工程。

创建后的工程目录如下:

打印稿怎么在vue项目中使用“> </p> <p>在src根目录下,有两个shims.xx.d。ts的类型声明文件。</p> <pre类=//, shims.vue.d.ts   declare  module “* .vue", {   ,import  Vue 得到“vue";   ,export  default  Vue;   } //, shims.jsx.d.ts   import  Vue, {, VNode },得到“vue";   declare  global  {   ,namespace  JSX  {//才能,tslint: disable  no-empty-interface   interface 才能Element  extends  VNode  {}//才能,tslint: disable  no-empty-interface   interface 才能ElementClass  extends  Vue  {}   interface 才能;IntrinsicElements  {   ,,(elem:字符串):,任何;   ,,}   ,}   }

它们是作什么用的呢?

shims.vue.d.ts给所有.vue文件导出的模块声明了类型为Vue,它可以帮助IDE判断.vue文件的类型。

shims.jsx.d。ts为JSX语法的全局命名空间,这是因为基于值的元素会简单的在它所在的作用域里按标识符查找。当在tsconfig内开启了JSX语法支持后,其会自动识别对应的.tsx结尾的文件,(也就是Vue单文件组件中& lt;脚本lang=皌sx"祝辞& lt;/script>的部分)可参考

官网tsx

<>强基本用法

在Vue 2。x中使用类的方式书写vue组件需要依靠vue-property-decorator来对vue类做转换。

& lt; script  lang=皌s"比;   import {,组件,道具,Vue },得到“vue-property-decorator";   export  default  class  extends  Vue  {   ,@Prop({,默认值:& # 39;default 味精# 39;}),private 味精!:,字符串;   ,名字!:字符串;   ,显示(){   console.log才能(“this.name",, this.name);   ,}   }   & lt;/script>

导出的类是经过Vue.extend之后的VueComponent函数(理论上类就是一个函数)。

打印稿怎么在Vue项目中使用