22-12-19 西安 vue-cli(01) vue-cli脚手架、组件化编程、vue-router路由

news2025/2/6 6:54:43

"对A,我还剩一张牌啦!"

"呃。。。要不起"

周六(12-03),早上刷到印度的三相神。梵天,毗湿奴,湿婆,看来很多个相关的视频介绍,结果睡觉(不管是在床上还是在桌子上)的时候,脑子里都是创造与毁灭。。。

周末(12-11),放纵得看了一天de恐怖末日小说(林叔护体),后来我知道为啥自己管不住自己了。少了一样东西,所以有了那样东西,我才能认真去完成这篇博客

周末(12-17,12-18)俩天被洗脑了,看了好几个主播的“鸭鹅杀”。脑子里总是那一句:“叼得一发言:叼的一认为.....,对是不对”


Vue CLI

Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统(脚手架)

 参考官网:介绍 | Vue CLI 

CLI (@vue/cli) 是一个全局安装的 npm 包,提供了终端里的 vue 命令。它可以通过 vue create 快速搭建一个新项目,或者直接通过 vue serve 构建新想法的原型。你也可以通过 vue ui 通过一套图形化界面管理你的所有项目。

1.安装vue cli 

在这之前,确保安装了Node(推荐 v10 以上)

npm install -g @vue/cli

验证它是否安装成功

vue --version

如下:则安装成功


2.创建项目

vue create 项目名

vue create vue-xiaoyumao

选择vue2 ,回车,完成后就会在桌面生成一个文件夹


3.项目目录结构分析

使用VsCode打开

main.js 是 npm run serve 的开端

import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')

index.html

<!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中的元素就会被渲染 -->
    <noscript>
      <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>
    <!--容器-->
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

4.npm run serve 启动项目

打开终端,执行 npm run serve 命令

补充:npm run build 命令会生成最纯粹的js,css,html

最后的效果

ctrl+单击网址(哪个都行),出现如下页面就欧克了

接下来换成我们自己写的组件进行渲染

新建pages目录,下面建2个.vue文件

新增Bedroom.Vue

<template>
  <div>
    <p>{{ msg }}</p>
  </div>
</template>

<script>
export default {
  // eslint-disable-next-line vue/multi-word-component-names
  name: "Bedroom",
  data() {
    return {
      msg: "欢迎来到卧室:你要睡觉吗",
    };
  },
};
</script>

新增Kitchen.vue

<template>
  <div>
    <p>{{ msg }}</p>
  </div>
</template>

<script>
export default {
  // eslint-disable-next-line vue/multi-word-component-names
  name: "Kitchen",
  data() {
    return {
      msg: '欢迎来到厨房:你要做饭吗',
    };
  },
};
</script>

修改App.vue,引入我们自定义的2个组件并注册使用。如下:

<template>
  <div id="app">
    <Bedroom />
    <Kitchen />
  </div>
</template>

<script>
import Bedroom from "./pages/Bedroom.vue";
import Kitchen from "./pages/Kitchen.vue";
export default {
  name: "App",
  components: {
    Bedroom,
    Kitchen,
  },
};
</script>

页面打开后,渲染效果如下:


组件

1、组件概念

模块化(只针对js文件)请参考:

22-08-02 西安 尚医通(02)Vscode、ES6、nodejs、npm、Bable转码器、js模块化、webpack_£小羽毛的博客-CSDN博客_尚医通 nodejs 实现

组件的定义
实现应用中局部功能代码(js,css,html)和资源的集合

从上图得出2点结论:

1.所有的组件都要听大哥vm的指挥

2.组件可以产生嵌套


2、组件嵌套

在单文件组件Bedroom.vue种引入Kitchen组件并使用:

<!--Bedroom组件内容-->
<template>
  <div>
    <p>{{ msg }}</p>
    <kitchen/>
  </div>
</template>

<script>
import Kitchen from './Kitchen.vue';
export default {
  components: { Kitchen },
  // eslint-disable-next-line vue/multi-word-component-names
  name: "Bedroom",
  data() {
    return {
      msg: "欢迎来到卧室:你要睡觉吗",
    };
  },
};
</script>


---------------------------------
<!--Kitchen组件内容-->

<template>
  <div>
    <p>{{ msg }}</p>
  </div>
