vue模块化开发

本文详细介绍了Vue.js的模块化开发,包括CommonJS和ES模块化,重点讲解了Vue CLI脚手架的使用,如Vue CLI2与Vue CLI3的区别,以及Vue Router的配置与功能,如路由懒加载、动态路由、嵌套路由和导航守卫。同时,还探讨了Promise在异步编程中的应用以及Vuex状态管理,包括store、getters、mutations和actions的使用。
摘要由CSDN通过智能技术生成

1.前端代码化雏形和CommonJS

JavaScript原始功能

在网页开发的早期,js制作作为一种脚本语言,做一些简单的表单验证或者动画实现,代码量比较少,只要写在script标签里面就可以了

随着ajax异步请求的出现,慢慢形成了前后端分离,客户端需要完成的事情越来越多,代码量也越来越多。为了应对代码量的剧增,我们通常会把代码组织在多个js文件中,进行维护

但会出现一些问题:比如全局变量同名的问题

使用函数闭包可以解决变量冲突的问题,但是使用不了其他文件定义的变量

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

CommonJS的导出

module.exports = {
    flag:true,
    test(a, b){
       return a + b
    },
    demo(a, b){
        return a + b
    }
}

CommonJS的导入

let { test , demo } = required('module')

2.ES模块化的导入和导出

关键字export(导出) import(导入)

导出export

//aaa.js

let name ='jjj'
let age = 18
let height = 1.22
function sum(sum1,sum2){
        return sum1+sum2
    }

//导出方式一
export {name,age,height,sum} 

//导出方式二
export var num1 = 1000
//在定义的时候直接导出

//导出函数/类
export function mul(num1,num2){
    return num1 + num2
}

 某些情况下,一个模块中包含某个功能,我们并不希望给这个功能命名,要让导入者来自己命名

就可以使用export default

只能默认导出一个,而且其他文件导入的时候可以自定义名称,不需要用{}括起来

const address = 'ss'
export default address
//只能默认一个

import jjj from "./aaa.js"
//可以自己命名,不要加{}

导入 import

//mmm.js

import { flag, sum } from "./aaa.js"

//统一全部导入
import * from "./aaa.js"
console.log(aaa.flag);

2021.11.4 

2.webpack

从本质来讲,webpack是一个现代的js应用的静态模块打包工具 

webpack让我们可能进行模块化开发,并且会帮助我们处理模块间的依赖关系

2.1.webpack的安装

webpack依赖node环境,node的工具npm( Node Packages Manager )

3.Vue CLI脚手架

开发大型项目的时候才需要使用Vue CLI,Vue.js需要考虑代码目录结构,项目结构和部署,热加载,代码单元测试等事情,脚手架工具会帮助我们完成这些事情

CLI是command-Line-Interface,命令行界面,vue-cli可以快速搭建Vue开发环境以及对应的webpack配置

3.1.安装脚手架

npm install -g @vue/cli

安装脚手架不成功的话

使用指令

npm clean cache -force

打开终端的时候使用管理员身份执行 

 如果仍然需要使用旧版本的vue init 功能,可以全局安装一个桥接工具

npm install -g @vue/cli-init

3.2.脚手架CLI2初始化项目指令

//cli2
vue init webpack 项目名称

vue cli2

 每个指令的作用

3.3.runtime-compiler和runtime-only的区别

只有main.js有区别

//runtime-compiler
import Vue from 'vue'
import App from './App'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  components: { App },
  template: '<App/>'
})
//runtime-only
import Vue from 'vue'
import App from './App'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  render: h = > h(App)
})

 runtime-compiler

 先把template解析成ast(抽象语法树),编译成render函数,翻译成虚拟dom树,在生成真实dom

template -> ast -> render -> vdom -> UI

 runtime-only

render -> vdom -> UI

  • runtime-only:将template在打包的时候,就已经编译为render函数

  • runtime-compiler:在运行的时候才去编译template

 3.4.vue-cli3

设计原则 0配置,移除了配置文件根目录下的,build和config等目录

提供了vue ui命令,提供了可视化配置

//cli3
vue create 项目名称

 使用空格选择取消

可以使用vue ui指令进行配置

 箭头函数this如何查找,向外层作用域一层层查找this,指到有this的定义

4.vue-router前端路由 

路由(routing)就是通过互联的网络把信息从源地址传输到目的地址的活动

网站开发发展

早期的网站开发html页面是由服务器来渲染的(后端

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 ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

至尊绝伦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值