vue-cli3构建TS项目(基础篇)
概述:
template 和 style 跟以前的写法保持一致,只有 script 的变化
Vue三个TS封装库
vue-class-component
- vue-class-component 对 Vue 组件进行了一层封装,让 Vue 组件语法在结合了 TypeScript 语法之后更加扁平化
- vue-property-decorator 是在 vue-class-component 上增强了更多的结合 Vue 特性的装饰器,新增了这 7 个装饰器
1.通过vue-cli3生成项目
vue create xxx
注:安装时选择TypeScript
之后,回自动安装vue-class-component,vue-property-decorator,具体见package.json
文件
vue-cli3脚手架生成项目目录说明
│ .browserslistrc
│ .gitignore
│ .postcssrc.js // postcss 配置
│ babel.config.js
│ package.json // 依赖
│ README.md // 项目 readme
│ tsconfig.json // ts 配置
│ tslint.json // tslint 配置
│ vue.config.js // webpack 配置(~自己新建~)
│ yarn.lock
│
├─public // 静态页面
│ │—favicon.ico
│ │—index.html
│
├─src // 主目录
│ ├─assets // 静态资源
│ │ logo.png
│ │
│ ├─components
│ │ HelloWorld.vue
│ │
│ │─views // 页面
│ │ About.vue
│ │ Home.vue
│ │
│ │ App.vue // 页面主入口
│ │
│ │ main.ts // 脚本主入口
│ │
│ ├─router // 路由配置
│ │ index.ts
│ │
│ │ registerServiceWorker.ts // PWA 配置
│ │
│ │ shims-tsx.d.ts
│ │ shims-vue.d.ts
│ │
│ ├─filters // 过滤(~自己新建~)
│ ├─lib // 全局插件(~自己新建~)
│ │
│ │
│ ├─store // vuex 配置
│ │ index.ts
│ │
│ ├─typings // 全局注入(~自己新建~)
│ │
│ ├─utils // 工具方法(axios封装,全局方法等)(~自己新建~)
│
│
└─tests // 测试用例
├─e2e
│ ├─plugins
│ │ index.js
│ │
│ ├─specs
│ │ test.js
│ │
│ └─support
│ commands.js
│ index.js
│
└─unit
HelloWorld.spec.ts
shims-vue.d.ts文件说明
注:由于 TypeScript 默认并不支持 *.vue
后缀的文件,所以在 vue 项目中引入的时候需要创建一个shims-vue.d.ts
文件,放在项目项目对应使用目录下,例如 src/shims-vue.d.ts
,用来支持*.vue
后缀的文件;
2.tslint配置 “rules”: {…}
// 关闭console
"no-console": [true, "log", "dir", "table"]
// tslint的函数前后空格:
"space-before-function-paren": ["error", {
"anonymous": "always",
"named": "always",
"asyncArrow": "always"
}]
// tslint分号的配置:
"semicolon": [true, "never"]
3.路由改造(全局路由拦截,用户登陆验证等),修改
App.vue
文件,如下
// App.vue 文件
import router from '@/router/index'
router.beforeEach((to: any, from: any, next: any) => {
if (to.name === 'login') {
next({name: 'home/index'})
} else {
next()
}
})
例如:
4.
*.vue
文件改造
注:template 和 style 跟以前的写法保持一致,只有 script 的变化
5.父组件传值给子组件(使用
vue-property-decorator
装饰器@Prop
)
6.子组件传值给父组件(使用
vue-property-decorator
装饰器@Emit
)
注:@Emit其他写法
7.侦听器watch(使用
vue-property-decorator
装饰器@Watch
)
注:handler
,immediate
和deep
- 如下写的函数其实就是在写这个
handler
方法里面的;
watch: {
firstName (val) {
this.fullName = val + ' ' + this.lastName
}
}
-
当值第一次绑定的时候,不会执行监听函数,只有值发生改变才会执行。如果我们需要在最初绑定值的时候也执行函数,则就需要用到
immediate
属性为true。 -
当需要监听一个对象的改变时,普通的watch方法无法监听到对象内部属性的改变,只有data中的数据才能够监听到变化,此时就需要
deep
属性对对象进行深度监听。
更多推荐
所有评论(0)