day03项目【项目前端相关基础知识一】

01-前端开发和前端开发工具

一、前端开发

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、插件安装

为方便后续开发,建议安装如下插件(红色矩形框标记的插件)

3、创建项目

vscode本身没有新建项目的选项,所以要先创建一个空的文件夹,如project_xxxx。

然后打开vscode,再在vscode里面选择 File -> Open Folder 打开文件夹,这样才可以创建项目。

4、保存工作区

打开文件夹后,选择“文件 -> 将工作区另存为...”,为工作区文件起一个名字,存储在刚才的文件夹下即可

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 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。

1、ECMAScript 和 JavaScript 的关系

一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系?

要讲清楚这个问题,需要回顾历史。1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaScript 提交给标准化组织 ECMA,希望这种语言能够成为国际标准。次年,ECMA 发布 262 号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为 ECMAScript,这个版本就是 1.0 版。

因此,ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现(另外的 ECMAScript 方言还有 Jscript 和 ActionScript)

2、ES6 与 ECMAScript 2015 的关系

ECMAScript 2015(简称 ES2015)这个词,也是经常可以看到的。它与 ES6 是什么关系呢?

2011 年,ECMAScript 5.1 版发布后,就开始制定 6.0 版了。因此,ES6 这个词的原意,就是指 JavaScript 语言的下一个版本。

ES6 的第一个版本,在 2015 年 6 月发布,正式名称是《ECMAScript 2015 标准》(简称 ES2015)。

2016 年 6 月,小幅修订的《ECMAScript 2016 标准》(简称 ES2016)如期发布,这个版本可以看作是 ES6.1 版,因为两者的差异非常小,基本上是同一个标准。根据计划,2017 年 6 月发布 ES2017 标准。

因此,ES6 既是一个历史名词,也是一个泛指,含义是 5.1 版以后的 JavaScript 的下一代标准,涵盖了 ES2015、ES2016、ES2017 等等,而 ES2015 则是正式名称,特指该年发布的正式版本的语言标准。本书中提到 ES6 的地方,一般是指 ES2015 标准,但有时也是泛指“下一代 JavaScript 语言”。

二、基本语法

ES标准中不包含 DOM 和 BOM的定义,只涵盖基本数据类型、关键字、语句、运算符、内建对象、内建函数等通用语法。

本部分只学习前端开发中ES6的最少必要知识,方便后面项目开发中对代码的理解。

1、let声明变量

创建 let.html

<script>

    // var 声明的变量没有局部作用域

    // let 声明的变量  有局部作用域

    //es6定义变量,使用关键字let

    //1 创建代码块,定义变量

    {

        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声明常量(只读变量)

创建 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、解构赋值

创建 解构赋值.html

解构赋值是对赋值运算符的扩展。

他是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。

在代码书写上简洁且易读,语义更加清晰明了;也方便了复杂对象中数据字段获取。

<script>

    //1、数组结构

    //传统写法

    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}

    //传统写法

    let name1 = user.name

    let age1 = user.age

    console.log(name1,age1)


    //ES6写法

    let {name, age} = user //注意:结构的变量必须是user中的属性

    console.log(name,age)

</script>

4、模板字符串

创建 模板字符串.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、声明对象简写

创建 声明对象简写.html

<script>

    //声明对象简写

    const age = 12

    const name = "Amy"

    // 传统

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

    console.log(person1)

    // ES6

    const person2 = {age, name}

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

</script>


6、定义方法简写

创建 定义方法简写.html

<script>

    //定义方法简写

    //传统

    const person1 = {

        sayHi:function(){

            console.log("Hi");

        }

    }

    person1.sayHi();

    //ES6

    const person2 = {

        sayHi(){

            console.log("Hi")

        }

    }

    person2.sayHi();

</script>

7、对象拓展运算符

创建 对象拓展运算符.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、箭头函数

创建 箭头函数.html

箭头函数提供了一种更加简洁的函数书写方式。基本语法是:

参数 => 函数体

<script>

    //传统

    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

创建 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>

        // 创建一个vue对象

        new Vue({

            //绑定vue作用的范围

            el: '#app',

            //定义页面中显示的模型数据

            data:{ 

                message:"Hello Vue!"

            }

        })

    </script>

</body>

</html>

这就是声明式渲染:Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统

这里的核心思想就是没有繁琐的DOM操作,例如jQuery中,我们需要先找到div节点,获取到DOM对象,然后进行一系列的节点操作

在vs code中创建代码片段:

文件 =>  首选项 => 用户代码片段 => 新建全局代码片段/或文件夹代码片段: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、基本数据渲染和指令

创建 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、双向数据绑定

创建 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、事件

创建 03-事件.html

需求:点击查询按钮,按照输入框中输入的内容查找公司相关信息

在前面的例子基础上,data节点中增加 result,增加 methods节点 并定义 search方法。

html中增加 button 和 p

使用 v-on 进行事件处理,v-on:click 表示处理鼠标点击事件,事件调用的方法定义在 vue对象声明的 methods 节点中。

