Vue2工程化

本节目标

  • 工程化开发
  • 项目运行流程
  • 组件化
  • 组件注册
  • 自定义创建项目

工程化开发

基于构建工具的环境开发Vue

Webpack的缺点

  1. webpack的配置并不简单
  2. 基础的配置雷同
  3. 各公司缺乏统一标准

Vue CLI

  1. Vue CLI是Vue官方提供的一个全局命令工具
  2. 帮助我们快速创建标准化的开发环境( 集成了webpack配置 )
  3. 开箱即用, 零配置
  4. 内置babel等工具
  5. 全局安装: yarn global add @vue/cli 或 npm i @vue/cli -g
  6. 查看版本: vue -version
  7. 创建项目: vue create project-name(项目名-不能用中文)
  8. 创建模式: Default([Vue 2] babel, eslint) (使用默认的模式创建项目) (后面学习自定义创建)
  9. 启动项目: yarn serve 或 npm run serve

目录结构

核心文件说明

<!DOCTYPE html>
<html lang="">

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
  <link rel="icon" href="<%= BASE_URL %>favicon.ico">
  <title>
    <%= htmlWebpackPlugin.options.title %>
  </title>
</head>

<body>
  <!-- 兼容: 给不支持JS的浏览器一个提示 -->
  <noscript>
    <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
        Please enable it to continue.</strong>
  </noscript>

  <!--  Vue所管理的容器:  将来渲染的所有内容都会在这个容器中 -->
  <div id="app">
    <!-- 在工程化项目中, 这里不再直接编写模版语法, 而是通过App.vue 提供结构渲染 -->
  </div>

  <!-- built files will be auto injected -->
</body>

</html>
<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png">
    <HelloWorld msg="Welcome to Your Vue.js App"/>
  </div>
</template>

<script>
import HelloWorld from './components/HelloWorld.vue'