</template>

<script>
export default {
  // eslint-disable-next-line vue/multi-word-component-names
  name: "Kitchen",
  data() {
    return {
      msg: '欢迎来到厨房:你要做饭吗',
    };
  },
};
</script>

打开vue开发者工具,直观效果"组件嵌套"

页面显示效果:

光标放在Bedroom标签:

 光标放在Kitchen标签上:

实际上在源码里:

div元素没有特定的含义,一般和CSS一同使用。用于对内容块设置样式属性浏览器会在其前后显示折行

VM非常省心,只管理app组件(约定)


3、VueComponent(简称VC)

VueComponent的实例对象,以后简称vc(也可称之为:组件实例对象)。
Vue的实例对象,以后简称vm。

组件本质
1、Bedroom组件本质是一个名为VueComponent的构造函数,且不是程序员定义的,是Vue.extend生成的。
2、我们只需要写<Bedroom/>或<Bedroom></Bedroom>,Vue解析时会帮我们创建Bedroom组件的实例对象,即Vue帮我们执行的:new VueComponent(options).

3.特别注意:每次调用Vue.extend,返回的都是一个全新的VueComponent!!!!

关于this指向:
(1)组件配置中:
data函数、methods中的函数、watch中的函数、computed中的函数它们的this均是vc【VueComponent实例对象】


(2)new Vue(options)配置中:
data函数、methods中的函数、watch中的函数、computed中的函数它们的this均是【Vue实例对象】

vm管理着vc

vm能通过el决定为哪个容器服务,vc不行,只能跟着大哥vm混

vc中,data必须是一个函数,vm中可以是data函数也可以是data对象


路由Vue Router

1.路由route和路由器router概述

路由route是一组key-value的对应关系;多个路由需要经过路由器的管理

对应在vue中就是 路径与组件的映射成为路由

路由器router时时刻刻检测路径变化

2.使用路由后有哪些变化

vue-router是vue的一个插件库,专门用来实现spa应用(单页面web应用),即整个页面只有一个完成的页面。

vue-router相比之前的多页面(多个html)的区别

1.点击页面中的导航链接不会刷新页面

2.做页面的局部更新,数据需要通过ajax请求获取


3.创建路由器/引入路由器

npm install vue-router --save

后续可能会报错:vue_router__WEBPACK_IMPORTED_MODULE_2__.default is not a constructor

解决办法:卸载原本的vue-router,指定安装版本

npm uninstall vue-router
npm install vue-router@3

router/index.js创建路由器

新建router文件夹

在index.js中写入如下内容 

//该文件专门用于创建整个应用的路由器
import VueRouter from "vue-router";

//创建并暴露一个路由器
export default new VueRouter({
  routes: [
    {
      path: "/bedroom",
      component: () => {
        import("../pages/Bedroom");
      },
    },
    {
      path: "/kitchen",
      component: () => {
        import("../pages/Kitchen");
      },
    },
  ],
});

main.js配置路由器

在main.js中添加内容如下

//引入Vue
import Vue from 'vue'
//引入App
import App from './App.vue'
//引入VueRouter
import VueRouter from 'vue-router'
//引入路由器
import router from './router'

//关闭vue的生产提示
Vue.config.productionTip = false

//应用插件
Vue.use(VueRouter);
new Vue({
  router:router,
  render: h => h(App),
}).$mount('#app')

4.router-link/rouer-view使用路由器

router-link实现点击不同的导航,路径发生变化

在APP.vue中,修改为如下内容

<template>
  <div id="app">
    <div>
      <!--vue中借助router-link 实现路由的切换 -->
      <router-link to="/bedroom">卧室</router-link>
      <br/>
      <router-link to="/kitchen">厨房</router-link>
      <!--指定组件的呈现位置-->
      <router-view></router-view>
    </div>
  </div>
</template>

<script>
export default {
  name: "App",
  components: {},
};
</script>

在页面的效果:

点击卧室

点击厨房:


路由器的2种工作模式

路由器的默认工作模式是hash

hash模式

1.对于一个url来说,什么是hash值?#及其后面的内容就是hash值。


2.hash值不会包含在HTTP请求中,即:hash值不会随着http请求发给服务器

3.hash模式

