【Vue】安装并使用vue-cli搭建SPA项目

news2024/12/29 14:50:39

目录

一、Vue-cli安装

1.1 什么是Vue-cli

1.2 安装Vue-cli

1.3 使用Vue-cli构建项目

 

二、SPA项目

2.1 导入、运行SPA项目

2.2 vue项目结构说明

2.3 .什么是*.vue文件

2.4 基于SPA项目完成路由

2.5 基于SPA项目完成嵌套路由


一、Vue-cli安装

1.1 什么是Vue-cli

        Vue CLI是一个基于Vue.js的官方脚手架工具,用于自动生成vue.js+webpack的项目模板,快速搭建Vue.js项目的开发环境。它提供了一套交互式的命令行界面,可以帮助开发者初始化项目、配置构建工具、管理依赖等。Vue CLI集成了一些常用的开发工具和最佳实践,使得开发者可以更加高效地开发Vue.js应用程序。

创建命令:vue init webpack xxx

  • xxx 为自己创建项目的名称
  • 必须先安装vue,vue-cli,webpack,node等一些必要的环境

 

1.2 安装Vue-cli

命令:npm install -g vue-cli

         在cmd窗口输入如下命令,验证vue安装是否成功,注意:这里的V是大写。如果成功会打印版本号

vue -V

1.3 使用Vue-cli构建项目

在需要保存的文件路径中打开cmd命令窗口,创建项目存放目录,运行如下命令:

vue init webpack 项目名

接下来,安装程序会进入一问一答的安装模式:
1)Project name:项目名,默认是输入时的那个名称ycxw_spa,直接回车
2)Project description:项目描述,直接回车
3)Author:作者,随便填或直接回车
4)Vue build:选择题,一般选第一个 

Runtime + Compiler: recommended for most users //运行加编译,官方推荐
Runtime-only: about 6KB lighter min+gzip, but templates (or any Vue-specific HTML) are ONLY allowed in .vue files - render functions are required elsewhere//仅运行时

5)Install vue-router:是否需要vue-router,Y选择使用,这样生成好的项目就会有相关的路由配置文件
6)Use ESLint to lint your code:是否用ESLint来限制你的代码错误和风格。N

7)   Set up unit tests:是否安装单元测试 N
8)Setup e2e tests with Nightwatch?:是否安装e2e测试 N
9)Should we run npm install for you after the project has been created? (recommended) (Use arrow keys)
> Yes, use NPM (选择该项即可)
   Yes, use Yarn
   No, I will handle that myself

全部选择好回车就进行了生成项目:

 最后出现 Project initialization finished! 就下载好了:

二、SPA项目

2.1 导入、运行SPA项目

找到之前构建的spa项目的文件路径,在编程软件中导入: 

1. 回到我们的cmd命令窗口输入该命令

cd 项目名(ycxw_spa)

2. 输入 npm run dev 命令运行

打开此网页即可运行:

 

2.2 vue项目结构说明

文件夹:build   

作用:这个文件夹主要是进行webpack的一些配置

文件 :
webpack.base.conf.js    webpack基础配置,开发环境,生产环境都依赖
webpack.dev.conf.js    webpack开发环境配置
webpack.prod.conf.js    webpack生产环境配置
build.js    生产环境构建脚本
vue-loader.conf.js    此文件是处理.vue文件的配置文件

文件夹:config

作用:配置文件

文件:
dev.env.js    配置开发环境
prod.env.js    配置生产环境
index.js    这个文件进行配置代理服务器,例如:端口号的修改
node_modules        存放npm install时根据package.json配置生成的npm安装包的文件夹

文件夹:src

作用:源码目录(开发中用得最多的文件夹)

文件:
assets    共用的样式、图片
components    业务代码存放的地方,里面分成一个个组件存放,一个页面是一个组件,一个页面里面还会包着很多组件
router    设置路由(定义路由与组件之间的关系)
App.vue    vue文件入口界面
main.js    对应App.vue创建vue实例,也是入口文件,对应webpack.base.config.js里的入口配置

static文件夹:

存放的文件不会经过webpack处理,可以直接引用,例如swf文件如果要引用可以在webpack配置,对swf后缀名的文件处理的loader,也可以直接将swf文件放在这个文件夹引用。


