利用vue-cli构建SPA项目以及在SPA项目中使用路由

news2024/11/26 22:16:33

一. 利用vue-cli构建SPA项目

构建前提:

Node.js环境已经搭建完成(可点击上一篇博客进行查看http://t.csdn.cn/i2Rg5)

1.1 vue-cli是什么

vue-cli是一个用于快速搭建Vue.js项目的脚手架工具。用于自动生成vue.js+webpack的项目模板。它提供了一套命令行工具,可以帮助您初始化、配置和管理Vue.js项目的开发环境。

vue-cli简化了Vue.js项目的创建过程,它可以自动设置项目的基本结构、配置文件和依赖项。它还提供了一些预设配置选项,使您可以根据项目需求选择不同的特性和插件。

使用vue-cli,您可以轻松创建单页应用(SPA)或多页应用(MPA),并且可以选择使用Vue Router进行路由管理、Vuex进行状态管理等。它还支持使用ES6、TypeScript、CSS预处理器等进行开发。

通过使用vue-cli,您可以更快地开始Vue.js项目的开发,而无需手动设置项目结构和配置。它提供了一致的项目模板和工作流程,使您可以专注于编写业务逻辑和构建用户界面。

1.2 安装vue-cli

运行以下命令:

npm install -g vue-cli

npm install webpack -g(这个在搭建Node.js环境时运行过就不用再运行了)

安装完成后会出现如下文件:

安装完成之后打开命令窗口并输入 vue -V(注意这里是大写的“V”),如果出现相应的版本号,则说明安装成功。

1.3 使用脚手架vue-cli来构建项目

1. 找到你使用的HBuildX的工作区间,输入cmd命令

 2. 进入cmd窗口后输入vue init webpack xxx(xxx为项目名称,不能是中文和大写字母)

 3. 创建完成后,会出现‘一问一答’模式,需要一一回答它的问题。

 1.Project name:项目名,默认是输入时的那个名称spa1,直接回车

 2.Project description:项目描述,直接回车

 3.Author:作者,随便填或直接回车

 4.Vue build:选择题,一般选第一个

      4.1Runtime + Compiler: recommended for most users

          //运行加编译,官方推荐,就选它了

      4.2Runtime-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     

选择题:选第一项“Yes, use NPM”是否使用npm install安装依赖

4. 全部选择好回车就进行了生成项目,出现如下内容表示项目创建完成

 

5. 打开HBuildX,右键选择导入,选择从本地目录导入,然后就可以导入刚刚创建好的SPA项目。 

6. 启动并访问项目,输入以下命令:  

cd xissl_spa                               xissl_spa是我创建的项目名

npm run dev 

 

出现浏览器地址代表启动成功 

7. 打开浏览器输入"http://localhost:8080"即可

 注意:

vue-cli构建的项目,在控制台npm run dev启动后,默认的调试地址是8080端口的但是大部分时候,我们都要并行几个项目开发,很有可能已经占用了8080端口,所以就涉及到如何去更改调试地址的端口号了。

1.4 项目结构介绍

 使用vue+elementUI创建SPA项目,一般情况下其项目结构组成如下:

        Vue + ESLint + webpack + elementUI + ES6

        Vue: 主要框架

        ESLint: 帮助我们检查Javascript编程时的语法错误,这样在一个项目中多人开发,能达到一致的语法

        Webpack: 设置代理、插件和loader处理各种文件和相关功能、打包等功能。整个项目中核心配置

        elementUI: 是基于vue的一套样式框架,里面有很多封装好的组件样式

        ES6: 全称ECMAScript6.0,是JavaScript的下一个版本标准,2015.06发版  

 1.5 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中,分别对应全局下载和局部下载的依赖包。                         

二. 如何在SPA项目中使用路由

  1. 将原有的路由设置取消
  2. 自定义Home.vue文件和About.vue文件
  3. 修改src/router/index.js路由配置
  4. 触发事件

Home.vue文件

<template>
  <div class="home">这是网站首页,花里胡哨的都在这里</div>
</template>

<script>
export default {
  name: 'Home',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  }
}
</script>

<style>
</style>

About.vue文件

<template>
  <!-- 在这里面有且只有一个根节点,否则运行时会报错 -->
  <div class="about">这是创始人介绍以及网站发展史,就是吹大牛的</div>
</template>

<script>
export default {
  name: 'About',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  }
}
</script>

<style>
</style>

index.js

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: 'Home',
      component: Home
    },
    {
      path: '/Home',
      name: 'Home',
      component: Home
    },{
      path: '/About',
      name: 'About',
      component: About
    }
  ]
})