完善search方法。

<body>

    <div id="app">

        <!-- v-on 指令绑定事件,click指定绑定的事件类型,事件发生时调用vue中methods节点中定义的方法 -->

        <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、修饰符

创建 04-修饰符.html

修饰符 (Modifiers) 是以半角句号(.)指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。

例如,.prevent 修饰符告诉 v-on 指令对于触发的事件调用 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、条件渲染

创建 05-条件渲染.html

v-if:条件指令

注意:单个复选框绑定到布尔值

<body>

    <div id="app">

        <input type="checkbox" v-model="ok">同意许可协议</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 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。

    v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。

    相比之下,v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。

    一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。

6、列表渲染

创建 06-列表渲染.html

v-for:列表循环指令

例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 元素,封装可重用的代码。

组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树:

1、局部组件

创建 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、全局组件

创建 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(在页面渲染之前执行)、mounted(在页面渲染之后执行)

创建 03-vue实例的生命周期.html

data: {

message:'床前明月光'

},

methods: {

show() {

console.log('执行show方法')

    },

update() {

this.message='玻璃好上霜'

    }

},

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

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

分析生命周期相关方法的执行时机

//===创建时的四个事件

beforeCreate() {// 第一个被执行的钩子方法:实例被创建出来之前执行

console.log(this.message)//undefined

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

// beforeCreate执行时,data 和 methods 中的 数据都还没有没初始化

},

created() {// 第二个被执行的钩子方法

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

this.show()//执行show方法

// created执行时,data 和 methods 都已经被初始化好了!

// 如果要调用 methods 中的方法,或者操作 data 中的数据,最早,只能在 created 中操作

},

beforeMount() {// 第三个被执行的钩子方法

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

// beforeMount执行时,模板已经在内存中编辑完成了,尚未被渲染到页面中

},

mounted() {// 第四个被执行的钩子方法

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

// 内存中的模板已经渲染到页面,用户已经可以看见内容

},


//===运行中的两个事件

beforeUpdate() {// 数据更新的前一刻

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

console.log('data 中的 message 数据是:'+this.message)

// beforeUpdate执行时,内存中的数据已更新,但是页面尚未被渲染

},

updated() {

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

console.log('data 中的 message 数据是:'+this.message)

// updated执行时,内存中的数据已更新,并且页面已经被渲染

}

<body>

    <div id="app">

    </div>

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

    <script>

        new Vue({

            el: '#app',

            data: {


            },

            created(){

                debugger  //断点

                //在页面渲染之前执行

                console.log('created...')

            },

            mounted(){

                debugger

                //在页面渲染之后执行

                console.log('mounted...')

            }

        })

    </script>

</body>


四、路由

Vue.js 路由允许我们通过不同的 URL 访问不同的内容。

通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。

Vue.js 路由需要载入 vue-router 库

创建 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. 创建 router 实例,然后传 `routes` 配置

         const router = new VueRouter({

             routes // (缩写)相当于 routes: routes

         })


         // 4. 创建和挂载根实例。

         // 从而让整个应用都有路由功能

         const app = new Vue({

             el:'#app',

             router

         })

         // 现在,应用已经启动了!

    </script>

五、axios

axios是独立于vue的一个项目,基于promise用于浏览器和node.js的http客户端

在浏览器中可以帮助我们完成 ajax请求的发送

在node.js中可以向远程接口发送请求

获取数据:

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

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

注意:测试时需要开启后端服务器,并且后端开启跨域访问权限

创建一个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(){//页面渲染之前执行

                //调用定义的方法

                this.getUserList()

            },

            methods:{//编写具体的方法

                //创建方法

                getUserList(){

                    //使用axios发送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)

                         })//请求成功执行then方法

                         .catch(error => {

                         })//请求失败执行catch方法

                }

            }

        })

    </script>

</body>


六、element-ui:

element-ui 是饿了么前端出品的基于 Vue.js的 后台组件库,方便程序员进行页面快速布局和构建

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

创建 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的扩展阅读

https://www.jianshu.com/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环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。

2、Node.js有什么用

如果你是一个前端程序员,你不懂得像PHP、Python或Ruby等动态编程语言,然后你想创建自己的服务,那么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、创建文件夹nodejs

2、控制台程序

创建 01-控制台程序.js

console.log('Hello Node.js')

打开命令行终端:Ctrl + Shift + y

进入到程序所在的目录,输入

浏览器的内核包括两部分核心:

    DOM渲染引擎;

    js解析器(js引擎)

js运行在浏览器中的内核中的js引擎内部

Node.js是脱离浏览器环境运行的JavaScript程序,基于V8 引擎(Chrome 的 JavaScript的引擎)

3、服务器端应用开发(了解)

创建 02-server-app.js

const http = require('http');

http.createServer(function (request, response) {

    // 发送 HTTP 头部 

    // HTTP 状态值: 200 : OK

    // 内容类型: text/plain

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

    // 发送响应数据 "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代码的执行

nodejs问题说明

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350