[Vue] 模块化开发

第一章 模块化开发介绍

1.1 为什么需要模块化开发

1.1.1 JavaScript的原始功能

  • 在也买你开发的早期,js制作作为一种脚本语言,做一些简单的表单验证或者动画的实现等,那个时候代码还是很少的
  • 但是随着ajax的异步请求的出现,慢慢形成了前后端的分离
    • 客户端需要完成的事情越来越多,代码量与日俱增
    • 为了应对代码量的剧增,我们通常会将代码阻止在多个js文件中,进行维护
    • 但是这种维护方式,会出现很大的问题
      • 例如:全局变量同名的问题
      • 另外,这种代码的编写方式对js文件的依赖顺序几乎是强制性的

对于全局变量同名的早期解决方案: 闭包(匿名函数)

  • ​ 将我们一个文件中的代码都放在一个匿名函数里面,形成一个闭包,这样,不同文件之间的变量就不会重名了

  • 但是,这样会导致另外一个问题, 代码的复用性变得十分低,我想在另外一个文件引用之前的变量,抱歉,做不到

  • 这时候,模块化的雏形就有了,我们可以在闭包中创建一个obj对象,将我们想要传递的东西都放进去,然后return obj,同时,我们不能再用匿名函数了,给我们的闭包函数定义一个名字,这样别的文件通过调用这个函数就可以接收到这个obj,同时还可以使用我们想要的变量或者方法了

  • //给闭包函数命名
    var module = (function (){
         
    		var obj = {
         };
        
        	var flag = true;
        
        	function sum(num1,num2) {
         
                return sum1 + sum2;
            }
        
        	obj.flag = flag;
        	obj.sum = sum;
        
        	return obj;
        })()
    
    
    //这是另一个闭包函数
    (function(){
         
        //我想要调用flag
        var flag = module.flag;
    })()
    
  • 这就是模块的最基础的封装事实上的模块的封装还有很多高级的话题

    • 幸运的是,前端模块化开发已经有了很多既有的规范,以及对应的实现方案
  • 常见的模块化规范

    • CommonJS 😦 Node用他的规范实现了)
    • AMD
    • CMD
    • 也有ES6的Modules

1.1.2 CommonJS规范(了解)

模块化有两个核心: 导入和导出

在Node环境中,就可以使用这种语法

  • CommonJS的导出

    • moudle.exports = {
             
          flag: true,
          test(a,b){
             
              return a+b;
          },
          demo(a,b){
             
              return a+b;
          }
      }
      
  • CommonJS的导入

    • //CommonJS的模块,这里相当于对对象的解构
      let {
             test , demo , flag} = require('mouduleA');
      
      //等同于
      let a = require('mouduleA');
      
      let test = a.test;
      let demo = a.demo;
      let flag = a.flag;
      

1.2 ES6的module (常用)

1.2.1 export和import的使用

//index文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2>我就是来搞笑的</h2>

<script src="bbb.js" type="module"></script>
<script src="aaa.js" type="module"></script>

</body>
</html>

注意我在script标签加入了type="module"这段代码,意思就是将这对应的文件当作一个模块使用

这个js文件用来演示导出

//aaa.js
let flag = true;

let name = '小明';

let age = 20;

function sum(a, b) {
   
    return a + b;
}

if (flag) {
   
    console.log(sum(
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue中,模块化开发是将一个大型应用程序拆分成小的、可重用的模块,然后将这些模块组合在一起构建整个应用程序。模块化可以提高开发效率,使代码更易于理解和维护。例如,可以将一个功能拆分成多个组件,每个组件专注于实现独立的功能。这样,开发人员可以集中精力处理每个组件的逻辑,而不用同时关注整个应用程序的细节。 在Vue中,可以使用组件来创建模块。组件是一个功能代码集,可以方便地反复使用。通过使用组件,可以将页面拆分成多个小模块,每个小模块负责一个特定的功能。这样,我们可以更加灵活地组织代码,并且可以在不同的地方重复使用同一个功能代码集。 Vue开发模式是MVVM模式,其中VM(ViewModel)的任务是完全封装DOM操作,开发人员不需要再关心Model和View之间的互相影响。当Model发生改变时,View会自动更新;当用户修改View时,Model中的数据也会相应变化。这样,开发人员可以将注意力集中在如何操作Model上,而不需要过多地关注DOM操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Vue实战中的模块化开发](https://blog.csdn.net/qq_40792558/article/details/110380334)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [挑战百日学习计划(小程序开发)-第9天(Vue组件component)](https://download.csdn.net/download/weixin_38691739/14043796)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Vue模块化开发](https://blog.csdn.net/qq_43460335/article/details/123964102)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值