export default {
  name: 'App',
  components: {
    HelloWorld
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>
// 该文件的核心作用: 
// 导入App.vue根组件, 创建Vue实例, 通过Vue实例提供的方法, 把根组件渲染到index.html中
import Vue from 'vue'
import App from './App.vue'

// 提示当前处于什么环境(生产环境/开发环境)
Vue.config.productionTip = false

// 官方写法
// new Vue({
//   render: h => h(App),
// }).$mount('#app')

// 创建Vue实例, 提供render方法, 把根组件渲染到index.html中
new Vue({
  // 指定容器,和$mount('#app')作用一致
  el: '#app',
  // 完整写法, 基于App.vue创建结构渲染到index.html中
  render: (createElement) => {
    //基于App创建元素结构
    return createElement(App)
  },
})

自定义创建项目

基于Vue Cli自定义创建项目架子

  1. 开始创建项目

  1. 选择创建模式 (选择自定义创建)

  1. 选择集成模块

  1. 选择路由模式 (选择 n, 使用hash模式)

  1. 选择CSS预处理器 (选择Less)

  1. 选择代码校验风格 (选择无分号风格, 目前主流)

  1. 选择代码校验时机 (保存时校验)

  1. 选择配置文件位置 (单独存放配置文件)

  1. 是否保存创建流程 (选择 n, 不保存)

  1. 按空格键选中或取消选项. 按上下箭头切换选项

ESlint代码规范

一套写代码的约定规则, 正规的团队, 需要统一的编码风格, 提高团队开发效率

  1. Standard Style规范说明: JavaScript Standard Style
  2. 如果代码不符合 standard的要求, ESlint就会提示你

手动修改错误

  1. 学会查看ESLint的报错信息

  1. 有些信息不够明确, 查找详细的规范信息: 规则参考 - ESLint - 插件化的 JavaScript 代码检查工具
  2. 列举一些易懂的规则

自动修改错误

  1. 基于 ESLint 插件可以提供错误高亮, 通过配置, 可以在自动帮我们修复错误
  2. 详细的配置见: 前端环境 -> 7,自动修复错误

项目运行流程

启动命令执行后, 先执行入口文件, 文件文件会导入根组件, 然后创建Vue实例, 通过实例的render()方法把根组件渲染到模版文件的容器中

组件化

一个页面可以拆分成一个个组件, 每个组件有着自己独立的结构, 样式, 行为

好处: 便于维护, 利于复用, 提高开发效率

分类: 普通组件, 根组件

根组件: 整个应用的最上层的组件, 包裹所有普通小组件

组件化

1>组件构成

有三部分组成: template(结构) script(逻辑) style(样式)

结构

<template>
  <div>
    <!-- vue2中有且只能有一个根元素 -->
    ... ...
 </div>
</template>

样式

<style>
  /*
     如果需要less支持,
     1安装: yarn add less less-loader
     2开启: lang="less"
  */
</style>

样式隔离

  • 组件中的样式默认是全局样式, 影响所有组件, 容易造成组件样式冲突
  • 添加scoped属性, 开启样式隔离, 让组件样式只影响自己 (局部样式)

scoped原理

  • 为当前组件的所有标签添加一个自定义属性, 格式: data-v-hash值
  • css选择器都会被自动添加 [data-v-hash值] 的属性选择器
  • 最终结果: 必须是当前组件的元素, 才会有对应的自定义属性, 样式才会生效

样式覆盖

  1. 问题: 由于组件存在样式隔离, 当使用第三方组件库,并且有修改第三方组件默认样式的需求时, 直接修改无效
  2. 解决: 需要用 /deep/ 深度选择器 的方式修改样式
  3. 使用: 在选择器之前加上深度选择器就行了, 达到样式穿透的效果

行为

<script>
// 导出配置对象 
export default {
  name: 'App',
  data(){
    return {}
  }
}
</script>

data配置项

  • 在组件中, data配置项必须是一个函数
  • 保证每个组件实例. 维护独立的一份数据对象
  • 每次创建新的组件实例. 都会执行一次data函数, 得到一个新对象

2>组件注册

局部注册

只能在注册的组件内使用

  1. 创建组件, 使用大驼峰命名法(HmHeader)
  2. 引入组件, import 组件对象 from 'vue文件路径'
  3. 注册组件, 在 components 配置项中注册组件
  4. 使用组件, <组件名></组件名>

全局注册

所有的组件内都能使用

  1. 创建组件, 使用大驼峰命名法(HmButton)
  2. 在main.js中引入组件,
  3. 注册组件, Vue.component('组件名', 组件对象)
  4. 一次只能注册一个组件
  5. 使用组件, <组件名></组件名>
  6. 技巧: 一般都用局部注册, 发现组件多处使用, 再抽离到全局

3>组件拆分
  1. 分析页面, 按模块拆分组件, 搭架子
  2. 根据设计图, 编写html结构css样式
  3. 拆分封装通用小组件

4>动态组件

动态组件: 根据组件名称切换组件

// 定义动态组件
<component :is="comName"></component>

// 渲染Left组件, 改变属性值即切换组件
data() {
    return {
      comName: "Left",
    };
},

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/690612.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣 74.搜索二维矩阵

题目描述&#xff1a; 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&#xff0c;返回 true &#xff1b;否则&am…

Linux RS232

一、确认硬件信息 RS232&#xff1a; 引脚信息&#xff1a; 二、软件配置 1、pinctrl信息&#xff1a; 2、设备树节点&#xff1a; 3、修改串口支持的模式 三、驱动 bsp/drivers/uart/sunxi-uart.c 四、烧录测试 查看串口参数&#xff1a; stty -F /dev/ttyAS3 -a stty -F…

NRF24L01(2.4G)模块的使用——SPI时序(软件)篇

一、SPI的简介&#xff1a; SPI 是英语Serial Peripheral interface的缩写&#xff0c;顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。 SPI&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步的通信总线&#xff0c;并且在芯片的管脚…

澳大利亚和德国媒体投放-国外新闻发稿-海外软文推广

德国媒体 Firmenpresse德国新闻 Firmenpresse德国新闻是一家备受欢迎的新闻发布平台&#xff0c;其好友搜索引擎在收录网站方面表现出色。如果您希望更好地将您的新闻传播给德国受众&#xff0c;Firmenpresse德国新闻将是一个理想的选择。 Frankfurt Stadtanzeiger法兰克福城…

每日一题——Python实现PAT乙级1037 在霍格沃茨找零钱(举一反三+思想解读+逐步优化)

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 时间复杂度分析&#xff1a; 空间复杂度分析&#xff1a; 我要更强 哲学…

用HAL库改写江科大的stm32入门-6-4 PWM驱动舵机

接线图&#xff1a; 如何控制一个舵机 舵机的控制由一个脉冲宽度调制信号(PWM波&#xff09;来实现&#xff0c;该信号在这个实验里使用stm32来发出。 舵机通讯协议&#xff1a; 对应设置参数&#xff1a; ARR的值为19999 CCR的值为500~2500(生成占空比是2.5%~12.5%的波形)…

6.7 输入输出流

输入&#xff1a;将数据放到程序&#xff08;内存&#xff09;中 输出&#xff1a;将数据从程序&#xff08;内存&#xff09;放到设备中 C的输入输出分为3种形式&#xff1a; 从键盘屏幕中输入输出&#xff0c;称为标准IO 对于磁盘进行标准输入输出&#xff0c;称为文件IO…

容声冰箱正式发布主动除菌净味白皮书,守护家人饮食健康

近日&#xff0c;由中国家用电器研究院指导、全国家用电器工业信息中心和容声冰箱联合编制的《冰箱主动除菌净味技术发展白皮书》&#xff08;下称《白皮书》&#xff09;正式发布。 《白皮书》指出&#xff0c;容声将IDP主动除菌技术应用到冰箱冷冻、冷藏区域&#xff0c;实现…

u盘内容无故消失了是什么原因?u盘部分内容无故消失了怎么恢复

在数字化时代&#xff0c;U盘作为便携存储设备&#xff0c;承载着许多重要的数据。然而&#xff0c;有时我们可能会遭遇U盘部分内容无故消失的情况&#xff0c;这无疑给我们的工作和生活带来了不小的困扰。本文将为您解析U盘内容消失的可能原因&#xff0c;并分享几招实用的数据…

数据结构--线性表和串

个人介绍 hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的…

[职场] 社保和商业保险有什么区别?可以只买商保不买社保吗? #微信#经验分享#媒体

社保和商业保险有什么区别&#xff1f;可以只买商保不买社保吗&#xff1f; 我们在提到社保和商业保险时&#xff0c;经常会听到这样一句话&#xff1a;“社保是基础&#xff0c;商保是补充。” 为什么会这样说呢&#xff1f;社保和商保有什么区别呢&#xff1f;今天&#xf…

UE5中在地形中加入湖、河

系统水资产添加 前提步骤123 完成 前提 使用版本 UE5.0.3,使用插件为UE内置的Water和water Extras. 步骤 1 记得重启 2 增加地形&#xff0c;把<启用编辑图层>勾选 如果地形没有勾选上编辑图层&#xff0c;那么就会导致湖、河等水景象无法融入地形。 如果忘记勾选…

分享飞行棋夫妻互动游戏高阶版,揭秘夫妻飞行棋游戏玩法!

朋友们&#xff0c;今天我要给你们介绍一款超级甜蜜的小游戏——情侣飞行棋。别小看它&#xff0c;这可不是咱们小时候玩的那种&#xff0c;这是专门为咱们这些恩爱的小两口设计的&#xff0c;能让你们的感情在游戏中更加甜蜜蜜&#xff0c;擦出更多爱的火花。 准备好了吗&…

帕友饮食改善的小建议!

一、增加膳食纤维的摄入 帕金森病患者应增加膳食纤维的摄入量&#xff0c;以帮助调节肠道功能&#xff0c;预防便秘。膳食纤维丰富的食物包括蔬菜、水果、全谷类食物等。患者应确保每天摄入足够的膳食纤维&#xff0c;以保持肠道通畅&#xff0c;缓解帕金森病可能带来的消化不…

如何将HTTP升级成HTTPS?既简单又免费的方法!

在当今数字化时代&#xff0c;网络安全已成为用户和企业关注的焦点。HTTPS作为一种更加安全的网络通信协议&#xff0c;正逐渐取代传统的HTTP成为新的标准。对于许多网站管理员和内容创作者来说&#xff0c;如何免费升级到HTTPS是一个值得探讨的问题。本文将详细介绍一些免费的…

6.18云服务器大促盘点,错过一次,再等一年!

随着云计算技术的飞速发展&#xff0c;云服务器已成为企业和个人构建和扩展在线业务的首选平台。特别是在大型促销活动如618年中大促期间&#xff0c;云服务提供商纷纷推出极具吸引力的优惠&#xff0c;以降低用户上云的门槛。以下是对当前市场上几个主流云服务提供商的优惠活动…

基本 MOSFET 恒流源

恒流源在电路分析练习和网络定理中占有重要地位&#xff0c;然后它们似乎或多或少消失了。。。除非你是IC设计师。尽管在典型 PCB 设计中很少遇到&#xff0c;但电流源在模拟 IC 领域却无处不在。这是因为它们 1) 用于偏置&#xff0c;2) 作为有源负载。 偏置&#xff1a; 用作…

代码随想录算法训练营第五十三天 | 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费

309.最佳买卖股票时机含冷冻期 视频讲解&#xff1a;动态规划来决定最佳时机&#xff0c;这次有冷冻期&#xff01;| LeetCode&#xff1a;309.买卖股票的最佳时机含冷冻期_哔哩哔哩_bilibili代码随想录 解题思路 1. dp[i][0] 第i天持有股票的状态 dp[i][1]第i天不持股的状…

毫米波SDK使用2

5.5 毫米波SDK-TI组件 毫米波SDK功能分解成组件将在接下来的几小节中解释。有关这些模块的详细文档&#xff0c;请参阅位于mmwave_mcuplus_sdk_<ver>/docs/mmwave_sdk_module_document .html的顶层文档。 5.5.1 演示 5.5.1.1 毫米波演示 这个演示位于mmwave_mcuplus_sd…

React的表单学习

react的表单的双向绑定 // userState实现计数实例 import {useState} from react// 1.声明一个react的状态 -useState// 2.核心绑定流程//1.通过value属性绑定react状态//2.绑定onChange事件&#xff0c;通过事件参数e拿到输入框最新的值&#xff0c;反向修改到react状态 func…