前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)-2

简介: 前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)

2.3 基本语法

基本数据渲染和指令

72ae1cb8b1dc002cb73a524d677fe703_9035c6096e4ad8272d5f8e6e97b0d50c.png


双向绑定

M

模型(Model) :data中的数据


V

视图(View) :模板代码(不是静态页面) (两个语法:指令,大括号表达式)


VM

viewModel: 视图模型(Vue的实例)


Dom Listeners (Dom 监听)

Data Bindings (数据绑定)

data中所有的属性,最后都出现在了vm身上。

vm身上所有的属性 及 Vue原型上所有属性,在Vue模板中都可以直接使用。


双向数据绑定和单向数据绑定:使用 v-model 进行双向数据绑定


MVVM

MVVM 本质上是 MVC (Model-View- Controller)的改进版。即模型-视图-视图模型。


模型model指的是后端传递的数据,视图view指的是所看到的页面。


视图模型viewModel是 mvvm 模式的核心,它是连接 view 和 model 的桥梁。它有两个方向:


将模型转化成视图,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定

将视图转化成模型,即将所看到的页面转化成后端的数据。实现的方式是:DOM 事件监听


这两个方向都实现的,我们称之为数据的双向绑定


<div id="app">
    <!-- v-bind:value只能进行单向的数据渲染 -->
    <input type="text" v-bind:value="search.keyWord"/>
        <!-- v-model 可以进行双向的数据绑定 -->
        <input type="text" v-model="search.keyWord"/>
            <p>{{search.keyWord}}</p>
</div>
<script src="vuejs/vue.min.js"></script>
<script>
    new Vue({
    el: '#app',
    data: {
        search:{
            keyWord:'库里'
        }
    }
})
</script>

绑定事件

<div id="app">
    <button v-on:click="search()">查询</button>
</div>
<script src="vuejs/vue.min.js"></script>
<script>
    new Vue({
    el: '#app',
    data: {
        searchMap:{
            keyWord:'库里'
        },
        //查询结果
        result: {}
    },
    methods:{   //定义多个方法
        search(){
            console.log('search.......')
        },
        f1(){
            console.log('f1.....')
        }
    }
})
</script>

简写


绑定单击事件的时候也可以用@click


绑定的单击事件也可以不加括号

<div id="app">
<button v-on:click="search()">查询</button>
<button @click="f1()">查询</button>
</div>

vue修饰符和条件指令

重要的是记住prevent这个指令,它的作用是当表单提交的时候不会提交表单,而是执行onSubmit方法


<!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">
        <!-- 提交表单的时候不会直接提交表单,而是先去执行onSubmit方法 -->
        <form action="save" v-on:submit.prevent="onSubmit">
            <input type="text" id="name" v-model="user.name"/>
            <button type="submit">保存</button>
        </form>
    </div>
    <script src="vuejs/vue.min.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                user:{}
            },
            methods:{
                onSubmit(){
                    if(this.user.name){
                        console.log('提交表单')
                    }else{
                        alert('请输入用户名')
                    }
                }
            }
        })
    </script>
</body>
</html>

44625eb3bb622518b76ddf8d4ccdbd8a_3eca2cddb551972be5eb940db27a95b9.png


条件渲染

v-if:条件指令


这个逻辑很好理解


复选框双向绑定了ok对象默认是false所以默认下面就会出现库里


点击复选框就会出现詹姆斯


v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。


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


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


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


<body>
    <div id="app">
        <input type="checkbox" v-model="ok"/>是否同意
        <h1 v-if="ok">詹姆斯</h1>
        <h1 v-else>库里</h1>
    </div>
    <script src="vuejs/vue.min.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                ok:false
            }
        })
    </script>
</body>

循环指令

v-for:列表循环指令例1:简单的列表渲染


