前端常见知识点汇总(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

相关文章
|
12天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
12天前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
18 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
17天前
|
JavaScript 前端开发 开发者
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第27天】在前端开发领域,Vue.js和Angular是两个备受瞩目的框架。本文对比了两者的优劣,Vue.js以轻量级和易上手著称,适合快速开发小型到中型项目;Angular则由Google支持,功能全面,适合大型企业级应用。选择时需考虑项目需求、团队熟悉度和长期维护等因素。
22 1
|
18天前
|
JavaScript 前端开发 API
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第26天】前端技术的飞速发展让开发者在构建用户界面时有了更多选择。本文对比了Vue.js和Angular两大框架,介绍了它们的特点和优劣,并给出了在实际项目中如何选择的建议。Vue.js轻量级、易上手,适合小型项目;Angular结构化、功能强大,适合大型项目。
16 1
|
21天前
|
前端开发 JavaScript UED
"前端小技巧大揭秘:JS如何将后台时间戳秒变亲切小时前、分钟前,让用户秒懂,提升互动体验!"
【10月更文挑战第23天】在Web开发中,将后台返回的时间戳转换为“小时前”、“分钟前”、“刚刚”等友好的时间描述是常见需求。本文介绍如何用JavaScript实现这一功能,通过计算当前时间和时间戳的差值,返回相应的描述,提升用户体验。
25 1
|
27天前
|
前端开发 JavaScript 安全
JavaScript前端开发技术
JavaScript(简称JS)是一种广泛使用的脚本语言,特别在前端开发领域,它几乎成为了网页开发的标配。从简单的表单验证到复杂的单页应用(SPA),JavaScript都扮演着不可或缺的角色。
20 3
|
1月前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
138 0
|
1月前
|
资源调度 JavaScript
|
3月前
|
JavaScript 前端开发
【Vue面试题二十五】、你了解axios的原理吗?有看过它的源码吗?
这篇文章主要讨论了axios的使用、原理以及源码分析。 文章中首先回顾了axios的基本用法,包括发送请求、请求拦截器和响应拦截器的使用,以及如何取消请求。接着,作者实现了一个简易版的axios,包括构造函数、请求方法、拦截器的实现等。最后,文章对axios的源码进行了分析,包括目录结构、核心文件axios.js的内容,以及axios实例化过程中的配置合并、拦截器的使用等。
【Vue面试题二十五】、你了解axios的原理吗?有看过它的源码吗?
|
1月前
|
缓存 JavaScript 搜索推荐

推荐镜像

更多