博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue、Typescript 的项目实践
阅读量:6601 次
发布时间:2019-06-24

本文共 3263 字,大约阅读时间需要 10 分钟。

安装

  1. 创建vue项目文件,保留vue-router,

    vue init webpack Vue-TypeScript-Template

  2. 安装typescript :

    npm install --save-dev typescript ts-loader

  3. 安装tslint静态语法检查:

    npm i --save-dev tslint tslint-loader tslint-config-standard

  4. 运行,访问host测试:

    npm run dev

配置

  1. build/webpack.base.conf.js中的:
entry: {    app: './src/main.js'}复制代码

改为:

entry: {    app: './src/main.ts'}复制代码

src/index.js文件名也改成相应的src/index.ts

  1. build/webpack.base.conf.js中的resolve.extensions改为:
resolve: {    extensions: ['.ts', '.js', '.vue', '.json'],    alias: {        'vue$': 'vue/dist/vue.esm.js',        '@': resolve('src'),    }}复制代码
  1. 配置ts-loaderbuild/webpack.base.conf.js中的module.rules添加:
{    test: /\.tsx?$/,    use: [{        loader: 'babel-loader'      }, {        loader: 'ts-loader',        options: {          appendTsSuffixTo: [/\.vue$/]        }      }    ],    exclude: /node_modules/}复制代码
  1. 项目根目录下添加tsconfig.json文件,文件内容为:
{  "compilerOptions": {    "strict": true,    "module": "es2015",    "moduleResolution": "node",    "target": "es6",    "allowSyntheticDefaultImports": true,    "lib": [      "es2017",      "dom"    ]  },  "include": [    "./src/*"  ]}复制代码
  1. 运行测试npm run dev,如果发现控制台报这个错误时:
error  in ./src/main.tsModule build failed: TypeError: Cannot read property 'afterCompile' of undefined    at successfulTypeScriptInstance (/Users/baidu/Github/Vue-TypeScript-Template/node_modules/ts-loader/dist/instances.js:147:28)    at Object.getTypeScriptInstance (/Users/baidu/Github/Vue-TypeScript-Template/node_modules/ts-loader/dist/instances.js:48:12)    at Object.loader (/Users/baidu/Github/Vue-TypeScript-Template/node_modules/ts-loader/dist/index.js:16:41) @ multi (webpack)-dev-server/client?http://localhost:8080 webpack/hot/dev-server ./src/main.ts复制代码

,修改package.json中版本"ts-loader": "3.5.0",重新安装解决,不过这也是个临时的解决方式,后续等官方兼容解决后记得要升级。

  1. 配置tslint,在build/webpack.base.conf.js中的module.rules添加:
{    test: /\.tsx?$/,  // tslint 代码检查, 打开注释可用    loader: 'tslint-loader',    enforce: 'pre',    include: [resolve('src'), resolve('test')],    exclude: /node_modules/}复制代码
  1. build/vue-loader.conf.js文件中修改为:
// ...const merge = require('webpack-merge')module.exports = {  loaders: merge(utils.cssLoaders({    sourceMap: sourceMapEnabled,    extract: isProduction  }), {    ts: ['ts-loader', 'tslint-loader']  }),  // ...}复制代码
  1. src/文件夹下添加tslint.json文件,文件内容为:
{  "extends": "tslint:recommended",  "globals": {    "require": true  },  "rulesDirectory": ["src/"],  "rules": {    "no-consecutive-blank-lines": false,    "object-literal-sort-keys": false,    "no-trailing-whitespace": false,    "no-unused-expression": [true, "allow-new"]  }}复制代码

代码修改

  1. src/文件下创建vue-shims.d.ts文件,内容为:
declare module "*.vue" {  import Vue from "vue";  export default Vue;}复制代码
  1. src/文件中所有的.js改为.ts

  2. src/App.vue文件改为:

复制代码

定义组件的时候要先在<srcipt>标签里添加<script lang="ts">,按照这种写法创建类Vue.extend({})

  1. 修改所有的对*.vue文件的引用:
import App from "./App";import HelloWorld from "../components/HelloWorld";复制代码

改为:

import App from "./App.vue";import HelloWorld from "@/components/HelloWorld.vue";复制代码

所有的引用*.vue 结尾的都要写全*.vue

运行测试

运行npm run dev 测试效果

总结

以上的配置过程,是基于vue官方脚手架创建vue项目后,在项目中逐步添加typescript、ts-loader、tslint的过程,并且运行成功。后续会把vuex加入进来,再将vue-class-component、vuex-class、vue-property-decorator等整合到项目中,进一步做项目实践。

Github

项目参考地址:

转载于:https://juejin.im/post/5a9d6141518825556b6c445e

你可能感兴趣的文章
简介MySQL Online DDL
查看>>
java B2B2C 多级分销多租户电子商城系统-单点登录(SSO)简介 ...
查看>>
干货!这才是学习Python的正确打开方式!
查看>>
通过Gradle自动实现Android组件化模块构建
查看>>
审美能力很差能学习UI设计吗?
查看>>
使用 HttpRequester 更方便的发起 HTTP 请求
查看>>
李彦宏谈“智能网联汽车发展三大境界”,最后一公里自动驾驶更早到来
查看>>
平安科技有新招:游戏防沉迷更彻底
查看>>
Fragment初学7——Fragment在Android开发中的应用1
查看>>
Windows打开Ubuntu虚拟机时,弹出“内部错误”
查看>>
阿里云账号注册流程方法(图文教程)
查看>>
小企业如何选择阿里云服务器
查看>>
【深度分析】汽车零部件供应商管理+采购体系
查看>>
简单易懂------强化学习理论与实战(一)
查看>>
从 JavaScript 到 TypeScript
查看>>
iOS app版本更新CheckVersion_Swift
查看>>
仅存活2年,英特尔停止研发模块化计算平台“计算卡”
查看>>
百度没想到
查看>>
“互联网汽车”又添新成员,上汽斯柯达接入斑马智行互联系统
查看>>
金融稳定委员会:金融科技信贷增长迅速却难被定义,监管层束手无策
查看>>