App.vue

<template>
  <div id="app">
    <!-- <img src="./assets/logo.png"> -->
    <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>

效果:

 

三. 基于SPA项目完成嵌套路由

About.vue文件

<template>
  <!-- 在这里面有且只有一个根节点,否则运行时会报错 -->
  <div class="about">
    <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 Your Vue.js App'
    }
  }
}
</script>

<style>
</style>

AboutMe.vue文件

<template>
  <!-- 在这里面有且只有一个根节点,否则运行时会报错 -->
  <div class="about">
    这是创始人的介绍。
    老板的马匹,不得不拍
  </div>
</template>

<script>
export default {
  name: 'AboutMe',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  }
}
</script>

<style>
</style>

AboutWebsite.vue文件

<template>
  <!-- 在这里面有且只有一个根节点,否则运行时会报错 -->
  <div class="about">
    这是网站发展史。
    吃法的家伙,不得不吹
  </div>
</template>

<script>
export default {
  name: 'AboutWebsite',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  }
}
</script>

<style>
</style>

index.js

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

Vue.use(Router)

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

效果:

 

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

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

相关文章

无涯教程-JavaScript - COUNT函数

描述 COUNT函数计算包含数字的单元格的数量,并计算参数列表中的数字。使用COUNT函数获取在数字范围或数字数组中的数字字段中的条目数。 语法 COUNT (value1, [value2] ...)争论 Argument描述Required/Optionalvalue1The first item, cell reference, or range within whic…

MeterSphere v2.10.X-lts 双节点HA部署方案

一、MeterSphere高可用部署架构及服务器配置 1.1 服务器信息 序号应用名称操作系统要求配置要求描述1负载均衡器CentOS 7.X /RedHat 7.X2C,4G&#xff0c;200GB部署Nginx&#xff0c;实现负载路由。 部署NFS服务器。2MeterSphere应用节点1CentOS 7.X /RedHat 7.X8C,16GB,200G…

b站老王 自动驾驶决策规划学习记录(十二)

自动驾驶之速度规划详解&#xff1a;SL与ST迭代 上一讲&#xff1a;b站老王 自动驾驶决策规划学习记录&#xff08;十一&#xff09; 接着上一讲学习记录b站老王对自动驾驶规划系列的讲解 参考视频&#xff1a; 自动驾驶决策规划算法第二章第七节(上) 速度规划详解:SL与ST迭代…

ubuntu 22.04 服务器网卡无IP地址

ssh连接服务器连接不上&#xff0c;提示如下&#xff1b; 连接显示器&#xff0c;ip addr ls 命令查看IP地址&#xff0c;有网卡但没有IP地址 solution&#xff1a; sudo dhclient enp10s0用于通过 DHCP 协议获取网络配置信息并为名为 enp10s0 的网络接口分配 IP 地址,enp1…

学会根据数据手册指令格式发送数据

根据教导&#xff0c;我才知道如何发送指令 EF AA 00 00 00 00 02 C2 00 C4&#xff08;正确&#xff09; EF AA 00 02 02 02 02 C2 00 C4 (错误格式) 一个字节用两个十六进制的数表示。错误示范的指令它的校验码错误的。校验码根据手册将字节相加计算。

GitStats - 统计Git所有提交记录工具

如果你是研发效能组的一员或者在从事 CI/CD 或 DevOps&#xff0c;除了提供基础设施&#xff0c;指标和数据是也是一个很重要的一环&#xff0c;比如需要分析下某个 Git 仓库代码提交情况&#xff1a; 该仓库的代码谁提交的代码最多 该仓库的活跃度是什么样子的 各个时段的提交…

c++ 纯虚函数、抽象类

一、 纯虚函数 抽象类 只要有一个纯虚函数&#xff0c;这个类称为抽象类 抽象类的特点 1、无法实例化 2、抽象类的子类&#xff0c;必须要重写父类中的纯虚函数&#xff0c;否者也属于抽象类 例子一 #include <iostream> #include <string.h> using namespa…

正确设置PyTorch训练时使用的GPU资源

背景&#xff1a; 最近在使用Hugging Face的transformers api来进行预训练大模型的微调&#xff0c;机器是8卡的GPU&#xff0c;当我调用trainer.train()之后&#xff0c;发现8个GPU都被使用了&#xff0c;因为这个机器上面还有其他人跑的模型&#xff0c;当我进行训练的时候&…

Python 爬虫实战之爬淘宝商品并做数据分析

