vue2:mixin(混入)(公共js调用;模块化)

简介: vue2:mixin(混入)(公共js调用;模块化)

mixin(混入)(公共js调用;模块化)

···局部混入:

       前提:如果子组件(SchoolLqj.vue),(StudentLqj.vue)要实现相同的功能

       例如:点击时都要弹出名字(学校名字,学生名字)

1.首先要创建一个在crs目录下xxx.js(用于放公共js方法),这里我们为它起名字为mixin.js

mixin.js:

export const xxx  //此export写法为:分别暴露

exportconstmixin= {    //此export写法为:分别暴露methods:{
dianji(){
alert(this.name)
                        }
                }
        }

StudentLqj.vue

template:

<template><div><h2@click="dianji">学生姓名:{{name}}</h2><h2>学生性别:{{msg}}</h2></div></template>

script:

<script>import {mixin} from'../mixin'...exportdefault{
...mixins:[mixin]
                }
</script>

SchoolLqj.vue

template:

<template><div><h2@click="dianji">学生姓名:{{name}}</h2><h2>学生性别:{{msg}}</h2></div></template>

script:

<script>import {mixin} from'../mixin'...exportdefault{
...mixins:[mixin]
                }
</script>

结果:我们想要的时点击<h1/>中的数据时会弹出窗口显示里面的数据
        现在我们将一个mixin.js方法分别给StudentLqj.vue与SchoolLqj.vue调用
        就会与分别在两个组件中写方法实现相同功能


·mixin(混入)优先级:
·mixin<子组件

(组件调用mixin.js之后,如果组件中有的按照组件中的显示,如果组件中没有的按照mixin.js中的显示)


例如:

mixin.js:

exportconstmixin2= {
data(){
return{
lqj:100,
x:200                        }
                }
        }

SchoolLqj.vue

template:

<template><div><h2@click="dianji">学校姓名:{{name}}</h2><h2>{{lqj}}</h2><h2>{{x}}</h2><h2>学校地址:{{address}}</h2></div></template>

script:

<script>import {mixin, mixin2} from'../mixin'exportdefault {
name:'SchoolLqj',
data(){            
return{
address:'北京',
name:'尚硅谷',
lqj:'666'                        }
                        },
mixins:[mixin,mixin2]
                }
</script>

结果:在{{lqj}}处显示666,{{x}}处显示200。(mixin混入是把mixin.js中写的
        方法与与调用的子组件进行合并,一起显示,但是由于优先级不同,所以如果mixin与子组件之间
        都有同一个方法时,会显示组件中的!)


注意:对于生命周期钩子函数(mounted(){})来说,不管是在mixin.js所写的mounted(){}还是

       在子组件中所写的mounted(){},vue给出的处理是,都要!但是mixin中的mounted会先执行!

       优先级:

       mixin>子组件

举例:

mixin.js:

                export const mixin2 = {
                        mounted(){
                                console.log('我是lqj,你是小胖子吗?')
                        }
                }

StudentLqj.vue:

<script>import {mixin2} from'../minix'exportdefault {
...mounted(){
console.log('我是lqj,你是小胖子吗?')
                                }   
...                        }
</script>

SchoolLqj.vue:

<script>import {mixin2} from'../minix'exportdefault {
...mounted(){
console.log('我是lqj,你是小胖子吗?')
                                }   
...                        }
</script>

结果:页面的控制台中会打印四次“我是lqj,你是小胖子吗?”,因为我们在mixin中写的打印的方法,并且供两个组件调用后,

       两个组件里面也有打印方法,因为(对于生命周期函数(mounted来说,vue的处理时:都要!)),所以mixin中的mounted和

       组件中的mounted都显示!

       注意:mixin中的mounted会先执行!


...全局混入:

       1.首先和上面一样先写好mixin.js公共js供main.js(全局调用)

       2.在main.js中写入(如下:)

       main.js:

       import {mixin,mixin2} from './mixin'

       Vue.mixin(mixin)

       Vue.mixin(mixin2)

       注意:此时组件中不用再去调用mixin.js,全局混入会将main.js调用的mixin.js分配给所有的子组件!










































目录
相关文章
|
1月前
|
JSON JavaScript 前端开发
JavaScript 详解——Vue基础
【8月更文挑战第16天】
38 3
JavaScript 详解——Vue基础
|
18天前
|
JavaScript UED
js之模块化(2)
js之模块化(2)
|
24天前
|
JavaScript 前端开发 编译器
解锁JavaScript模块化编程新纪元:从CommonJS的基石到ES Modules的飞跃,探索代码组织的艺术与科学
【8月更文挑战第27天】随着Web应用复杂度的提升,JavaScript模块化编程变得至关重要,它能有效降低代码耦合度并提高项目可维护性及扩展性。从CommonJS到ES Modules,模块化标准经历了显著的发展。CommonJS最初专为服务器端设计,通过`require()`同步加载模块。而ES Modules作为官方标准,支持异步加载,更适合浏览器环境,并且能够进行静态分析以优化性能。这两种标准各有特色,但ES Modules凭借其更广泛的跨平台兼容性和现代语法逐渐成为主流。这一演进不仅标志着JavaScript模块化的成熟,也反映了整个JavaScript生态系统的不断完善。
34 3
|
18天前
|
JavaScript 前端开发 开发者
js之模块化(1)
js之模块化(1)
|
8天前
|
前端开发 JavaScript 开发者
Express.js与前端框架的集成:React、Vue和Angular的示例与技巧
本文介绍了如何将简洁灵活的Node.js后端框架Express.js与三大流行前端框架——React、Vue及Angular进行集成,以提升开发效率与代码可维护性。文中提供了详细的示例代码和实用技巧,展示了如何利用Express.js处理路由和静态文件服务,同时在React、Vue和Angular中构建用户界面,帮助开发者快速掌握前后端分离的开发方法,实现高效、灵活的Web应用构建。
29 3
|
8天前
|
JavaScript 前端开发 UED
让 HTML 向 Vue.js 华丽转身:如何把 `wangEditor` 仿腾讯文档项目整合进 Vue.js
让 HTML 向 Vue.js 华丽转身:如何把 `wangEditor` 仿腾讯文档项目整合进 Vue.js
|
18天前
|
JavaScript
js之模块化(3)
js之模块化(3)
|
23天前
|
JSON JavaScript 前端开发
Android调用Vue中的JavaScript代码
Android调用Vue中的JavaScript代码
15 3
|
27天前
|
JavaScript
Vue项目打包后都产生了哪些JS请求?
【8月更文挑战第19天】Vue项目打包后都产生了哪些JS请求?
64 0
Vue项目打包后都产生了哪些JS请求?
|
1月前
|
JavaScript 数据安全/隐私保护
如何在Vue组件中调用封装好的外部js文件方法
这篇文章介绍了如何在Vue组件中调用封装好的外部js文件方法,包括在Vue项目中全局引入外部js文件,并在组件中通过this.$myMethod()的方式调用外部js文件中定义的方法。
如何在Vue组件中调用封装好的外部js文件方法