個人工程實踐課題是《物聯網網關智能分析引擎》,我所作的是前端開發。基於此,我對Vue.js目錄結構進行分析。Vue.js是當下很火的一個JavaScript MVVM庫,它是以數據驅動和組件化的思想構建的。css
結構圖以下所示:html
Vue.js的指令是以v-開頭的,它們做用於HTML元素,指令提供了一些特殊的特性,將指令綁定在元素上時,指令會爲綁定的目標元素添加一些特殊的行爲,咱們能夠將指令看做特殊的HTML特性(attribute)。前端
Vue.js提供了一些經常使用的內置指令,接下來咱們將介紹如下幾個內置指令:vue
3.1 組件名應該始終爲多個單詞,根組件App除外。這樣作能夠避免跟現有的以及將來的HTML元素相沖突。node
正例:webpack
export
default
{
git
name:
'TodoItem'
,
web
// ...
express
}
npm
反例:
export
default
{
name:
'Todo'
,
// ...
}
3.2 組件中的data必須是一個函數,防止在組件複用的時候數據變更產生關聯。當在組件中使用 data 屬性的時候 (除了 new Vue 外的任何地方),它的值必須是返回一個對象的函數。
正例:
// In a .vue file
export
default
{
data () {
return
{
foo:
'bar'
}
}
}
// 在一個 Vue 的根實例上直接使用對象是能夠的,
由於只存在一個這樣的實例。
new
Vue({
data: {
foo:
'bar'
}
})
export
default
{
data: {
foo:
'bar'
}
}
3.3 prop的定義儘可能詳細,至少須要指定其類型。
正例:
props: {
status: String
}
props: {
status: {
type: String,
required:
true
,
validator:
function
(value) {
return
[
'syncing'
,
'synced'
,
'version-conflict'
,
'error'
].indexOf(value) !== -1
}
}
}
props: [
'status'
]
3.4 爲v-for設置鍵值。老是用 key 配合 v-for,在組件上_老是_必須用 key 配合 v-for,以便維護內部組件及其子樹的狀態。甚至在元素上維護可預測的行爲,好比動畫中的對象固化 (object constancy),也是一種好的作法。
正例:
<ul>
<li
v-
for
=
"todo in todos"
:key=
"todo.id"
>
{{ todo.text }}
</li>
</ul>
<ul>
<li v-
for
=
"todo in todos"
>
{{ todo.text }}
</li>
</ul>
正例:
<ul v-
if
=
"shouldShowUsers"
>
<li
v-
for
=
"user in users"
:key=
"user.id"
>
{{ user.name }}
</li>
</ul>
<ul>
<li
v-
for
=
"user in users"
v-
if
=
"shouldShowUsers"
:key=
"user.id"
>
{{ user.name }}
</li>
</ul>
<template>
<button class=
"c-Button c-Button--close"
>X</button>
</template>
<!-- 使用 BEM 約定 -->
<style>
.c-Button {
border: none;
border-radius: 2px;
}
.c-Button--close {
background-color: red;
}
</style>
<template>
<button class=
"btn btn-close"
>X</button>
</template>
<style>
.btn-close {
background-color: red;
}
</style>
<template>
<button class=
"button button-close"
>X</button>
</template>
<!-- 使用 `scoped` 特性 -->
<style scoped>
.button {
border: none;
border-radius: 2px;
}
.button-close {
background-color: red;
}
</style>
文件、資源命名
文本縮進:一次縮進4個空格。
代碼檢查
黃金定律