1.地址中永远带着#号,不美观。
2.若以后将地址通过第三方手机app分享,若app校验严格,则地址会被标记为不合法。
3.兼容性较好

history模式
1.地址干净,美观。
2.兼容性和hash模式相比略差。
3.应用部署上线时需要后端人员支持,解决刷新页面服务端404的问题。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥杯题目类型总结

搜索类 BFS 大胖子走迷宫&#xff08;简单&#xff09;&#xff08;2019国赛&#xff09; 迷宫与陷阱&#xff1a;&#xff08;中等2018国赛&#xff09; 迷宫与陷阱&#xff1a;&#xff08;中等2018国赛&#xff09; 迷宫与陷阱&#xff1a;&#xff08;中等2018国赛&…

安卓PorterDuffXfermode之正片叠底 PorterDuff.Mode.MULTIPLY

setXfermode Paint#setXfermode()接口是在绘制时设置画笔的图形混合模式的,下面是官网的介绍&#xff1a; public Xfermode setXfermode (Xfermode xfermode) Set or clear the transfer mode object. A transfer mode defines how source pixels (generate by a drawing com…

three.js之旋转成型(车削缓冲几何体)

文章目录简介例子解释专栏目录请点击 简介 一条曲线围绕空间中的某个轴进行旋转&#xff0c;会形成一个几何体这个在three.js中也是可以实现的&#xff0c;主要就是使用到了three.js中的LatheGeometry&#xff0c;官网 例子 <!DOCTYPE html> <html lang"en&qu…

SpringBoot2.X+Vue+UniAPP 全栈开发医疗小程序 中间件搭建

文章目录一、安装Docker环境1. 关闭SELINUX服务2. 更新yum程序3. 安装Docker4. 管理Docker二、搭建HBasePhoenix大数据平台2.1. 加载镜像2.2. 创建容器2.3. 创建逻辑库2.4. 创建数据表与导入数据2.5. 配置JDBC连接信息三、Redis服务3.1. 加载镜像3.2. 配置文件3.3. 创建Redis容…

专注性能的多端研发框架 - ice.js 3 正式发布!

ice.js 框架在之前的版本中&#xff0c;主要服务于中后台 / PC 的项目研发&#xff0c;而随着无线端以及多端能力的拓展&#xff0c;ice.js 3 将成为一套面向大淘宝技术的终端应用框架。因此在 ice.js 3 的版本中除了「开发者体验」之外&#xff0c;还围绕「用户体验」探索了大…

拥抱实体经济,可以说是当下互联网参与者的首要选择

拥抱实体经济&#xff0c;绝对是当下互联网玩家们的首要选择。无论是头部的互联网企业来讲&#xff0c;还是新生的互联网玩家而言&#xff0c;它们都不约而同地将关注的焦点聚焦在了这样一个方向上。   透过这一点&#xff0c;我们可以非常明显地感受到&#xff0c;一个全新的…

1574_AURIX_TC275_SCU中的杂项控制

全部学习汇总&#xff1a; GitHub - GreyZhang/g_TC275: happy hacking for TC275! 接下来的这一段算是SCU章节最后的一次内容梳理了&#xff0c;剩下的内容也不是很多了。杂项并不是英文的直接翻译&#xff0c;算是我自己选择的一个表达方式。 这里涉及到的功能有CCU6&#x…

