Vue_模块化开发
1.为什么要模块化?
- 在网页开发的早期,js制作作为一种脚本语言,做一些简单的表单验证或动画实现等,那个时候代码还是很少的。
- 那个时候的代码是怎么写的呢?直接将代码写在
<script>
标签中即可
- 那个时候的代码是怎么写的呢?直接将代码写在
- 随着ajax异步请求的出现,慢慢形成了前后端的分离
- 客户端需要完成的事情越来越多,代码量也是与日俱增。
- 为了应对代码量的剧增,我们通常会将代码组织在多个js文件中,进行维护。
- 但是这种维护方式,依然不能避免一些灾难性的问题
注:主要就是重名问题!!!!
2.解决方案——匿名函数
(function(){
var flag= true
})()
注:但是第二个问题,就是复用性降低。所以出现了es5后面的模块雏形
var ModuleA = (function(){
//1.定义一个对象
var obj = {}
//2.在对象内部添加变量和方法
obj.flag = true
obj.myFunc = function(info){
console.log(info);
}
//3.将对象返回
return obj
})()
- 我们做了什么事情呢?
- 非常简单,在匿名函数内部,定义一个对象。
- 给对象添加各种需要暴露到外面的属性和方法(不需要暴露的直接定义即可)。
- 最后将这个对象返回,并且在外面使用了一个MoudleA接受
3.Vue模块化
常见的模块化规范:CommonJS、AMD、CMD,也有ES6的Modules
3.1 commenJS🛬(了解)
- 应用在node环境下
- 导出
module.exports = {
flag: true,
test(a,b){
return a+b
},
demo(a,b){
return a*b
}
}
- 导入
//Commenjs模块
let {test,demo,flag} = require('moduleA');
//等同于
let _mA = require('moduleA');
let test = _mA.test;
let demo= _mA.demo;
let flag= _mA.flag;
3.2 es6
- index.html
- 其中引入js,type属性表示每个js文件模块化,互不影响
<!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>
<script src='aaa.js' type="module"></script>
<script src='bbb.js' type="module"></script>
<script src="mmm.js" type="module"></script>
</body>
</html>
- aaa.js文件
- 导出
let name = '小明'
let age = 18
let flag = true
function sum(num1,num2){
return num1 + num2;
}
console.log("aaa.js");
if(flag){
console.log(sum(20,30));
}
//1.导出方式一
//导出需要的变量
export{
flag,sum
}
//2.导出方式二
export let num1 = 1000;
export let num2 = 2000;
//3.导出函数/类
export function mul(a,b){
return a*b;
}
export class Person{
run(){
console.log('奔跑');
}
}
//4.export default
//只能定义一个
const address = '北京市';
export default address
- bbb.js
- 导入
// 导入aaa的变量
import {sum} from './aaa.js'
console.log("bbb.js");
let name = "小红"
var flag = false
console.log(sum(20,52));
- mmm.js
- 导入
// 1.导入aaa中{}定义的变量
import {flag,sum} from './aaa.js'
console.log("mmm.js");
if(flag){
console.log("小明是天才!!!");
console.log(sum(20,30));
}
// 2.直接导入aaa中export定义的变量
import {num1,num2} from './aaa.js'
console.log(num1);
//3.导入export的function
import {mul,Person} from './aaa.js';
console.log(mul(30,50));
const p = new Person();
p.run();
//4.导入export default
import myOwn from './aaa.js'
console.log(myOwn);
//5.统一全部导入
import * as info from './aaa.js'
console.log(info.num1);
学习视频:
https://www.bilibili.com/video/BV15741177Eh?p=75&spm_id_from=pageDriver
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具