package.json:

这个文件有两部分是有用的:scripts 里面设置命令以及在dependencies和devDependencies中,分别对应全局下载和局部下载的依赖包。

2.3 .什么是*.vue文件

        *.vue 文件,是一个自定义的文件类型,用类似HTML的语法描述一个Vue组件。每个.vue文件包含三种类型的顶级语言块 <template>, <script> <style>。这三个部分分别代表了 html,js,css。

注意:
        不能直接将HTML代码包裹在<template></template>中,而是必须在里面放置一个html标签来包裹所有的代码,一般情况下使用<div></div>标签包含其他代码,也可以使用其他标签,只要有一个根元素即可。

<template>
    <div>
        ...
    </div>
</template>

js代码写在<script>标签中,并通过export导出

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

2.4 基于SPA项目完成路由

        在构建spa项目的时候它已经做了一个默认欢迎界面,接下来我们只需要根据它的格式做一个自定义组件。

1. 在src下的components 创建自定义组件。

Hone.vue

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

<script>
export default {
  name: 'Home',
  data () {
    return {
      msg: 'Welcome to 网站首页'
    }
  }
}
</script>

<style>
</style>

About.vue

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

<script>
export default {
  name: 'About',
  data () {
    return {
      msg: 'Welcome to 云村小威 个人网站'
    }
  }
}
</script>

<style>
</style>

 

2. 定义路由与配置路由路径

router文件夹下面的index.js进行添加路由与配置路由路径:

1. 首先,我们导入了Vue和Vue Router模块:

import Vue from 'vue'
import Router from 'vue-router'

这样我们就可以在代码中使用Vue和Vue Router的功能了。

2 . 接下来,我们导入了一些组件:

import HelloWorld from '@/components/HelloWorld'
import Home from '@/components/Home'
import About from '@/components/About'

这些组件是在其他文件中定义的,通过使用@符号来指定它们的路径。

3. 然后,我们使用Vue Router插件:

Vue.use(Router)

这样Vue就可以使用Vue Router的功能了。

4. 最后,我们导出一个新的Router实例,其中包含了路由的配置信息:

export default new Router({
  routes: [{
    path: '/',
    name: 'HelloWorld',
    component: HelloWorld
  }, {
    path: '/Home',
    name: 'Home',
    component: Home
  }, {
    path: '/About',
    name: 'About',
    component: About,
  }]
})

        在这个配置中,我们定义了几个路由规则。每个路由规则都包含了一个路径(path)、一个名称(name)和一个组件(component)。当用户访问不同的路径时,Vue Router会根据配置的规则来加载相应的组件。

例如:

        当用户访问根路径('/')时,会加载名为'HelloWorld'的组件;当用户访问'/Home'路径时,会加载名为'Home'的组件;当用户访问'/About'路径时,会加载名为'About'的组件,并且还定义了两个子路由,分别是'/AboutMe'和'/AboutWebsite',它们分别对应名为'AboutMe'和'AboutWebsite'的组件。

        这样,我们就完成了Vue Router的配置,可以在Vue应用中使用这些路由规则来实现页面导航和组件加载了。

完整示例:

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import Home from '@/components/Home'
import About from '@/components/About'

Vue.use(Router)

export default new Router({
  routes: [{
    path: '/',
    name: 'HelloWorld',
    component: HelloWorld
  }, {
    path: '/Home',
    name: 'Home',
    component: Home
  }, {
    path: '/About',
    name: 'About',
    component: About
  }]
})

3. 定义触发路由的按钮

找到Aue.js定义路由触发的按钮:

<template>
  <div id="app">
    <img src="./assets/vue.png" style="width: 350px;height: 250px;"><br>
    <router-link to="/Home">首页</router-link>
    <router-link to="/About">关于本站</router-link>
    <router-view/>
  </div>
</template>

<script>
export default {
  name: 'App',
}
</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>

4. 运行测试

 

2.5 基于SPA项目完成嵌套路由

1. 示例:准备在About.vue组件中嵌套其他组件

