这篇文章将为大家详细讲解有关打印稿怎么在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已经集成了打印稿的配置。选择使用打印稿+使用组件类样式的语法选项创建工程。
创建后的工程目录如下:
//, 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函数(理论上类就是一个函数)。