用Vue+TypeScript项目配置实战

互联网 20-6-12
下面由js教程栏目给大家介绍如何用Vue+TypeScript项目配置实战,希望对需要的朋友有所帮助!

用Vue+TypeScript项目配置实战

项目搭建

通过脚手架搭建

1. 通过Vue CLI 3 创建vue项目

vue create vue-typescript // 在此选择typescript支持 ? Check the features needed for your project: () Babel () TypeScript ( ) Progressive Web App (PWA) Support () Router () Vuex >() CSS Pre-processors () Linter / Formatter ( ) Unit Testing ( ) E2E Testing 我是08年出道的高级前端架构师,有问题或者交流经验可以进我的扣扣裙 519293536 我都会尽力帮大家哦
// 引入 vue-class-component 插件 // 以下大概是我的选择 ? Use class-style component syntax? (Y/n) y ? Use Babel alongside TypeScript (required for modern mode, auto-detected polyfills, transpiling JSX)? Yes ? Use history mode for router? (Requires proper server setup for index fallback in production) Yes ? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Sass/SCSS (with node-sass) ? Pick a linter / formatter config: Prettier ? Pick additional lint features: Lint on save ? Where do you prefer placing config for Babel, ESLint, etc.? In dedicated config files ? Save this as a preset for future projects? (y/N) n

相关推荐:《js高级教程

2. 启动项目

yarn run serve

能跑起来吗,能跑就是好项目

3.项目配置

此时其实脚手架已经帮我们配置好了大多数的配置,但还是需要熟悉一下配置。

tsconfig.json

在项目根目录下创建tsconfig.json。

{   // 编译选项   "compilerOptions": {     // 输出目录     "outDir": "./output",     // 是否包含可以用于 debug 的 sourceMap     "sourceMap": true,     // 以严格模式解析     "strict": true,     // 采用的模块系统     "module": "esnext",     // 如何处理模块     "moduleResolution": "node",     // 编译输出目标 ES 版本     "target": "es5",     // 允许从没有设置默认导出的模块中默认导入     "allowSyntheticDefaultImports": true,     // 将每个文件作为单独的模块     "isolatedModules": false,     // 启用装饰器     "experimentalDecorators": true,     // 启用设计类型元数据(用于反射)     "emitDecoratorMetadata": true,     // 在表达式和声明上有隐含的any类型时报错     "noImplicitAny": false,     // 不是函数的所有返回路径都有返回值时报错。     "noImplicitReturns": true,     // 从 tslib 导入外部帮助库: 比如__extends,__rest等     "importHelpers": true,     // 编译过程中打印文件名     "listFiles": true,     // 移除注释     "removeComments": true,     "suppressImplicitAnyIndexErrors": true,     // 允许编译javascript文件     "allowJs": true,     // 解析非相对模块名的基准目录     "baseUrl": "./",     // 指定特殊模块的路径     "paths": {       "jquery": [         "node_modules/jquery/dist/jquery"       ]     },     // 编译过程中需要引入的库文件的列表     "lib": [       "dom",       "es2015",       "es2015.promise"     ]   } }

tslint.json

在根路径下创建tslint.json文件,就是 引入 ts 的 standard 规范。

如果已经引入了eslint的配置文件,这一步其实也可以不做。

{   "extends": "tslint-config-standard",   "globals": {     "require": true   } }

复制代码

附上一个脚手架自动生成的eslint的默认配置 eslintrc.js。

module.exports = {   root: true,   env: {     node: true   },   extends: [     "plugin:vue/essential",     "eslint:recommended",     "@vue/typescript/recommended",     "@vue/prettier",     "@vue/prettier/@typescript-eslint"   ],   parserOptions: {     ecmaVersion: 2020   },   rules: {     "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",     "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off"   } };

4.支持ES6 / ES7

在 tsconfig.json中,添加对es6 / es7的支持,更多的配置请见tsconfig - 编译选项。

"lib": [     "dom",     "es5",     "es6",     "es7",     "es2015.promise" ]

5.配置Vuex

首先当然是先安装依赖啦。

yarn add vuex vuex-class

复制代码

vuex:在 vue 中集中管理应用状态

vuex-class :在 vue-class-component 写法中 绑定 vuex。

引用了vuex-class之后还是和原来的写法有点儿区别的。

vuex store 中该怎么写,还怎么写,引用的时候如下:

import { Component, Prop, Vue } from "vue-property-decorator"; import { State, Getter, Action, Mutation, namespace } from "vuex-class"; // 声明使用的是哪个模块 const commonModule = namespace("common"); @Component export default class HelloWorld extends Vue {   @Prop() private msg!: string;   // 获取vuex中的数据   @commonModule.State("token") token!: string;   @commonModule.Getter("getToken") getToken!: string;   @commonModule.Action("setToken") actionSetToken: (arg0: string) => void;   @commonModule.Mutation("setToken") mutationSetToken: unknown;   // @State token   // @Getter("token") getterToken;   // @Action("token") actionToken;   // @Mutation("token") mutationToken;   created() {     this.actionSetToken("123");     alert(this.token);   } }

6.支持 vue mixin 函数

在src下新建mixins目录,根据业务复用模块划分结构。

在使用Vue进行开发时我们经常要用到混合,结合TypeScript之后一般有两种mixins的方法。

一种是vue-property-decorator提供的

// 定义 routerMixins.ts文件 // mixin router 公共方法 import Vue from 'vue' import Component from 'vue-class-component' @Component export default class myMixins extends Vue {   /**    * @author: WangXinYu    * @describe: 浏览器后退事件    * @param: {}    * @return:    **/   goBack() {     this.$router.go(-1)   }   /**    * @author: WangXinYu    * @describe: test    * @param: {}    * @return:    **/   routerTest() {     console.log('are you ok?')   } }
// 引入 mixin import { Component, Prop, Vue, Mixins } from 'vue-property-decorator' import routerMixins from '@/mixins/router' @Component export default class HelloWorld extends Mixins(routerMixins) {   created() {     this.routerTest()   } }

第二种是在@Component中混入。

// mixins.ts import { Vue, Component } from 'vue-property-decorator'; declare module 'vue/types/vue' {     interface Vue {         value: string;     } } @Component export default class myMixins extends Vue {     value: string = 'Hello' }
// 混入 import { Vue, Component, Prop } from 'vue-property-decorator'; import myMixins from '@/mixins/myMixins'; @Component({     mixins: [myMixins] }) export default class myComponent extends Vue{     created(){         console.log(this.value) // => Hello     } }

都会了吗?如果不懂 ,记住我 。我是08年出道的高级前端架构师,有问题或者交流经验可以进我的扣扣裙 519293536 我都会尽力帮大家哦

本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

(未完待续...)

以上就是用Vue+TypeScript项目配置实战的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: TypeScript
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:浏览器的事件循环

相关资讯