<body>
    <div id="app">
        <!-- in后面是遍历的次数,前面是遍历的值.in是固定写法 -->
        <ul>
            <li v-for="n in 10">{{n}}</li>
        </ul>
        <!-- n为值,index为索引值 -->
        <ol>
            <li v-for="(n,index) in 10">{{n}}--{{index}}</li>
        </ol>
        <hr/>
        <table border="1">
            <tr v-for="user in userList">
                <td>{{user.id}}</td>
                <td>{{user.username}}</td>
                <td>{{user.age}}</td>
            </tr>
        </table>
    </div>
    <script src="vuejs/vue.min.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                userList:[
                    {id:1,username:'helen',age:18},
                    {id:2,username:'hello',age:12},
                    {id:3,username:'ABC',age:15}
                ]
            }
        })
    </script>
</body>

7cbef798367488cd59f7c05130d5dc02_5aa6d01d3820902a9e962438987873d7.png


2.4 组件(重点)

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


组件可以扩展 HTML 元素,封装可重用的代码。


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


7a2e23a04fa425586f559ab7687a8b21_241fe457bec30b3484fc57728939d93a.png


注册一个全局组件语法格式如下:


Vue.component(tagName, options)

tagName 为组件名,options 为配置选项。注册后,我们可以使用以下方式来调用组件:

<tagName></tagName>

全局组件

所有实例都能用全局组件。


<div id="app">
    <runoob></runoob>
</div>
<script>
    // 注册
    Vue.component('runoob', {
        template: '<h1>自定义组件!</h1>'
    })
    // 创建根实例
    new Vue({
        el: '#app'
    })
</script>

局部组件

我们也可以在实例选项中注册局部组件,这样组件只能在这个实例中使用:


<body>
    <div id="app">
        <runoob></runoob>
    </div>
    <script>
        var Child = {
            template: '<h1>自定义组件!</h1>'
        }
        // 创建根实例
        new Vue({
            el: '#app',
            components: {
                // <runoob> 将只在父模板可用
                'runoob': Child
            }
        })
    </script>
</body>

但是我们还可以把它写进js文件,然后其他项目引入后也可以使用这个组件


15970ab36c2713edf52bf4f7f891b760_8bdae65b0b9c59255b61d80520744f80.png


2.5 生命周期

生命周期就是Vue从创建到销毁的过程


钩子方法的定义:通过一个方法来干涉另一个方法的行为


048f746163d088aeac821d988db96e56_06e0d55a10db8320e3636174ada80260.png


2.6 Vue路由

高级版的超链接


router-link制作导航


router-link 是一个组件,它默认会被渲染成一个带有链接的a标签,通过to属性指定链接地址。


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


通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。Vue.js 路由需要复制到文件夹中


路由出口


路由匹配到的组件将渲染在这里


<router-view></router-view>

引入js文件


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

对代码的详细解析,写在注释里了记得仔细看注释


<!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">
        <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>
    <!-- 顺序不能引错 -->
    <script src="vuejs/vue.min.js"></script>
    <script src="vuejs/vue-router.js"></script>
    <script>
        // 1. 定义(路由)组件。
        // 可以从其他文件 import 进来
        //自定义了三个组件分别是Welocame,Student,Teacher。其只的template是固定写法
        const Welcome = { template: '<div>欢迎</div>' }
        const Student = { template: '<div>student list</div>' }
        const Teacher = { template: '<div>teacher list</div>' }
        // 2. 定义路由
        // 每个路由应该映射一个组件。
        //这里路由映射组件,意思是点击链接跳转到这个组件
        const routes = [
            { path: '/', redirect: '/welcome' }, //设置默认指向的路径
            { path: '/welcome', component: Welcome },
            { path: '/student', component: Student },
            { path: '/teacher', component: Teacher }]
        // 3. 创建 router 实例,然后传 `routes` 配置
        // 创建根实例
        const router = new VueRouter({
            routes // (缩写)相当于 routes: routes 20
        })
        new Vue({
            el: '#app',
            router
        })
    </script>
</body>
</html>


三、axios


3.1 axios简介

就是在vue发送ajax请求


b31090e634db61575d08d0b6b71b40cb_86be95d7252a0ce92eb05599bdd1126d.png


vscode中使用node.js


如果遇见问题可以重启vscode即可


0d1cc6cbb064f12f0eb1c7dbeda33f0e_479f55bee4dabe1deb282388ba157580.png


