day03項目【項目前端相關基礎知識一】

01-前端開發(fā)和前端開發(fā)工具

一、前端開發(fā)

PRD(產品原型-產品經理) - PSD(視覺設計-UI工程師) - HTML/CSS/JavaScript(PC/移動端網頁,實現網頁端的視覺展示和交互-前端工程師)

二、下載和安裝VS Code

1、下載地址

https://code.visualstudio.com/

2、安裝

三、初始設置

1、中文界面配置

首先安裝中文插件:Chinese (Simplified) Language Pack for Visual Studio Code

????右下角彈出是否重啟vs,點擊“yes”

????有些機器重啟后如果界面沒有變化,則 點擊?左邊欄Manage -> Command Paletet...【Ctrl+Shift+p】

????在搜索框中輸入“configure display language”,回車

????打開locale.json文件,修改文件下的屬性 "locale":"zh-cn"

????重啟vs

2、插件安裝

為方便后續(xù)開發(fā),建議安裝如下插件(紅色矩形框標記的插件)

3、創(chuàng)建項目

vscode本身沒有新建項目的選項,所以要先創(chuàng)建一個空的文件夾,如project_xxxx。

然后打開vscode,再在vscode里面選擇 File -> Open Folder 打開文件夾,這樣才可以創(chuàng)建項目。

4、保存工作區(qū)

打開文件夾后,選擇“文件 -> 將工作區(qū)另存為...”,為工作區(qū)文件起一個名字,存儲在剛才的文件夾下即可

5、新建文件夾和網頁

6、預覽網頁

以文件路徑方式打開網頁預覽

需要安裝“open in browser”插件:

文件右鍵 -> Open In Default Browser

以服務器方式打開網頁預覽

需要安裝“Live Server”插件:

文件右鍵 -> Open with Live Server

http://127.0.0.1:5500/vs1010/demo01/01.html

7、設置字體大小

左邊欄Manage -> settings?->?搜索?“font”?->?Font size

8、開啟完整的Emmet語法支持

設置中搜索 Emmet:啟用如下選項,必要時重啟vs


02-ES6入門

自學參考:http://es6.ruanyifeng.com/

一、ECMAScript 6 簡介

ECMAScript 6.0(以下簡稱 ES6)是 JavaScript 語言的下一代標準,已經在 2015 年 6 月正式發(fā)布了。它的目標,是使得 JavaScript 語言可以用來編寫復雜的大型應用程序,成為企業(yè)級開發(fā)語言。

1、ECMAScript 和 JavaScript 的關系

一個常見的問題是,ECMAScript 和 JavaScript 到底是什么關系?

要講清楚這個問題,需要回顧歷史。1996 年 11 月,JavaScript 的創(chuàng)造者 Netscape 公司,決定將 JavaScript 提交給標準化組織 ECMA,希望這種語言能夠成為國際標準。次年,ECMA 發(fā)布 262 號標準文件(ECMA-262)的第一版,規(guī)定了瀏覽器腳本語言的標準,并將這種語言稱為 ECMAScript,這個版本就是 1.0 版。

因此,ECMAScript 和 JavaScript 的關系是,前者是后者的規(guī)格,后者是前者的一種實現(另外的 ECMAScript 方言還有 Jscript 和 ActionScript)

2、ES6 與 ECMAScript 2015 的關系

ECMAScript 2015(簡稱 ES2015)這個詞,也是經??梢钥吹降?。它與 ES6 是什么關系呢?

2011 年,ECMAScript 5.1 版發(fā)布后,就開始制定 6.0 版了。因此,ES6 這個詞的原意,就是指 JavaScript 語言的下一個版本。

ES6 的第一個版本,在 2015 年 6 月發(fā)布,正式名稱是《ECMAScript 2015 標準》(簡稱 ES2015)。

2016 年 6 月,小幅修訂的《ECMAScript 2016 標準》(簡稱 ES2016)如期發(fā)布,這個版本可以看作是 ES6.1 版,因為兩者的差異非常小,基本上是同一個標準。根據計劃,2017 年 6 月發(fā)布 ES2017 標準。

因此,ES6 既是一個歷史名詞,也是一個泛指,含義是 5.1 版以后的 JavaScript 的下一代標準,涵蓋了 ES2015、ES2016、ES2017 等等,而 ES2015 則是正式名稱,特指該年發(fā)布的正式版本的語言標準。本書中提到 ES6 的地方,一般是指 ES2015 標準,但有時也是泛指“下一代 JavaScript 語言”。

