目录说明
- public 放静态文件,如index.html
- assets 放图片,如SVG
- components 放组件
- router 放路由
- store 放全局数据。如index.ts
- views 放页面视图,如首页
- registerServisWorker.ts 放PWA相关文件
- shims-tsx.d.ts及shims-vue.d.ts 放TypeScript声明
- tests 单元测试
- tsconfi.js TS配置
- vue.config.js webpack配置
- main.ts 文件入口
- App.vue 主组件
webStorm常用知识
- 模板生成:setting/File and Code Template/vue……
- ts或js内的@表示src:如:import x from' @/……'
- css内~@表示src:如:@import "~@/……"需要注意的是,在css内使用需要在设置内设置一下:setting/webpack/webpack configuration file/项目名/@vue/cli-service/webpackconfig.js/ ok\
用到的知识点
vue-Router
- 确定url:如:#/money
- 配置4个路径:router/index.ts内配置path和components。其中路径是“从上到下”进行匹配的,path:'*'表示匹配所有
- 在主组件内引入,确定显示位置。链接到money页面,其中样式active-class="selected"可以被选中时高亮。
component
- vue组件的三种方式:
- ① 用js对象:
export default { data:f()/{}, props:[],mixins:[], components:{}, methoda:f(), created:f()…… } - ②用js类:
export default class XXX extends Vue{ XXX = 'hi' } - ③用ts类:
export default class XXX extends Vue{ XXX:string = 'hi' }
- vue组件的写法
-
全局注册:
//全局注册的行为必须在根Vue实例创建之前发生 Vue.component('my-component-name', { /* <template>你好</template>... */ }) 或 Vue.component('Nav', Nav) -
局部注册:
<script lang=ts> import Tags from '@/路径' @Component({ components: {Tags, FormItem……}, }) </script>
prop
-
外部属性,用来接收其他组件的属性,从而在自身组件上访问。
-
js写法:
new Vue({ prop:[]/{} }) -
ts写法:
@Component export default class XXX extends Vue{ @prop(String) readonly propA:string }
slot
- 作为组件模板之中的内容分发插槽,用于向一个组件传递内容,元素自身将被替换。
- 属性:name 用于命名插槽
- 用法:只需要在需要接收内容的地方加入插槽。
computed
-
js写法
new Vue({ computed:{ fullName:f(){} } }) -
ts写法:
get tagList(){ return……} -
用于多个属性的变化影响一个属性,拥有缓存数据,且会默认走缓存,计算属性是基于它们的响应式依赖进行缓存的,也就是基于data声明过,或者父组件传递过来的props中的数据进行计算的,只有依赖的数据发生了变化才会重新计算。computed中的函数所依赖的数据没有发生变化,那么调用当前的函数的时候会从缓存中读取。computed不支持异步。
watch
- ts写法:
@watch('question')
onQuestionChanged(newQuestion,oldQuestion){}
- js写法:
watch:{ question:function(newQuestion,oldQuestion){} } - 用于一对多,是异步的,不支持缓存。当监听的数据发生变化时会立即触发一个回调函数。watch有两个属性:immediate和deep。
.sync
- .sync修饰符用于子组件和父组件双向绑定时。当子组件的prop需要发生变化,需要通知父组件进行更新,子组件不能更改父组件的属性值。
- .sync
<Title v-bind:title.sync='doc.title' /> 等价于: //子组件触发一个事件: this.$emit('updata:title',newTitle) //父组件监听该事件,并根据需要更新一个本地的数据property <Title v-bind:title='doc.title' v-on:updata:title='doc.title=$event' />
表驱动编程
dataSource:[
{'1':'zhangsan'},
{'2':'lisi'},
{'3':'xiaoming'}
]
<div v-for="(item,index )in dataSource" :key="index" >{{item[key]}} </div>