|
1 | 1 | # vue
|
2 | 2 |
|
3 |
| -1. vue 中 data 的属性可以和 methods 中的方法同名吗?为什么? |
| 3 | +1. :cloud:vue 中 data 的属性可以和 methods 中的方法同名吗?为什么? |
4 | 4 |
|
5 |
| - [Vue warn]: Method "myname" has already been defined as a data property. |
| 5 | + `[Vue warn]: Method "myname" has already been defined as a data property.` |
6 | 6 |
|
7 |
| - :cloud::cloud::cloud: |
8 |
| - |
9 |
| -2. 你知道 `v-model` 的原理吗? |
| 7 | +2. :cloud:你知道 `v-model` 的原理吗? |
10 | 8 |
|
11 | 9 | `v-model` 為一個語法糖,Vue 會默認使用一個名為 value 的 prop,以及名為 input 的事件。
|
12 | 10 | 為了避免不同的 value 有不同的作用,現在可以使用下面的方式自訂義自己想要的 `v-model` 行為。
|
|
21 | 19 | 如果想要更改 checked 這個 prop 可以在 Vue 的 instance 中用以下這行程式發送 change 這個 event,並將目標的變動值傳給 checked 這個 prop。
|
22 | 20 | `this.$emit('change', $event.target.value);`
|
23 | 21 |
|
24 |
| - :cloud::cloud::cloud: |
| 22 | +3. :cloud:在 vue 项目中如果 methods 的方法用箭头函数定义结果会怎么样? |
25 | 23 |
|
26 |
| -3. 在 vue 项目中如果 methods 的方法用箭头函数定义结果会怎么样? |
27 | 24 | 因为箭头函数默绑定父级作用域的上下文,所以不会绑定 vue 实例,所以 this 是 undefind
|
28 | 25 |
|
29 |
| - :cloud::cloud::cloud: |
30 |
| -
|
31 |
| -4. vue 渲染模板时怎么保留模板中的 HTML 注释呢? |
| 26 | +4. :cloud:vue 渲染模板时怎么保留模板中的 HTML 注释呢? |
32 | 27 |
|
33 | 28 | ```
|
34 | 29 | <template comments>
|
35 | 30 | </template>
|
36 | 31 | ```
|
37 | 32 |
|
38 |
| - :cloud::cloud::cloud: |
39 |
| -
|
40 |
| -5. vue 变量名如果以\_、$开头的属性会发生什么问题?怎么访问到它们的值? |
| 33 | +5. :cloud:vue 变量名如果以\_、$开头的属性会发生什么问题?怎么访问到它们的值? |
41 | 34 |
|
42 | 35 | 以 \_ 或 $ 开头的 property 不会被 Vue 实例代理,因为它们可能和 Vue 内置的 property、API 方法冲突。你可以使用例如 `vm.$data.\_property` 的方式访问这些 property。
|
43 | 36 | [详见官方文档](https://cn.vuejs.org/v2/api/#data)
|
44 | 37 |
|
45 |
| - :cloud::cloud::cloud: |
| 38 | +6. :cloud:如何在子组件中访问父组件的实例? |
46 | 39 |
|
47 |
| -6. 如何在子组件中访问父组件的实例? |
48 | 40 | vue 中如果父组件想调用子组件的方法,可以在子组件中加上 ref,然后通过 this.$refs.ref.method 调用.[详见](https://www.cnblogs.com/jin-zhe/p/9523029.html)
|
49 | 41 | Vue 中子组件调用父组件的方法,这里有三种方法提供参考:[详见](https://www.cnblogs.com/jin-zhe/p/9523782.html)
|
50 | 42 |
|
51 | 43 | 1. 直接在子组件中通过 this.$parent.event 来调用父组件的方法
|
52 | 44 | 2. 在子组件里用$emit 向父组件触发一个事件,父组件监听这个事件
|
53 | 45 | 3. 父组件把方法传入子组件中,在子组件里直接调用这个方法
|
54 | 46 |
|
55 |
| - :cloud::cloud::cloud: |
56 |
| -
|
57 |
| -7. 你有使用过 `babel-polyfill` 模块吗?主要是用来做什么的? |
| 47 | +7. :cloud:你有使用过 `babel-polyfill` 模块吗?主要是用来做什么的? |
58 | 48 |
|
59 | 49 | Babel 默认只转换新的 JavaScript 句法(syntax),而不转换新的 API,比如 Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise 等全局对象,以及一些定义在全局对象上的方法(比如 Object.assign)都不会转码。
|
60 | 50 |
|
61 | 51 | 举例来说,ES6 在 Array 对象上新增了 Array.from 方法。Babel 就不会转码这个方法。如果想让这个方法运行,必须使用 babel-polyfill,为当前环境提供一个垫片。
|
62 | 52 |
|
63 | 53 | Babel 默认不转码的 API 非常多,详细清单可以查看 `babel-plugin-transform-runtime` 模块的 `definitions.js` 文件。
|
64 | 54 |
|
65 |
| - :cloud::cloud::cloud: |
| 55 | +8. :cloud:vue 边界情况有哪些? |
66 | 56 |
|
67 |
| -8. vue 边界情况有哪些? |
68 | 57 | [官方文档](https://cn.vuejs.org/v2/guide/components-edge-cases.html)
|
69 | 58 |
|
70 | 59 | 1. 访问元素 & 组件
|
|
73 | 62 | 4. 模板定义的替代品
|
74 | 63 | 5. 控制更新
|
75 | 64 |
|
76 |
| - :cloud::cloud::cloud: |
| 65 | +9. :cloud:实际工作中,你总结的 vue 最佳实践有哪些? |
77 | 66 |
|
78 |
| -9. 实际工作中,你总结的 vue 最佳实践有哪些? |
79 | 67 | [风格指南](https://cn.vuejs.org/v2/style-guide/)
|
80 | 68 |
|
81 | 69 | > 规则归类=> A:必要的 B:强烈推荐 C:推荐 D:谨慎使用
|
82 |
| - > |
83 |
| - > A: |
| 70 | +
|
| 71 | + A: |
84 | 72 |
|
85 | 73 | 1. 组件名为多个单词
|
86 | 74 |
|
|
103 | 91 | 5. 避免 `v-if` 和 v-for 用在一起
|
104 | 92 | **永远不要把 `v-if` 和 `v-for` 同时用在同一个元素上。**
|
105 | 93 |
|
106 |
| - :cloud::cloud::cloud: |
107 |
| -
|
108 |
| -10. vue 使用 `v-for` 遍历对象时,是按什么顺序遍历的?如何保证顺序? |
| 94 | +10. :cloud:vue 使用 `v-for` 遍历对象时,是按什么顺序遍历的?如何保证顺序? |
109 | 95 |
|
110 | 96 | 1、会先判断是否有 iterator 接口,如果有循环执行 next()方法
|
111 | 97 |
|
112 | 98 | 2、没有 iterator 的情况下,会调用 Object.keys()方法,在不同浏览器中,JS 引擎不能保证输出顺序一致
|
113 | 99 |
|
114 | 100 | 3、保证对象的输出顺序可以把对象放在数组中,作为数组的元素
|
115 | 101 |
|
116 |
| - :cloud::cloud::cloud: |
117 |
| -
|
118 |
| -11. vue 如果想扩展某个现有的组件时,怎么做呢? |
| 102 | +11. :cloud:vue 如果想扩展某个现有的组件时,怎么做呢? |
119 | 103 |
|
120 | 104 | 1. 使用 Vue.extend 直接扩展
|
121 | 105 |
|
|
0 commit comments