3.2 总结

2694fd2e8bd616b518597b0d36bae25c_89c46bad0461cbc0e0f7560f406374df.png


四、Node.js


官网下载安装到windows本地即可,Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境


Node.js (nodejs.org)


4.1 总结

4e5b99e7b2da521e86bcce0c3108e051_b638e43f22e9e80e62e9bc2794ab01c9.png

相关文章
|
1月前
|
自然语言处理 JavaScript 前端开发
[JS]知识点
本文介绍了JavaScript中的多个重要知识点,包括ES6、严格模式、类与对象、解构、跨域问题及入口函数等。文章通过详细示例和推荐的外部资源,帮助读者更好地理解和应用这些概念。内容持续更新中,适合初学者和进阶开发者参考。
21 2
[JS]知识点
|
1月前
|
JavaScript 前端开发 安全
ECMAScript 6(以下简称 ES6)的出现为 JavaScript 带来了许多新的特性和改进,其中 let 和 const 是两个非常重要的关键字。
ES6 引入了 `let` 和 `const` 关键字,为 JavaScript 的变量管理带来了革新。`let` 提供了块级作用域和暂存死区特性,避免变量污染,增强代码可读性和安全性;`const` 用于声明不可重新赋值的常量,但允许对象和数组的内部修改。两者在循环、函数内部及复杂项目中广泛应用,有助于实现不可变数据结构,提升代码质量。
29 5
|
1月前
|
JavaScript 前端开发 中间件
JS服务端技术—Node.js知识点
本文介绍了Node.js中的几个重要模块,包括NPM、Buffer、fs模块、path模块、express模块、http模块以及mysql模块。每部分不仅提供了基础概念,还推荐了相关博文供深入学习。特别强调了express模块的使用,包括响应相关函数、中间件、Router和请求体数据解析等内容。文章还讨论了静态资源无法访问的问题及其解决方案,并总结了一些通用设置。适合Node.js初学者参考学习。
44 1
|
1月前
|
前端开发 JavaScript 开发者
React与Vue:前端框架的巅峰对决与选择策略
【10月更文挑战第23天】React与Vue:前端框架的巅峰对决与选择策略
|
1月前
|
前端开发 JavaScript 数据管理
React与Vue:两大前端框架的较量与选择策略
【10月更文挑战第23天】React与Vue:两大前端框架的较量与选择策略
|
1月前
|
存储 JavaScript 前端开发
JS的ES6知识点
【10月更文挑战第19天】这只是 ES6 的一些主要知识点,ES6 还带来了许多其他的特性和改进,这些特性使得 JavaScript 更加现代化和强大,为开发者提供了更多的便利和灵活性。
28 3
|
1月前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
41 4
|
1月前
|
JavaScript 前端开发 搜索推荐
Vue的数据驱动视图与其他前端框架的数据驱动方式有何不同?
总的来说,Vue 的数据驱动视图在诸多方面展现出独特的优势,其与其他前端框架的数据驱动方式的不同之处主要体现在绑定方式、性能表现、触发机制、组件化结合、灵活性、语法表达以及与后端数据交互等方面。这些差异使得 Vue 在前端开发领域具有独特的地位和价值。
|
2月前
|
JavaScript 前端开发 算法
前端优化之超大数组更新:深入分析Vue/React/Svelte的更新渲染策略
本文对比了 Vue、React 和 Svelte 在数组渲染方面的实现方式和优缺点,探讨了它们与直接操作 DOM 的差异及 Web Components 的实现方式。Vue 通过响应式系统自动管理数据变化,React 利用虚拟 DOM 和 `diffing` 算法优化更新,Svelte 通过编译时优化提升性能。文章还介绍了数组更新的优化策略,如使用 `key`、分片渲染、虚拟滚动等,帮助开发者在处理大型数组时提升性能。总结指出,选择合适的框架应根据项目复杂度和性能需求来决定。
|
1月前
|
JavaScript 前端开发 开发者
JavaScript框架React vs. Vue:一场性能与易用性的较量
JavaScript框架React vs. Vue:一场性能与易用性的较量
37 0