• Vue2.x 实例配置选项(全网最全)


    1. 官网:https://v2.cn.vuejs.org/v2/guide/components-slots.html
    2. <template>
    3. 1.指令
    4. v-if v-else 用 key 管理可复用的元素 注意我们不推荐在同一元素上使用 v-if 和 v-for
    5. v-show css的dispaly:none;
    6. v-for:遍历数组<li v-for="(item,index) in [1,2,3,4]" :key="index">{{ item }}</li>
    7. //也可以用 v-for 来遍历一个对象的 property 列如:<li v-for="(value, name, index) in object">{{ index }}{{ name }}{{ value }}</li>
    8. //为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key attribute(不要使用对象或数组之类的非基本类型值作为 v-for 的 key。请用字符串或数值类型的值。)
    9. //数组更新检测push() pop() shift() unshift() splice() sort() reverse()
    10. //当在组件上使用 v-for 时,key 现在是必须的。
    11. v-once
    12. v-html
    13. v-bind:简写:动态参数<a v-bind:[attributeName]="url"> ... </a> 例如,如果你的 Vue 实例有一个 data property attributeName,其值为 "href",data(){return{attributeName:'href'}}那么这个绑定将等价于<a v-bind:href="url"> ... </a>
    14. v-on: 事件处理 v-on:click='hanleClick' 简写 @click='hanleClick'
    15. //事件修饰符.stop .prevent .capture .self .once .passive
    16. //官方代码示例:
    17. <!-- 阻止单击事件继续传播 -->
    18. <a v-on:click.stop="doThis"></a>
    19. <!-- 提交事件不再重载页面 -->
    20. <form v-on:submit.prevent="onSubmit"></form>
    21. <!-- 修饰符可以串联 -->
    22. <a v-on:click.stop.prevent="doThat"></a>
    23. <!-- 只有修饰符 -->
    24. <form v-on:submit.prevent></form>
    25. <!-- 添加事件监听器时使用事件捕获模式 -->
    26. <!-- 即内部元素触发的事件先在此处理,然后才交由内部元素进行处理 -->
    27. <div v-on:click.capture="doThis">...</div>
    28. <!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
    29. <!-- 即事件不是从内部元素触发的 -->
    30. <div v-on:click.self="doThat">...</div>
    31. <!-- 点击事件将只会触发一次 -->
    32. <a v-on:click.once="doThis"></a>
    33. //Vue 还对应 addEventListener 中的 passive 选项提供了 .passive 修饰符。
    34. <!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 -->
    35. <!-- 而不会等待 `onScroll` 完成 -->
    36. <!-- 这其中包含 `event.preventDefault()` 的情况 -->
    37. <div v-on:scroll.passive="onScroll">...</div>
    38. 这个 .passive 修饰符尤其能够提升移动端的性能。不要把 .passive 和 .prevent 一起使用,因为 .prevent 将会被忽略,同时浏览器可能会向你展示一个警告。请记住,.passive 会告诉浏览器你不想阻止事件的默认行为。
    39. //按键修饰符
    40. <!-- 只有在 `key` 是 `Enter` 时调用 `vm.submit()` -->
    41. <input v-on:keyup.enter="submit">
    42. <input v-on:keyup.page-down="onPageDown">
    43. <input v-on:keyup.13="submit">
    44. 其他别名.enter .tab .delete (捕获“删除”和“退格”键) .esc.space.up.down.left.right
    45. 你还可以通过全局 config.keyCodes 对象自定义按键修饰符别名:
    46. //可以使用 `v-on:keyup.f1` Vue.config.keyCodes.f1 = 112
    47. //系统修饰键 .ctrl.alt.shift.meta
    48. //鼠标按钮修饰符.left .right .middle
    49. v-model:表单输入绑定 v-bind 和 v-on 的结合使用<input v-model='a' /> ==> <a v-bind:value='a' @input='inputChange'>
    50. //修饰符
    51. .lazy在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 。你可以添加 lazy 修饰符,从而转为在 (change或失去焦点或按回车时才更新)事件_之后_进行同步:
    52. <input type="text" v-model.lazy="message">
    53. .number: 将输入的值转换为Number类型
    54. .trim: 过滤掉输入的首尾空格
    55. //Class 与 Style 绑定 active:css样式表 可以接收一个对象或者数组
    56. <li v-for='(item,index) in [1,2,3,4]' :class="{ active: selectIndex == index }"></li>
    57. <li v-for='(item,index) in [1,2,3,4]' :class="[{ active: selectIndex == index }, {color:red;}]"></li>
    58. v-slot
    59. v-pre
    60. v-cloak
    61. //动态组件:
    62. //有的时候,在不同组件之间进行动态切换是非常有用的,比如在一个多标签的界面里
    63. <!-- 组件会在 `currentTabComponent` 改变时改变 -->
    64. <component v-bind:is="currentTabComponent"></component>
    65. <component @jump='addTab' :is="item.component"></component>//运维项目就用到了v-bind:is
    66. //组件名大小写
    67. 使用 kebab-case:my-component-name
    68. 使用 PascalCase:MyComponentName,首字母大写命名
    69. Prop 类型 单向数据流
    70. ['a','b']
    71. a: {
    72. type: Array,//[String,Number,Boolean,Array,Object,Date,Function,Symbol]中的一个或多个
    73. default: [],//数组
    74. require:true // 必填
    75. },
    76. props: {
    77. // 基础的类型检查 (`null` 和 `undefined` 会通过任何类型验证)
    78. propA: Number,
    79. // 多个可能的类型
    80. propB: [String, Number],
    81. // 必填的字符串
    82. propC: {
    83. type: String,
    84. required: true
    85. },
    86. // 带有默认值的数字
    87. propD: {
    88. type: Number,
    89. default: 100
    90. },
    91. // 带有默认值的对象
    92. propE: {
    93. type: Object,
    94. // 对象或数组默认值必须从一个工厂函数获取
    95. default: function () {
    96. return { message: 'hello' }
    97. }
    98. },
    99. // 自定义验证函数
    100. propF: {
    101. validator: function (value) {
    102. // 这个值必须匹配下列字符串中的一个
    103. return ['success', 'warning', 'danger'].includes(value)
    104. }
    105. }
    106. }
    107. //注意那些 prop 会在一个组件实例创建之前进行验证,所以实例的 property (如 data、computed 等) 在 default 或 validator 函数中是不可用的。
    108. //自定义事件
    109. this.$emit('myEvent')
    110. <my-component v-on:my-event="doSomething"></my-component>
    111. 将原生事件绑定到组件:你可能有很多次想要在一个组件的根元素上直接监听一个原生事件。这时,你可以使用 v-on 的 .native 修饰符:
    112. <base-input v-on:focus.native="onFocus"></base-input>
    113. .sync 修饰符官方解释:在有些情况下,我们可能需要对一个 prop 进行“双向绑定”。不幸的是,真正的双向绑定会带来维护上的问题,因为子组件可以变更父组件,且在父组件和子组件两侧都没有明显的变更来源。
    114. this.$emit('update:title', newTitle)
    115. <text-document v-bind:title="doc.title" v-on:update:title="doc.title = $event"</text-document>
    116. 为了方便这种写法,vue提供了.sync修饰符,说白了就是一种简写的方式,我们可以将其当作是一种语法糖,比如v-on: click可以简写为@click。而上边父组件的这种写法,换成sync的方式就像下边这样:
    117. <text-document :title.sync="title"></text-document>
    118. </template>
    119. export default{
    120. 01.name:'',//只有作为组件选项时起作用
    121. 02.data(){
    122. //一个组件的 data 选项必须是一个函数,因此每个实例可以维护一份被返回对象的独立的拷贝
    123. selectIndex: -1, //选中的状态
    124. },
    125. 03.methods:{
    126. reversedMessage: function () {// `this` 指向 vm 实例
    127. return this.message.split('').reverse().join('')
    128. }
    129. },
    130. 04.computed:{
    131. //计算属性是基于它们的响应式依赖进行缓存的,只在相关响应式依赖发生改变时它们才会重新求值。
    132. reversedMessage: function () {// `this` 指向 vm 实例
    133. return this.message.split('').reverse().join('')
    134. }
    135. //计算属性的 setter 计算属性默认只有 getter,不过在需要时你也可以提供一个 setter:
    136. fullName: {
    137. // getter
    138. get: function () {
    139. return this.firstName + ' ' + this.lastName
    140. },
    141. // setter
    142. set: function (newValue) {
    143. var names = newValue.split(' ')
    144. this.firstName = names[0]
    145. this.lastName = names[names.length - 1]
    146. }
    147. }
    148. },
    149. 05.componets:{},
    150. 06.watch(){
    151. //侦听器 Vue 提供了一种更通用的方式来观察和响应 Vue 实例上的数据变动:侦听属性。当你有一些数据需要随着其它数据变动而变动时,你很容易滥用 watch——特别是如果你之前使用过 AngularJS。然而,通常更好的做法是使用计算属性而不是命令式的 watch 回调
    152. // 如果 `question` 发生改变,这个函数就会运行
    153. question: function (newQuestion, oldQuestion) {
    154. this.answer = 'Waiting for you to stop typing...'
    155. this.debouncedGetAnswer()
    156. }
    157. //首次执行
    158. },
    159. 07.beforeCreate(){},
    160. 08.created(){},
    161. 09.beforeMount(){},
    162. 10.mounted(){},
    163. 11.beforeUpdate(){},
    164. 12.updated(){},
    165. 13.active(){},
    166. 14.deactive(){},
    167. 15.beforedestory(){},
    168. 16.destoryed(){},
    169. 16.1.errorCaptured(){//在捕获一个来自后代组件的错误时被调用},
    170. 17.nextTick(){},
    171. 18.beforeRouteEnter(to, from, next){},
    172. 19.beforeRouteUpdate(to, from, next){},
    173. 20.beforeRouteLeave(to, from, next){},
    174. 21.mixins:[],
    175. 22.props:[] or {},
    176. 23.filters:{},
    177. 24.provide(){},
    178. 25.inject:[],
    179. 26.inheritAttrs: false,//如果你不希望组件的根元素继承特性,你可以在组件的选项中设置
    180. 27.directives{has: { inserted(el){ el.focus()} } }// 自定义指令
    181. 28.extends
    182. 29.delimiters://改变纯文本插入分隔符.
    183. 30.functional://使组件无状态 (没有 data) 和无实例 (没有 this 上下文)。他们用一个简单的 render 函数返回虚拟节点使它们渲染的代价更小。
    184. 31.inheritAttrs://默认情况下父作用域的不被认作 props 的 attribute 绑定 (attribute bindings) 将会“回退”且作为普通的 HTML attribute 应用在子组件的根元素上.注意:这个选项不影响 class 和 style 绑定。
    185. 32.comments:当设为 true 时,将会保留且渲染模板中的 HTML 注释。默认行为是舍弃它们。
    186. 33.render(h)=>{
    187. //options api中使用h函数
    188. //jsx语法,h是crealElement方法.
    189. /createElement(TagName,Option,Content)接受三个参数
    190. /createElement(" 定义的元素 ",{ 元素的性质 }," 元素的内容"/[元素的内容])
    191. return h("div",{style:{color:red;}},"我是render渲染函数")
    192. }
    193. h函数接收三个参数。
    194. 第一个参数:,可以为一个html标签,一个组件,一个异步组件,或者是一个函数式组件。
    195. 第二个参数:{ Object } Props,与attributes和props,以及事件对应的对象,我们可以在模板中使用,如果没有需要传入的属性,可以设置为null
    196. 第三个参数:{String | Object |Array}可以是字符串Text文本或者是h函数构建的对象再者可以是有插槽的对象。
    197. //举个小栗子
    198. render:(h) => {
    199. return h('div',{
    200.    //给div绑定value属性
    201. props: {
    202. value:''
    203. },
    204.    //给div绑定样式
    205.    style:{
    206.      width:'30px'
    207.    }, 
    208.    //给div绑定点击事件  
    209. on: {
    210. click: () => {
    211. console.log('点击事件')
    212. }
    213. },
    214. })
    215. }
    216. }
    217. }
    218. <style scoped>
    219. .active {
    220. background: #f00;
    221. color: #ff9;
    222. }
    223. </style>

     

    如有不足,广大博友查漏补缺...

  • 相关阅读:
    自定义指令,获取焦点
    从0安装部署Javaweb项目
    3172:练28.3 短信计费
    SpringMVC拦截器
    计算机毕业设计ssm人力资源管理系统3118c系统+程序+源码+lw+远程部署
    < Python全景系列-7 > 提升Python编程效率:模块与包全面解读
    spring 中的路径匹配
    C# 常用数据类型转换
    Android codec2 视频框架 之输入buffer
    第一次pta认证P测试C++
  • 原文地址:https://blog.csdn.net/qq_26695613/article/details/127611515