成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端框架_Vue

qieangel2013 / 1333人閱讀

摘要:如果沒有文件,則讀取文件夾下的或者。如果都都找不到,拋出錯誤。

JS表達式

函數(shù)(方法)調(diào)用表達式

test() //函數(shù)調(diào)用表達式

屬性調(diào)用表達式

var obj = {name:"wt"};
var arr = [123,"bai"];
obj.name   //屬性調(diào)用表達式
arr[0]     //屬性調(diào)用表達式

變量(常量)調(diào)用表達式

let name = "wutao";
name  //變量調(diào)用表達式

字面量表達式

123         //數(shù)值字面量表達式
"wtao"      //字符串字面量表達式
true        //布爾字面量表達式
null        //空表達式
undefined   //未定義表達式
{name:"wt"} //對象字面量表達式
[123,true]  //數(shù)組字面量表達式

算術表達式

a + 1       //算術表達式
b * 1       //算術表達式

三目表達式

conidion ? name : title
模板語法

插值

// 語法:     雙大括號{{}}
// 使用場景: 標簽內(nèi)容處使用
// 單向數(shù)據(jù)綁定
// 支持JS表達式

{{msg}}
{{getContent()}}
插值v-text 區(qū)別
兩者都是在標簽內(nèi)容處插入內(nèi)容,但v-text是全量插入,而插值更靈活,除了全量插入,還可以使用部分插入
推薦只要使用插值就可以了

指令

是模板語法重中之重,常用如下
v-text     //使用插值替代
v-html     
v-show
v-if       //條件判斷
v-else
v-else-if
v-for      //循環(huán)
v-on       //綁定事件
v-bind     //綁定屬性
v-model    //雙向數(shù)據(jù)綁定
v-pre
v-cloak
v-once
指令

屬性綁定

// 單向數(shù)據(jù)綁定
// 支持JS表達式
// 使用指令v-bind,需傳入標簽屬性作為參數(shù),例如:v-bind:title=""

xxx

出現(xiàn)上面的情況,屬性誰后誰顯示,原理是后面替代前面如果title在:title后面,那單向數(shù)據(jù)綁定失效
如果是使用函數(shù),必須后面加括號調(diào)用()
1、數(shù)值型   :title="123"             等同于  title="123"
2、布爾型   :title="true"            等同于  title="true"   //false時,屬性消失
3、字符串   :title=""go""            等同于  title="go"
4、對象     :title="{name:"wt"}"     等同于  title="[Object object]" 
5、數(shù)組     :title="[123,true,"bb"]" 等同于  title="true,ok,123"

事件綁定

注意如果改為如下代碼,this將發(fā)生變化
所有函數(shù)(方法)的定義,強烈推薦放在methods里,不要定義到data里面

條件判斷渲染

// 單向數(shù)據(jù)綁定
// 支持JS表達式

//數(shù)字0 --> false
//字符串0 ---> true
注意點:
1、對象和數(shù)組轉(zhuǎn)boolean都是true
2、空字符串轉(zhuǎn)boolean是false
3、null、underfined、NaN轉(zhuǎn)boolean是false
4、數(shù)值0是false
let arr = []
if(arr){
    console.log("true");
}

if(arr == fasle){
    console.log("true");  // ==兩邊轉(zhuǎn)數(shù)值
}

循環(huán)渲染

// 單向數(shù)據(jù)綁定
// 支持JS表達式
// items可以是數(shù)字、字符串、數(shù)組、對象

  • {{ item.message }}
  • {{ item }} : {{ key }}
  • {{ item }} : {{key}}
雙向/單向數(shù)據(jù)動態(tài)綁定__原理

單向

var obj = {};
var initValue = "hello";
Object.defineProperty(obj,"newKey",{
    get:function (){
        //當獲取值的時候觸發(fā)的函數(shù)
        return initValue;
    },
    set:function (value){
        //當設置值的時候觸發(fā)的函數(shù),設置的新值通過參數(shù)value拿到
        initValue = value;
    }
});
//獲取值
console.log( obj.newKey );  //hello   輸出

//設置值
obj.newKey = "change value";

console.log( obj.newKey ); //change value
console.log( initValue );  //change value

雙向

var obj = {};
var initValue = "hello";
Object.defineProperty(obj,"newKey",{
    get:function (){
        //當獲取值的時候觸發(fā)的函數(shù)
        return initValue;
    },
    set:function (value){
        //當設置值的時候觸發(fā)的函數(shù),設置的新值通過參數(shù)value拿到
        initValue = value;
    }
});
document.getElementById("txt").oninput = function(e){
    obj.newKey = e.target.value;
}
單頁應用 vs 多頁應用

多頁應用

頁面跳轉(zhuǎn) ---> 返回html

優(yōu)點:
首屏速度快,SEO效果好

缺點:
頁面切換慢

單頁應用

頁面跳轉(zhuǎn) ---> JS動態(tài)渲染

優(yōu)點:
頁面切換快

缺點:
首屏速度慢,SEO差
Vue 實例

分類

根實例組件實例區(qū)別

1、是否有掛載
    有---根實例
    沒---組件實例
    
2、文件后綴
    .js---根實例
    .vue--組件實例
    
3、寫法
    手動new Vue()---根實例
    導出export default {}---組件實例
組件

組件是什么?與模塊有什么不同?

使用Vue構建單頁應用,單頁應用由Vue單文件組件組成,所謂組件指的就是Vue單文件組件(包含模板、樣式、交互)
模塊指的就是JS模塊(單純包含JS代碼)
使用ES6模塊化導入

1、路徑問題

nodejs內(nèi)置模塊與npm安裝的第三方模塊,直接引用
import Vue from "vue";
import http from "http";

自定義模塊或自定義組件,要帶路徑引用
./ 代表 當前文件所在路徑
../代表 當前文件父級所在路徑
import App from "./App.vue";
import App from "../App.vue";

2、后綴問題(無后綴,先判斷是否是文件,找不到再判斷是否是目錄)

當省略后綴,只會匹配js/json/node后綴文件
所以當你要導入css、vue單文件組件時,就必須加上后綴
如果導入的是文件夾(包),將按如下順序查找:
<1>查找 package.json 下是否定義了 main 字段,是則讀取 main 字段下定義的入口。
<2>如果沒有 package.json 文件,則讀取文件夾下的 index.js 或者 index.node。
<3>如果都 package.json、index.js、index.node 都找不到,拋出錯誤 Error: Cannot find module "some-library"。

鏈接描述

組件與模塊最大區(qū)別是:是否要注冊
使用流程

組件(.vue): 導入——>注冊——>使用
模塊(.js):   導入——>使用

組件之間關系

1、嵌套關系(父子、爺孫)
2、非嵌套關系(兄弟、表叔與我)

組件定義的三大區(qū)域

1、模板