二、基本語法

ES標準中不包含 DOM 和 BOM的定義,只涵蓋基本數據類型、關鍵字、語句、運算符、內建對象、內建函數等通用語法。

本部分只學習前端開發(fā)中ES6的最少必要知識,方便后面項目開發(fā)中對代碼的理解。

1、let聲明變量

創(chuàng)建 let.html

<script>

????//?var?聲明的變量沒有局部作用域

????//?let?聲明的變量??有局部作用域

????//es6定義變量,使用關鍵字let

????//1?創(chuàng)建代碼塊,定義變量

????{

????????var?a?=?10

????????let?b?=?20

????}

????//2?在代碼塊外面輸出

????console.log(a)

????console.log(b) //ReferenceError: b is not defined

</script>

<script>

????//?var?可以聲明多次

????//?let?只能聲明一次

????var?m?=?1

????var?m?=?2

????let?n?=?3

????let?n?=?4

????console.log(m)

????console.log(n)?//Uncaught?SyntaxError:?Identifier?'n'?has?already?been?declared

</script>

2、const聲明常量(只讀變量)

創(chuàng)建 const.html

<script>

????//定義常量

????const?PI?=?"3.1415926"

????//?1、聲明之后不允許改變??

????PI?=?3?//Uncaught?TypeError:?Assignment?to?constant?variable.

????//2、一但聲明必須初始化,否則會報錯

????//const?MY_AGE?//Uncaught?SyntaxError:?Missing?initializer?in?const?declaration

</script>

3、解構賦值

創(chuàng)建 解構賦值.html

解構賦值是對賦值運算符的擴展。

他是一種針對數組或者對象進行模式匹配,然后對其中的變量進行賦值。

在代碼書寫上簡潔且易讀,語義更加清晰明了;也方便了復雜對象中數據字段獲取。

<script>

????//1、數組結構

????//傳統(tǒng)寫法

????let?a?=?1,?b?=?2,?c?=?3

????console.log(a,?b,?c)


????//ES6寫法

????let?[x,?y,?z]?=?[10,20,30]

????console.log(x,?y,?z)

</script>

<script>

????//2、對象解構

????let?user?=?{name:"Helen",?age:18}

????//傳統(tǒng)寫法

????let?name1?=?user.name

????let?age1?=?user.age

????console.log(name1,age1)


????//ES6寫法

????let?{name,?age}?=?user?//注意:結構的變量必須是user中的屬性

????console.log(name,age)

</script>

4、模板字符串

創(chuàng)建 模板字符串.html

模板字符串相當于加強版的字符串,用反引號?`,除了作為普通字符串,還可以用來定義多行字符串,還可以在字符串中加入變量和表達式。

<script>

????//1、多行字符串

????let?string1?=?`Hey,