<template>
  <div>
    <h1>{{ msg }}</h1><br />
    <router-link to="/AboutMe">关于我</router-link>
    <router-link to="/AboutWebsite">关于本站</router-link>
    <router-view></router-view>
  </div>
</template>

<script>
export default {
  name: 'About',
  data () {
    return {
      msg: 'Welcome to 云村小威 个人网站'
    }
  }
}
</script>

<style>
</style>

注意:一定要加上 <router-view></router-view>

        它Vue Router中的一个占位符标签。它的作用是用来显示当前路由对应的组件内容。

当你在Vue应用中使用了Vue Router,并且配置了路由规则后,<router-view></router-view> 标签会根据当前的路由路径,动态地渲染对应的组件内容。

 

2. 自定义需要嵌套的组件

AboutMe.vue

<template>
  <div>
    <img src="../assets/自拍照.png" style="width: 200px;height: 200px;"/>
  </div>
</template>

<script>
  export default {
    name: 'AboutMe'
  }
</script>

<style>
</style>

AboutWebsite.vue

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

<script>
  export default {
    name: 'AboutWebsite',
    data() {
      return {
        msg: '关于本站无需多言,帅说明了一切...'
      }
    }

  }
</script>

<style>
</style>

3. 效果演示

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

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

相关文章

ubuntu 配置NTP时间服务器

sudo apt update 显示秒&#xff08;进入Top Bar 打开second&#xff09; sudo apt install gnome-tweaks 安装ntp服务器 sudo apt install ntp 在服务端修改ntp配置开放客户端所在的网段 sudo gedit /etc/ntp.conf restrict 172.19.7.0 mask 255.255.255.0 nomodify notrap 重…

java - 散列算法 SHA-256 hash值计算

文章目录 前言java - 散列算法 SHA-256 hash值计算1. 散列算法是什么?2. 散列算法的主要特征是什么?3. 计算SHA-256值有没有可能重复4. SHA-256算法实现示例 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作…

Python实现MYSQL蜜罐

1 LOAD DATA INFILE介绍 首先开启一个Mysql&#xff0c;看一下mysql是如何读取主机文件的。 1.1 linux搭建mysql 1&#xff09;docker运行mysql 2&#xff09;启动Mysql docker run -itd…

【docker安装Mysql并配置主从复制】

Mysql主从复制 目的&#xff1a; 是为了后面naocs集群的服务配置做准备工作 准备工作 准备至少两台虚拟机或服务器&#xff0c;安装好了docker&#xff0c;找到他们的ip地址 后面操作都用xshell操作来代替 拉取并启动mysql镜像和容器 主机的命令为mysql01&#xff0c;对…

综述 | 实时三维形状测量技术的综述

原创 | 文 BFT机器人 随着人工智能和机器人技术的快速发展&#xff0c;实时三维形状测量技术变得愈发重要。由于机器人通常在动态环境中操作&#xff0c;因此机器人装备的三维形状测量技术需要能够实时从运动的物体中获取三维形状信息。未来的三维机器视觉技术实际上依赖于实时…

个人博客搭建记录

个人博客地址&#xff1a;www.jiasun.top 使用github pagehexo搭建&#xff0c;主题为fluid&#xff0c;搭建步骤参照&#xff1a;Github hexo 实现自己的个人博客、配置主题&#xff08;超详细&#xff09; 主题&#xff1a;https://hexo.fluid-dev.com/ 搭建时的问题&…

eNSP模拟器!通过Cloud云使本机与模拟器互通,成功通过ssh登陆设备!

首先配置云接口&#xff1a; 配置路由器IP地址&#xff1a; [Huawei]int g 0/0/0 [Huawei-GigabitEthernet0/0/0]ip ad 192.168.56.2 24 用本机去ping路由器&#xff0c;路由器成功与本机互通。 ssh登陆配置&#xff1a; [Huawei]user-interface vty 0 4 [Huawei-ui-vty0-4]…

计算物理专题----随机游走实战

计算物理专题----随机游走实战 Problem 1 Implement the 3D random walk 拟合线 自旋的 拟合函数&#xff08;没有数学意义&#xff09; 参数&#xff1a;0.627,3.336,0.603&#xff0c;-3.234 自由程满足在一定范围内的均匀分布以标准自由程为单位长度&#xff0c;…