基于机器学习算法与历史数据预测未来的站点关闭(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 应用背景&#xff1a; 通过分析序列进行合理预测&#xff0c;做到提前掌握未来的发展趋势&#xff0c;为业务决策提供依据&am…

2023材料科学与工程国际会议(CoMSE 2023)

2023材料科学与工程国际会议&#xff08;CoMSE 2023&#xff09; 重要信息 会议网址&#xff1a;www.icomse.org 会议时间&#xff1a;2023年3月24-26日 召开地点&#xff1a;中国上海 截稿时间&#xff1a;2023年1月25日 录用通知&#xff1a;投稿后2周内 收录检索&…

手把手教你使用Appium进行IOS真机自动化测试

讲解方式&#xff1a; 课程内容条理清晰&#xff0c;目标明确&#xff0c;由浅入深&#xff0c;环环相扣。重点部分进行额外梳理和总结&#xff0c;更易理解和吸收。 教程推荐&#xff1a;使用Appium进行IOS真机自动化测试 课程亮点&#xff1a;1&#xff0c;讲解清晰&a…

VRRP多备份组+策略路由实现主备负载

上篇文章&#xff0c;我们介绍了VRRP单备份组和策略路由之间主备切换的差异&#xff08;&#xff09;&#xff0c;整体上看&#xff0c;单备份组VRRP的主备切换速度非常快&#xff0c;用过调整配置&#xff0c;可以轻轻松松将切换时间压缩到1秒钟以内&#xff1b;但是主备之间无…

【大数据技术Spark】DStream编程操作讲解实战(图文解释 附源码)

DStream编程 批处理引擎Spark Core把输入的数据按照一定的时间片&#xff08;如1s&#xff09;分成一段一段的数据&#xff0c;每一段数据都会转换成RDD输入到Spark Core中&#xff0c;然后将DStream操作转换为RDD算子的相关操作&#xff0c;即转换操作、窗口操作以及输出操作…

和冬天有关的歌

我写过关于四季《新朝花夕拾》&#xff0c;我也写过关于夏天的歌&#xff1a;《和夏天有关的歌》&#xff0c;所以我也想写写冬天。&#xff08;1&#xff09;北风当你想到冬天的时候&#xff0c;你会想起什么&#xff1f;我会想到&#xff1a;北风、北方。正好有这么一首歌&am…

神经网络架构搜索

神经网络架构搜索 定义内涵 神经网络架构搜索是为给定数据集自动找到一个或多个架构的任务&#xff0c;这些架构将为给定 的数据集生成具有良好结果的模型&#xff0c;其本质是在高维空间的最优参数搜索问题。 技术背景 深度学习模型的使用越来越大众化&#xff0c;在很多行…

免费内网穿透工具测评对比,谁更好用 3

文章目录1. 前言2. 对比内容2.1 TCP协议功能及操作对比2.1.1 网云穿的TCP设置2.1.2 cpolar的TCP设置1.2 使用感受对比3. 结语1. 前言 发布本地网页通常是内网穿透的主要作用之一&#xff0c;但并不是唯一作用&#xff0c;内网穿透还能将本地硬件发布到公共互联网上&#xff0c…

ASP.NET企业HR人力资源管理系统源码(带使用手册和操作说明)

中小型企业HR人力资源管理系统源码带使用手册和操作说明 【程序语言】&#xff1a;.NET 【数据库】&#xff1a;SQL SERVER 2008 【运行环境】&#xff1a;WINDOWSIIS 【其他】&#xff1a;前端bootstrap框架 了解更多HR源码事宜可私信我&#xff01; 系统运行环境&#x…

微信小程序云开发博客系统源代码,让写博客像发朋友圈一样简单,含使用部署教程

博客就两种&#xff1a;一是随笔&#xff0c;记录自己的成长历程&#xff0c;二是有目的的发文&#xff0c;例如搬运各种网赚文&#xff0c;我想大部分朋友做博客的初衷都是有一块自己的心灵净土&#xff0c;于是催生了wxapp-blog这款小程序。 完整代码下载地址&#xff1a;微…

零基础如何系统地自学Python?Python应该怎么学?

这次疫情让很多人&#xff0c;都发现自己真的适合群居&#xff0c;也让部分人觉得独居是个不错的选择&#xff0c;但是大部分人都会更明白工作的重要性。 如果没有收入&#xff0c;没有朋友&#xff0c;没有同事&#xff0c;没有那些鸡毛蒜皮的小事&#xff0c;会发现&#xf…

C++ Primer 第六章 函数

C Primer 第六章 函数6.1. Function BasicsParameters and Arguments6.2. Argument Passing6.2.3. const Parameters and Arguments6.2.4. Array Parameters6.2.6. Functions with Varying Parametersinitializer_list ParametersEllipsis Parameters6.3. Return Types and the…

Java多线程-线程的创建(Thread类的基本使用)

文章目录一. 线程和Thread类1. 线程和Thread类1.1 Thread类的构造方法1.2 启用线程的相关方法2. 创建第一个Java多线程程序3. 使用Runnable对象创建线程4. 使用内部类创建线程5. 使用Lambada表达式创建线程6. 多线程并发执行简单演示7. 多线程并发执行的优势二. Thread类的属性…