????can?you?stop?angry?now?`

????console.log(string1)

</script>

<script>

????//2、字符串插入變量和表達式。變量名寫在?${}?中,${}?中可以放入?JavaScript?表達式。

????let?name?=?"Mike"

????let?age?=?28

????let?info?=?`My?name?is?${name},?I?am?${age+1}?years?old?next?year.`

????console.log(info)

</script>

<script>

????//?3、字符串中調用函數

????function?f(){

????????return?"have?fun!"

????}


????let?string2?=?`Game?start,${f()}`

????console.log(string2);??//?Game?start,have?fun!

</script>

5、聲明對象簡寫

創(chuàng)建 聲明對象簡寫.html

<script>

????//聲明對象簡寫

????const?age?=?12

????const?name?=?"Amy"

????//?傳統(tǒng)

????const?person1?=?{age:?age,?name:?name}

????console.log(person1)

????//?ES6

????const?person2?=?{age,?name}

????console.log(person2)?//{age:?12,?name:?"Amy"}

</script>


6、定義方法簡寫

創(chuàng)建 定義方法簡寫.html

<script>

????//定義方法簡寫

????//傳統(tǒng)

????const?person1?=?{

????????sayHi:function(){

????????????console.log("Hi");

????????}

????}

????person1.sayHi();

????//ES6

????const?person2?=?{

????????sayHi(){

????????????console.log("Hi")

????????}

????}

????person2.sayHi();

</script>

7、對象拓展運算符

創(chuàng)建 對象拓展運算符.html

拓展運算符(...)用于取出參數對象所有可遍歷屬性然后拷貝到當前對象。

<script>

????//?1、拷貝對象

????let?person1?=?{name:?"Amy1",age:?15}

????let?someone?=?{...person1}

????console.log(someone)


????//2、合并對象

????let?age?=?{age:?16}

????let?name?=?{name:"Amy2"}

????let?person2?=?{...age,...name}

????console.log(person2)

</script>

8、箭頭函數

創(chuàng)建 箭頭函數.html

箭頭函數提供了一種更加簡潔的函數書寫方式。基本語法是:

參數 => 函數體

<script>

????//傳統(tǒng)

????var?f1?=?function(a){

????????return?a

????}

????console.log(f1(1))


????//ES6

????var?f2?=?a?=>?a

????console.log(f2(2))

</script>

<script>

????//?當箭頭函數沒有參數或者有多個參數,要用?()?括起來。

????//?當箭頭函數函數體有多行語句,用?{}?包裹起來,表示代碼塊,

????//?當只有一行語句,并且需要返回結果時,可以省略?{}?,?結果會自動返回。

????var?f3?=?(a,b)?=>?{

????????let?result?=?a+b

????????return?result

????}

????console.log(f3(6,2))??//8


????//前面的代碼相當于

????var?f4?=?(a,b)?=>?a+b

????console.log(f4(4,3))? //7

</script>

箭頭函數多用于匿名函數的定義


03-Vue

一、介紹

1、Vue.js 是什么

Vue (讀音 /vju?/,類似于 view) 是一套用于構建用戶界面的漸進式框架。

Vue 的核心庫只關注視圖層,不僅易于上手,還便于與第三方庫或既有項目整合。另一方面,當與現代化的工具鏈以及各種支持類庫結合使用時,Vue 也完全能夠為復雜的單頁應用提供驅動。

官方網站:https://cn.vuejs.org

2、初始Vue.js

創(chuàng)建 demo.html

<!DOCTYPE?html>

<html?lang="en">

<head>

????<meta?charset="UTF-8">

????<meta?name="viewport"?content="width=device-width,?initial-scale=1.0">

????<title>Document</title>

</head>

<body>

????<!--?id標識vue作用的范圍?-->

????<div?id="app">

????????<!--?{{}}?插值表達式,綁定vue中的data數據?-->

????????{{message}}

????</div>

????<!--?導入包?-->

????<script?src="vue.min.js"></script>

????<script>

????????//?創(chuàng)建一個vue對象

????????new?Vue({

????????????//綁定vue作用的范圍

????????????el:?'#app',

????????????//定義頁面中顯示的模型數據

????????????data:{?

????????????????message:"Hello?Vue!"

????????????}

????????})

????</script>

</body>

</html>

這就是聲明式渲染:Vue.js 的核心是一個允許采用簡潔的模板語法來聲明式地將數據渲染進 DOM 的系統(tǒng)

這里的核心思想就是沒有繁瑣的DOM操作,例如jQuery中,我們需要先找到div節(jié)點,獲取到DOM對象,然后進行一系列的節(jié)點操作

在vs code中創(chuàng)建代碼片段:

文件 => ?首選項 => 用戶代碼片段 => 新建全局代碼片段/或文件夾代碼片段:vue-html.code-snippets

注意:制作代碼片段的時候,字符串中如果包含文件中復制過來的“Tab”鍵的空格,要換成“空格鍵”的空格

{

????????"vue?htm":?{

????????????"scope":?"html",

????????????"prefix":?"vuehtml",

????????????"body":?[

????????????????"<!DOCTYPE?html>",

????????????????"<html?lang=\"en\">",

????????????????"",

????????????????"<head>",

????????????????"????<meta?charset=\"UTF-8\">",

????????????????"????<meta?name=\"viewport\"?content=\"width=device-width,?initial-scale=1.0\">",

????????????????"????<meta?http-equiv=\"X-UA-Compatible\"?content=\"ie=edge\">",

????????????????"????<title>Document</title>",

????????????????"</head>",

????????????????"",

????????????????"<body>",

????????????????"????<div?id=\"app\">",

????????????????"",

????????????????"????</div>",

????????????????"????<script?src=\"vue.min.js\"></script>",

????????????????"????<script>",

????????????????"????????new?Vue({",

????????????????"????????????el:?'#app',",

????????????????"????????????data:?{",

????????????????"????????????????$1",

????????????????"????????????}",

????????????????"????????})",

????????????????"????</script>",

????????????????"</body>",

????????????????"",

????????????????"</html>",

????????????],

????????????"description":?"my?vue?template?in?html"

????????}

????}

輸入vue?htm即可引用模板。

二、基本語法

1、基本數據渲染和指令

創(chuàng)建 01-基本數據渲染和指令.html

你看到的?v-bind?特性被稱為指令。指令帶有前綴?v-

除了使用插值表達式{{}}進行數據渲染,也可以使用 v-bind指令,它的簡寫的形式就是一個冒號(:)

<!DOCTYPE?html>

<html?lang="en">

<head>

????<meta?charset="UTF-8">

????<meta?name="viewport"?content="width=device-width,?initial-scale=1.0">

????<meta?http-equiv="X-UA-Compatible"?content="ie=edge">

????<title>Document</title>

</head>

<body>

????<div?id="app">

????????<!--?如果要將模型數據綁定在html屬性中,則使用?v-bind?指令

????????????此時title中顯示的是模型數據

????????-->

????????<h1?v-bind:title="content">

????????????{{message}}

????????</h1>

????????<!--?v-bind?指令的簡寫形式:?冒號(:)?-->

????????<h1?:title='content'>

????????????{{message}}

????????</h1>

????</div>

????<script?src="vue.min.js"></script>

????<script>

????????new?Vue({

????????????el:?'#app',

????????????data:?{

????????????????content:'我是標題',

????????????????message:'頁面加載于'?+?new?Date().toLocaleString()

????????????}

????????})

????</script>

</body>

</html>

2、雙向數據綁定

創(chuàng)建 02-雙向數據綁定.html

雙向數據綁定和單向數據綁定:使用?v-model?進行雙向數據綁定

<!DOCTYPE?html>

<html?lang="en">

<head>

????<meta?charset="UTF-8">

????<meta?name="viewport"?content="width=device-width,?initial-scale=1.0">

????<meta?http-equiv="X-UA-Compatible"?content="ie=edge">

????<title>Document</title>

</head>

<body>

????<div?id="app">

????????<!--?v-bind:value只能進行單向的數據渲染?-->

????????<input?type="text"?v-bind:value="searchMap.keyWord"></input>

????????<!--?v-model?可以進行雙向的數據綁定??-->

????????<input?type="text"?v-model="searchMap.keyWord"></input>

????????<p>您要查詢的是:{{searchMap.keyWord}}</p>

????</div>

????<script?src="vue.min.js"></script>

????<script>

????????new?Vue({

????????????el:?'#app',

????????????data:?{

????????????????searchMap:{

????????????????????keyWord:'尚硅谷'

????????????????}

????????????}

????????})

????</script>

</body>

</html>

單向綁定:

雙向綁定:

3、事件

創(chuàng)建 03-事件.html

需求:點擊查詢按鈕,按照輸入框中輸入的內容查找公司相關信息

在前面的例子基礎上,data節(jié)點中增加 result,增加 methods節(jié)點 并定義 search方法。

html中增加 button 和 p

使用?v-on?進行事件處理,v-on:click?表示處理鼠標點擊事件,事件調用的方法定義在?vue對象聲明的?methods?節(jié)點中。

完善search方法。

<body>

????<div?id="app">

????????<!--?v-on?指令綁定事件,click指定綁定的事件類型,事件發(fā)生時調用vue中methods節(jié)點中定義的方法?-->

????????<button?v-on:click='search()'>查詢</button>

????????<!--?v-on?指令的簡寫形式?@?-->

????????<button?@click="search()">查詢1</button>

????????<p>您要查詢的是:{{searchMap.keyWord}}</p>


????????<p><a?v-bind:href="result.site"?target="_blank">{{result.title}}</a></p>

????</div>

????<script?src="vue.min.js"></script>

????<script>

????????new?Vue({

????????????el:?'#app',

????????????data:?{

????????????????searchMap:{

????????????????????keyWord:?'尚硅谷'

????????????????},

????????????????result:{}

????????????},

????????????methods:{

????????????????search(){

????????????????????console.log('search')

????????????????????this.result?=?{

????????????????????????"title":"尚硅谷",

????????????????????????"site":"http://www.atguigu.com"

????????????????????}

????????????????}

????????????}

????????})

????</script>

</body>

</html>

簡寫

?????????<!--?v-on?指令的簡寫形式?@?-->

????????<button?@click="search()">查詢1</button>

4、修飾符

創(chuàng)建 04-修飾符.html

修飾符 (Modifiers) 是以半角句號(.)指明的特殊后綴,用于指出一個指令應該以特殊方式綁定。

例如,.prevent 修飾符告訴 v-on 指令對于觸發(fā)的事件調用 event.preventDefault():

即阻止事件原本的默認行為

<body>

????<div?id="app">

????????<form?action="save"?v-on:submit.prevent="onSubmit">

????????????<label?for="username">

????????????????<input?type="text"?id="username"?v-model="user.username"></input>

????????????????<button?type="submit">保存</button>

????????????</label>

????????</form>

????</div>

????<script?src="vue.min.js"></script>

????<script>

????????new?Vue({

????????????el:?'#app',

????????????data:?{

????????????????user:{}

????????????},

????????????methods:{

????????????????onSubmit(){

????????????????????if(this.user.username){

????????????????????????console.log('提交表單')

????????????????????}else{

????????????????????????alert('請輸入用戶名')

????????????????????}

????????????????}

????????????}

????????})

????</script>

</body>

<body>

????<div?id="app">

????????<form?action="save"?v-on:submit.prevent="onSubmit">

????????????????<input?type="text"?id="name"?v-model="user.username"></input>

????????????????<button?type="submit">保存</button>

????????</form>

????</div>

????<script?src="vue.min.js"></script>

????<script>

????????new?Vue({

????????????el:?'#app',

????????????data:?{

????????????????user:{}

????????????},

????????????methods:{

????????????????onSubmit(){

????????????????????if(this.user.username){

????????????????????????console.log('提交表單')

????????????????????}else{

????????????????????????alert('請輸入用戶名')

????????????????????}

????????????????}

????????????}

????????})

????</script>

</body>

5、條件渲染

創(chuàng)建 05-條件渲染.html

v-if:條件指令

注意:單個復選框綁定到布爾值

<body>

????<div?id="app">

????????<input?type="checkbox"?v-model="ok">同意許可協(xié)議</input>

????????<!--?v:if條件指令:還有v-else、v-else-if?切換開銷大?-->

????????<h1?v-if="ok">if:Lorem?ipsum?dolor?sit?amet.</h1>

????????<h1?v-else>no</h1>

????</div>

????<script?src="vue.min.js"></script>

????<script>

????????new?Vue({

????????????el:?'#app',

????????????data:?{

????????????????ok:false

????????????}

????????})

????</script>

</body>

v-show:條件指令

使用v-show完成和上面相同的功能

<!-- v:show 條件指令 初始渲染開銷大 -->

<h1v-show="ok">show:Lorem ipsum dolor sit amet.</h1>

<h1v-show="!ok">no</h1>

????v-if?是“真正”的條件渲染,因為它會確保在切換過程中條件塊內的事件監(jiān)聽器和子組件適當地被銷毀和重建。

????v-if?也是惰性的:如果在初始渲染時條件為假,則什么也不做——直到條件第一次變?yōu)檎鏁r,才會開始渲染條件塊。

????相比之下,v-show?就簡單得多——不管初始條件是什么,元素總是會被渲染,并且只是簡單地基于 CSS 進行切換。

????一般來說,v-if?有更高的切換開銷,而?v-show?有更高的初始渲染開銷。因此,如果需要非常頻繁地切換,則使用?v-show?較好;如果在運行時條件很少改變,則使用?v-if?較好。

6、列表渲染

創(chuàng)建 06-列表渲染.html

v-for:列表循環(huán)指令

例1:簡單的列表渲染

<body>

????<div?id="app">

????????<!--?1、簡單的列表渲染?-->

????????<ul>

????????????<li?v-for="n?in?10">{{n}}</li>

????????</ul>

????????<ol>

????????????<!--?如果想獲取索引,則使用index關鍵字,注意,圓括號中的index必須放在后面?-->

????????????<li?v-for="(n,index)?in?5">{{n}}------{{index}}</li>

????????</ol>

????</div>

????<script?src="vue.min.js"></script>

????<script>

????????new?Vue({

????????????el:?'#app',

????????????data:?{


????????????}

????????})

????</script>

</body>

例2:遍歷數據列表

<body>

????<div?id="app">

????????<!--?2、遍歷數據列表?-->

????????<table?border="1">

????????????<!--?<tr?v-for="item?in?userList"></tr>?-->

????????????<tr?v-for="(user,index)?in?userList">

????????????????<td>{{index}}</td>

????????????????<td>{{user.id}}</td>

????????????????<td>{{user.username}}</td>

????????????????<td>{{user.age}}</td>

????????????</tr>

????????</table>

????</div>

????<script?src="vue.min.js"></script>

????<script>

????????new?Vue({

????????????el:?'#app',

????????????data:?{

????????????????userList:[

????????????????????{?id:?1,?username:?'helen',?age:?18?},

????????????????????{?id:?2,?username:?'peter',?age:?28?},

????????????????????{?id:?3,?username:?'andy',?age:?38?}

????????????????]

????????????}

????????})

????</script>

</body>


04-Vue.js進階

一、組件(重點)

組件(Component)是 Vue.js 最強大的功能之一。

組件可以擴展 HTML 元素,封裝可重用的代碼。

組件系統(tǒng)讓我們可以用獨立可復用的小組件來構建大型應用,幾乎任意類型的應用的界面都可以抽象為一個組件樹:

1、局部組件

創(chuàng)建 01-1-局部組件.html

定義組件

?<script>

????????new?Vue({

????????????el:?'#app',

????????????//?定義局部組件,這里可以定義多個局部組件

????????????components:?{

????????????????//組件的名字

????????????????'Navbar':?{

????????????????????//組件的內容

????????????????????template:?'<ul><li>首頁</li><li>學員管理</li></ul>'

????????????????}

????????????}

????????})

????</script>

使用組件

?<div?id="app">

????????<Navbar></Navbar>

????</div>

2、全局組件

創(chuàng)建 01-2-全局組件.html

定義全局組件:components/Navbar.js

//?定義全局組件

Vue.component('Navbar',{

????template:?'<ul><li>首頁</li><li>學員管理</li><li>講師管理</li></ul>'

}

)

<body>

????<div?id="app">

????????<Navbar></Navbar>

????</div>

????<script?src="vue.min.js"></script>

????<script?src="components/Navbar.js"></script>

????<script>

????????new?Vue({

????????????el:?'#app'

????????})

????</script>

</body>

二、實例生命周期

重點兩個方法:created(在頁面渲染之前執(zhí)行)、mounted(在頁面渲染之后執(zhí)行)

創(chuàng)建 03-vue實例的生命周期.html

data: {

message:'床前明月光'

},

methods: {

show() {

console.log('執(zhí)行show方法')

? ? },

update() {

this.message='玻璃好上霜'

? ? }

},

<button@click="update">update</button>

<h3 id="h3">{{ message }}</h3>

分析生命周期相關方法的執(zhí)行時機

//===創(chuàng)建時的四個事件

beforeCreate() {// 第一個被執(zhí)行的鉤子方法:實例被創(chuàng)建出來之前執(zhí)行

console.log(this.message)//undefined

this.show()//TypeError: this.show is not a function

// beforeCreate執(zhí)行時,data 和 methods 中的 數據都還沒有沒初始化

},

created() {// 第二個被執(zhí)行的鉤子方法

console.log(this.message)//床前明月光

this.show()//執(zhí)行show方法

// created執(zhí)行時,data 和 methods 都已經被初始化好了!

// 如果要調用 methods 中的方法,或者操作 data 中的數據,最早,只能在 created 中操作

},

beforeMount() {// 第三個被執(zhí)行的鉤子方法

console.log(document.getElementById('h3').innerText)//{{ message }}

// beforeMount執(zhí)行時,模板已經在內存中編輯完成了,尚未被渲染到頁面中

},

mounted() {// 第四個被執(zhí)行的鉤子方法

console.log(document.getElementById('h3').innerText)//床前明月光

// 內存中的模板已經渲染到頁面,用戶已經可以看見內容

},


//===運行中的兩個事件

beforeUpdate() {// 數據更新的前一刻

console.log('界面顯示的內容:'+document.getElementById('h3').innerText)

console.log('data 中的 message 數據是:'+this.message)

// beforeUpdate執(zhí)行時,內存中的數據已更新,但是頁面尚未被渲染

},

updated() {

console.log('界面顯示的內容:'+document.getElementById('h3').innerText)

console.log('data 中的 message 數據是:'+this.message)

// updated執(zhí)行時,內存中的數據已更新,并且頁面已經被渲染

}

<body>

????<div?id="app">

????</div>

????<script?src="vue.min.js"></script>

????<script>

????????new?Vue({

????????????el:?'#app',

????????????data:?{


????????????},

????????????created(){

????????????????debugger? //斷點

????????????????//在頁面渲染之前執(zhí)行

????????????????console.log('created...')

????????????},

????????????mounted(){

????????????????debugger

????????????????//在頁面渲染之后執(zhí)行

????????????????console.log('mounted...')

????????????}

????????})

????</script>

</body>


四、路由

Vue.js 路由允許我們通過不同的 URL 訪問不同的內容。

通過 Vue.js 可以實現多視圖的單頁Web應用(single page web application,SPA)。

Vue.js 路由需要載入?vue-router 庫

創(chuàng)建 04-路由.html

1、引入js

????//有順序關系,先引入vue再引入router,否則效果出不來

????<script?src="vue.min.js"></script>

????<script?src="vue-router.min.js"></script>

2、編寫html

??<div?id="app">

????????<h1>Hello?App!</h1>

????????<p>

????????????<!--?使用?router-link?組件來導航.?-->

????????????<!--?通過傳入?`to`?屬性指定鏈接.?-->

????????????<!--?<router-link>?默認會被渲染成一個?`<a>`?標簽?-->

????????????<router-link?to="/">首頁</router-link>

????????????<router-link?to="/student">會員管理</router-link>

????????????<router-link?to="/teacher">講師管理</router-link>

????????</p>

????????<!--?路由出口?-->

????????<!--?路由匹配到的組件將渲染在這里?-->

????????<router-view></router-view>

????</div>

3、編寫js

<script>

????????//?1.?定義(路由)組件。

????????//?可以從其他文件?import?進來

????????const?Welcome?=?{?template:?'<div>歡迎</div>'}

????????const?Student?=?{?template:?'<div>student?list</div>'?}

????????const?Teacher?=?{?template:?'<div>teacher?list</div>'?}


????????//?2.?定義路由

????????//?每個路由應該映射一個組件。

????????const?routes?=?[

????????????{?path:'/',component:Welcome},?//設置默認指向的路徑

????????????{?path:?'/student',?component:?Student?},

????????????{?path:?'/teacher',?component:?Teacher?}

????????]


?????????//?3.?創(chuàng)建?router?實例,然后傳?`routes`?配置

?????????const?router?=?new?VueRouter({

?????????????routes?//?(縮寫)相當于?routes:?routes

?????????})


?????????//?4.?創(chuàng)建和掛載根實例。

?????????//?從而讓整個應用都有路由功能

?????????const?app?=?new?Vue({

?????????????el:'#app',

?????????????router

?????????})

?????????//?現在,應用已經啟動了!

????</script>

五、axios

axios是獨立于vue的一個項目,基于promise用于瀏覽器和node.js的http客戶端

在瀏覽器中可以幫助我們完成 ajax請求的發(fā)送

在node.js中可以向遠程接口發(fā)送請求

獲取數據:

? ?? <script?src="vue.min.js"></script>

????<script?src="axios.min.js"></script>

注意:測試時需要開啟后端服務器,并且后端開啟跨域訪問權限

創(chuàng)建一個json文件用于測試:data.json

{

????"success":true,

????"code":20000,

????"message":"成功",

????"data":{

????????"items":[

????????????{"name":"lucy","age":20},

????????????{"name":"mary","age":30},

????????????{"name":"jack","age":40}

????????]

????}

}

2、顯示數據

可在控制臺查看輸出

<body>

????<div?id="app">

????????<div?v-for="user?in?userList">

????????????{{user.name}}-----{{user.age}}

????????</div>

????</div>

????<script?src="vue.min.js"></script>

????<script?src="axios.min.js"></script>

????<script>

????????new?Vue({

????????????el:?'#app',

????????????//固定的結構

????????????data:?{//在data中定義變量和初始值

????????????????//定義變量,值空數組

????????????????userList:[]

????????????},

????????????created(){//頁面渲染之前執(zhí)行

????????????????//調用定義的方法

????????????????this.getUserList()

????????????},

????????????methods:{//編寫具體的方法

????????????????//創(chuàng)建方法

????????????????getUserList(){

????????????????????//使用axios發(fā)送ajax請求

????????????????????//axios.提交方式("請求接口路徑").then(箭頭函數).catch(箭頭函數)

????????????????????//axios.get('http://localhost:8081/admin/ucenter/member')

????????????????????axios.get("data.json")

?????????????????????????.then(response?=>?{

????????????????????????????//response就是請求之后返回數據

????????????????????????????//??console.log("******"+response)

????????????????????????????//?console.log(response)

????????????????????????????//通過response獲取具體的數據,賦值給定義的空數組

????????????????????????????this.userList?=?response.data.data.items

????????????????????????????console.log(this.userList)

?????????????????????????})//請求成功執(zhí)行then方法

?????????????????????????.catch(error?=>?{

?????????????????????????})//請求失敗執(zhí)行catch方法

????????????????}

????????????}

????????})

????</script>

</body>


六、element-ui:

element-ui 是餓了么前端出品的基于 Vue.js的 后臺組件庫,方便程序員進行頁面快速布局和構建

官網:?http://element-cn.eleme.io/#/zh-CN

創(chuàng)建 06-element-ui.html

將element-ui引入到項目

1、引入css

<!-- import CSS -->

<linkrel="stylesheet" href="element-ui/lib/theme-chalk/index.css">

2、引入js

<!-- import Vue before Element -->

<scriptsrc="vue.min.js"></script>

<!-- import JavaScript -->

<scriptsrc="element-ui/lib/index.js"></script>

3、編寫html

<div id="app">

????<el-button @click="visible = true">Button</el-button>

????<el-dialog:visible.sync="visible" title="Hello world">

????????<p>Try Element</p>

????</el-dialog>

</div>

關于.sync的擴展閱讀

http://www.itdecent.cn/p/d42c508ea9de

4、編寫js

<script>

newVue({

? ? el:'#app',

? ? data:function() {//定義Vue中data的另一種方式

????????????return {visible:false}

? ? ? }

? ? })

</script>

測試

其他ui組件我們在項目中學習


05-Node

一、簡介

1、什么是Node.js

簡單的說 Node.js 就是運行在服務端的 JavaScript。

Node.js是一個事件驅動I/O服務端JavaScript環(huán)境,基于Google的V8引擎,V8引擎執(zhí)行Javascript的速度非???,性能非常好。

2、Node.js有什么用

如果你是一個前端程序員,你不懂得像PHP、Python或Ruby等動態(tài)編程語言,然后你想創(chuàng)建自己的服務,那么Node.js是一個非常好的選擇。

Node.js 是運行在服務端的 JavaScript,如果你熟悉Javascript,那么你將會很容易的學會Node.js。

當然,如果你是后端程序員,想部署一些高性能的服務,那么學習Node.js也是一個非常好的選擇。

二、安裝

1、下載

官網:https://nodejs.org/en/

中文網:http://nodejs.cn/

LTS:長期支持版本

Current:最新版

2、安裝

3、查看版本

node-v

三、快速入門

1、創(chuàng)建文件夾nodejs

2、控制臺程序

創(chuàng)建 01-控制臺程序.js

console.log('Hello?Node.js')

打開命令行終端:Ctrl + Shift + y

進入到程序所在的目錄,輸入

瀏覽器的內核包括兩部分核心:

????DOM渲染引擎;

????js解析器(js引擎)

js運行在瀏覽器中的內核中的js引擎內部

Node.js是脫離瀏覽器環(huán)境運行的JavaScript程序,基于V8 引擎(Chrome 的 JavaScript的引擎)

3、服務器端應用開發(fā)(了解)

創(chuàng)建 02-server-app.js

const?http?=?require('http');

http.createServer(function?(request,?response)?{

????//?發(fā)送?HTTP?頭部?

????//?HTTP?狀態(tài)值:?200?:?OK

????//?內容類型:?text/plain

????response.writeHead(200,?{'Content-Type':?'text/plain'});

????//?發(fā)送響應數據?"Hello?World"

????response.end('Hello?Server');

}).listen(8888);

//?終端打印如下信息

console.log('Server?running?at?http://127.0.0.1:8888/');

運行服務器程序

服務器啟動成功后,在瀏覽器中輸入:http://localhost:8888/?查看webserver成功運行,并輸出html頁面

停止服務:ctrl + c

4、在vscode工具中打開cmd窗口,進行js代碼的執(zhí)行

nodejs問題說明

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容