前言 是这样的&#xff0c;之前接了一个金主的单子&#xff0c;他想在淘宝开个小鱼零食的网店&#xff0c;想对目前这个市场上的商品做一些分析&#xff0c;本来手动去做统计和分析也是可以的&#xff0c;这些信息都是对外展示的&#xff0c;只是手动比较麻烦&#xff0c;所以…

服务器新建FTP文件备份的地址

步骤1&#xff1a;远程桌面连接 步骤2&#xff1a;输入服务器地址&#xff0c;账号&#xff0c;密码 服务器地址&#xff1a;IP地址 账号&#xff1a;Administrator 密码&#xff1a;123456 步骤3&#xff1a;点击这个一个小人的图标 步骤4&#xff1a;General–>Add–&g…

C++ RAII在HotSpot VM中的重要应用

RAII&#xff08;Resource Acquisition Is Initialization&#xff09;&#xff0c;也称为“资源获取就是初始化”&#xff0c;是C语言的一种管理资源、避免泄漏的惯用法。C标准保证任何情况下&#xff0c;已构造的对象最终会销毁&#xff0c;即它的析构函数最终会被调用。简单…

实操技巧:私域+公域=全渠道获客

引流是所有企业都要做的事情。在公域流量平台中不管是线上或线下&#xff0c;获客的成本是越来越高&#xff0c;所以很多企业都要在布局私域&#xff0c;但如果不懂私域运营的逻辑&#xff0c;同样也面临着获客难引流难的问题和获客成本高的问题。 . 今天给大家汇总了私域和公域…

MES管理系统对印刷企业来说有什么优点

在当今高度信息化的时代&#xff0c;许多企业&#xff0c;包括印刷企业&#xff0c;正在寻求更有效地管理其生产过程和运营的方式。在这种情况下&#xff0c;印刷企业MES管理系统成为了他们的首选。印刷企业MES系统在提升企业运营效率、优化生产过程、提升产品质量以及加强供应…

如何向PDB文件添加双键

在用PDB文件进行分子绘图的时候&#xff08;制作OBJ&#xff09;&#xff0c;发现像Atomic blender插件和PDB本身并不支持双键&#xff0c;需要对PDB文件进行修改&#xff0c;参照的该yt链接https://www.youtube.com/watch?vYNoow7qkwFA&t364s&ab_channelEdvinFako 即…

Java乐观锁的实现

乐观锁是一种用于解决并发冲突的机制&#xff0c;它基于假设在大多数情况下没有并发冲突的原则。与悲观锁不同&#xff0c;乐观锁不会对数据加锁&#xff0c;而是通过一定的方式来检测并处理并发冲突。 在实现乐观锁时&#xff0c;通常会使用版本号或时间戳作为标识。当多个线程…

电子科大软件系统架构设计——系统需求分析

文章目录 系统需求分析需求采集研究现有文档与系统组织机构图系统规划文档工作规范文档业务单据报表问题描述文档领域专业知识现有相关软件系统 与客户及相关人员进行面谈正式面谈非正式面谈典型访谈问题优缺点 问卷调查法调查表问卷设计问卷调查表应用方式 观察法头脑风暴法原…

【Spring Boot】拦截器学习笔记

一、普通拦截器 1&#xff0c;新建类MyWebConfig实现WebMvcConfigurer&#xff0c;实现addInterceptors方法 Overridepublic void addInterceptors(InterceptorRegistry registry) {registry// 不拦截哪些请求.excludePathPatterns("/login")// 拦截哪些请求.addPat…

Langchain 大型复杂结构文档解析-识别目录和页码

简介 在文档处理时&#xff0c;尤其是大型复杂结构的文档时&#xff0c;按照字数进行分割&#xff0c;总会造成文本段的割裂&#xff0c;导致召回准确率降低 如果能精确的找到文档大纲和目录&#xff0c;从而按照文档的目录的大纲进行处理&#xff0c;则会提升更多的召回准确…

构建工具Webpack简介

一、构建工具 当我们习惯了Node中使用ES模块化编写代码以后&#xff0c;用原生的HTML、CSS、JS这些东西会感觉到各种不便。比如&#xff1a;不能放心的使用模块化规范&#xff08;浏览器兼容性问题&#xff09;、即使可以使用模块化规范也会面临模块过多时的加载问题。 这时候…

小谈设计模式(5)—开放封闭原则

小谈设计模式&#xff08;5&#xff09;—开放封闭原则 专栏介绍专栏地址专栏介绍 开放封闭原则核心思想关键词概括扩展封闭 解释抽象和接口多态 代码示例代码解释 优缺点优点可扩展性可维护性可复用性高内聚低耦合 缺点抽象设计的复杂性需要预留扩展点可能引入过度设计 总结 专…