Vue+Typescript+Axios+Less+Vuex项目环境的起步搭建

一、搭建vue-cli脚手架
这个过程就不详细说明了不清楚的可以翻阅我以前的有关vue脚手架的文章
二、安装Typescript相关依赖
npm i vue-class-component vue-property-decorator --save
npm i ts-loader typescript tslint tslint-loader tslint-config-standard --save-dev

  • vue-class-component:强化 Vue 组件,使用 TypeScript/装饰器 增强 Vue 组件

  • vue-property-decorator:在 vue-class-component 上增强更多的结合 Vue 特性的装饰器如下:
    @Emit
    @Inject
    @Model
    @Prop
    @Provide
    @Watch
    @Component (从 vue-class-component 继承)

  • ts-loader:TypeScript 为 Webpack 提供了 ts-loader,其实就是为了让webpack识别 .ts .tsx文件

  • tslint-loadertslint:我想你也会在.ts .tsx文件 约束代码格式(作用等同于eslint)

  • tslint-config-standard:tslint 配置 standard风格的约束

三、配置webpack
(1)找到文件build/webpack.base.conf.js
找到entry.app 将main.js 改成 main.ts, 顺便把项目文件中的main.js也改成main.ts, 里面内容保持不变
(2)找到resolve.extensions 里面加上.ts 后缀 (是为了之后引入.ts的时候不写后缀)

resolve: {
	    extensions: ['.js', '.vue', '.json', '.ts'],
	    alias: {
	      '@': resolve('src')
	    }
 }

(3)找到module.rules 添加webpack对.ts的解析

module: {
  rules: [
    {
      test: /\.(js|vue)$/,
      loader: 'eslint-loader',
      enforce: 'pre',
      include: [resolve('src'), resolve('test')],
      options: {
        formatter: require('eslint-friendly-formatter')
      }
    },
// 开始
    {
      test: /\.ts$/,
      exclude: /node_modules/,
      enforce: 'pre',
      loader: 'tslint-loader'
    },
    {
      test: /\.tsx?$/,
      loader: 'ts-loader',
      exclude: /node_modules/,
      options: {
        appendTsSuffixTo: [/\.vue$/],
      }
    },
// 复制从开始以上的即可
  }
}

四、添加配置 tsconfig.json 和 tslint.json文件
(1)在根路径下创建tsconfig.json文件,以下是简单的配置,详细的可访问http://json.schemastore.org/tsconfig

{
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules"
  ],
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "experimentalDecorators": true,
    "allowJs": true,
    "module": "esnext",
    "target": "es5",
    "moduleResolution": "node",
    "isolatedModules": true,
    "lib": [
      "dom",
      "es5",
      "es2015.promise",
      "scripthost"
    ],
    "sourceMap": true,
    "pretty": true,
    "strictFunctionTypes": false,
    "importHelpers": true
  }
}

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

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

五、识别 .vue
由于 TypeScript 默认并不支持 *.vue 后缀的文件,所以在 vue 项目中引入的时候需要创建一个 vue-shim.d.ts 文件,放在项目项目对应使用目录下,例如 src/vue-shim.d.ts

declare module "*.vue" {
  import Vue from "vue";
  export default Vue;
}

注意:在引入组件的使用加.vue 因为TypeScript 默认只识别 *.ts 文件,不识别 *.vue 文件:,例如import Component from 'components/component.vue'
六、改造.vue 文件
<template></template>和<style></style>内的内容和vue一样,主要修改<script lang="ts"></script>内的代码格式, 注意:在script 标签上加上 lang=“ts”, 意思是让webpack将这段代码识别为typescript 而非javascript,简单的代码格式如下,注意: @Component必须有没有子组件可以为空
(1)parent.vue

<script lang="ts">
    import Vue from 'vue';
    import Component from 'vue-class-component';
    import Child from '../../components/Child.vue';
    @Component({
        components: {
            Child
        },  
    })
    export default class parent extends Vue {
        num = 0;
        created(){
           
        }
    }
</script>

(2)child.vue(子组件获取父组件的数据@Prop)

  import Vue from 'vue';
  import Component from 'vue-class-component';
  import { Prop } from 'vue-property-decorator'

   @Component
   export class Child extends Vue {
	     @Prop()
	     num: number
	    created(){
            console.log(this.num);
        }
   }

六、使用less
(1)安装 npm install less -s
(2) 找到文件build/webpack.base.conf.js里的module.rules 添加webpack对.ts的解析

  {
        test: /\.less$/,
        loader: "style-loader!css-loader!less-loader"
   },

七、使用Axios
在常规的安装了axios发现报错,后来百度换了一种思路就可以了
因为在ts中,不识别vue下面挂$axios,不可以挂在原型链上
(1)安装axios和vue-axios npm install axios vue-axios
(2)在main.ts中引入全局使用

	import axios from 'axios'
	import Vueaxios from 'vue-axios'
	Vue.use(Vueaxios, axios)

(3)在组件中直接this.axios.get/post直接使用

八、使用Vuex
今天先到这里改天继续完善,欢迎指正交流

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

swagLi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值