ETHERCAT转MODBUS TCP/IP协议网关

产品介绍 JM-ECT-TCPIP是自主研发的一款EtherCAT从站功能的通讯网关。该产品主要功能是将EtherCAT网络和 TCP/IP 网络连接起来。 本网关连接到EtherCAT总线中做为从站使用&#xff0c;连接到 TCP/IP 网络中做为服务器或客户端使用。 产品参数 技术参数 u 网关做为EtherCAT网…

Docker容器数据持久化存储机制

这里写目录标题 一、Docker容器数据持久化存储介绍二、Docker容器数据持久化存储方式三、Docker容器数据持久化存储方式应用案例演示3.1 docker run -v3.1.1 创建了本地目录3.1.2 未创建本地目录 3.2 volumes3.2.1 创建数据卷3.2.2 使用数据卷 一、Docker容器数据持久化存储介绍…

Dynaform 7.0安装说明教程

Dynaform 7.0安装说明教程 1.安装ANSYS License Manager 2023R2 2.用有裂纹的程序文件夹覆盖原始<ANSYS Inc>程序文件夹&#xff08;默认设置为&#xff1a;C:\program Files\ANSYS Inc&#xff09; 3.运行程序>ANSYS&#xff0c;股份有限公司许可管理器>ANSYS许…

安装封箱机需要的条件

任何设备的安装都需要一定的场地条件&#xff0c;封箱机产品也不例外&#xff0c;对于初次使用封箱机的用户&#xff0c;我们会仔细提醒客户需要准备的条件&#xff0c;今天就把这些条件和大家分享一下&#xff0c;方便您今后更方便的使用封箱机产品。 1、适当的场地。用户在购…

【C++】C++11——构造、赋值使用条件和生成条件

移动构造和移动赋值生成条件移动构造和移动赋值调用逻辑强制生成默认函数的关键字default禁止生成默认函数的关键字delete 移动构造和移动赋值生成条件 C11中新增的移动构造函数和移动赋值函数的生成条件为&#xff1a; 移动构造函数的生成条件&#xff1a;没有自己实现的移动…

Redis GEO 类型与 API 结合,地理位置优化的绝佳实践

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…

Linux下的网络编程——网络基础、socket编程(一)

前言&#xff1a; 前面我们学习了Linux的系统编程&#xff0c;从今天我们就要开始Linux网络编程的学习了&#xff0c;Linux网络编程中的知识点可能没有前面的Linux系统多一点&#xff0c;但是基础的网络知识我们还是需要了解的&#xff0c;并且网络编程中的socket编程的知识也…

打赏收款收银台多合一支付收款HTML源码

多合一打赏支付收款&#xff08;微信、QQ、支付宝&#xff09; 源码直接上传到服务器解压缩即可访问,或者用本地浏览器打开访问 PS&#xff1b;只需要将自己的收款二维码替换即可 该源码全开源无加密&#xff0c;所有操作均在本地无需调用外部资源防止失效&#xff01; 源码…

微前端架构的几种技术选型

微前端架构的几种技术选型随着SPA大规模的应用&#xff0c;紧接着就带来一个新问题&#xff1a;一个规模化应用需要拆分。 一方面功能快速增加导致打包时间成比例上升&#xff0c;而紧急发布时要求是越短越好&#xff0c;这是矛盾的。另一方面当一个代码库集成了所有功能时&am…

【校招VIP】java语言考点之反射

考点介绍&#xff1a; java的反射(reflection)机制是指在程序的运行状态中&#xff0c;可以构造任意一个类的对象&#xff0c;可以了解任意一个对象所属的类&#xff0c;可以了解任意一个类的成员变量和方法&#xff0c;可以调用任意一个对象的属性和方法。这种动态获取程序信息…

探索工业路由器如何助力无人驾驶方案的突破性解析

随着无人驾驶技术的发展&#xff0c;越来越多的企业和组织开始部署无人驾驶车辆来提高运输效率和安全性。在这些方案中&#xff0c;工业路由器被广泛应用于建立稳定、安全和高效的通信网络。在本篇文章中&#xff0c;我们将分享一个真实的无人驾驶方案部署案例&#xff0c;其中…