Vue.js 前端开发实战之 08-Vue 开发环境

Vue CLI

安装 Vue CLI

Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,可以自动生成 Vue.js+Webpack 的项目模板,其提供了强大的功能,用于定制新项目、配置原型、添加插件和检查 webpack 配置。

Vue CLI 文档:https://cli.vuejs.org/

使用 Vue CLI,需要全局安装 @vue/cli。


示例:全局安装 @vue/cli

终端执行:

# 安装vue-cli npm install @vue/cli -g # 查看vue-cli 版本信息 vue -V

示例效果:


使用命令行创建项目

@vue/cli 安装完成后,可以使用命令行创建一个 Vue 脚手架项目。


示例:使用命令行创建项目

终端执行:

# 创建项目 vue create 项目名

选择 Vue 脚手架项目的预设配置:

示例效果:

终端执行:

# 切换项目目录 cd hello-vue # 运行项目 npm run serve

示例效果:


使用 GUI 创建项目

Vue CLI 引入了图形用户界面(GUI)来创建和管理项目。


示例:使用 GUI 创建项目

终端执行:

# 运行GUI vue ui

示例效果:

在浏览器中打开 GUI:

在 GUI 中创建项目,手动配置项目,注意选择插件和 Vue.js 版本:

项目创建完成后,可以在 GUI 中对项目和插件进行管理:

使用 IDEA 打开创建好的 Vue 脚手架项目:


Vue CLI 项目结构

使用 Vue CLI 创建的项目:

使用 Vue CLI 创建的项目的文件/文件夹结构:

名称描述
node_modules通过 npm 下载的项目中使用的依赖包
public包含了 index.html 文件,是项目的入口页面
该文件夹可以存放静态资源,静态资源不会被 webpack 压缩
src包含了项目的源代码
src/assets用于存放静态资源,如图片、样式表等
该文件夹存放的静态资源会被 webpack 压缩
src/components用于存放 Vue 普通组件
src/router/index.jsVue-Router 路由插件的配置文件
src/store/index.jsVuex 状态管理插件的配置文件
src/views用于存放 Vue 视图组件
src/App.vue所有组件的根组件
src/main.js项目的入口 JavaScript 文件
全局的配置和初始化设置在这里执行
package.jsonnpm 配置文件
vue.config.jsVue CLI 配置文件,可以配置 Vue CLI 选项
如 webpack 配置、开发服务器设置等

*.vue 文件:Vue 单文件组件。每一个 Vue 组件都包含 script、template、style。

<script> // export default对外抛出组件,方便其他位置调用 export default { // 组件配置 } </script> <template> <!-- 组件模板,有且只能有一个根标签 --> </template> <style scoped> <!-- 组件的CSS样式 scoped:样式只针对当前组件有效 --> </style>

src/router/index.js:Vue-Router 路由插件的配置文件。

// 导入Vue、Vue-Router import Vue from 'vue' import VueRouter from 'vue-router' // 导入了HomeView组件 import HomeView from '../views/HomeView.vue' // 对于脚手架项目,需要手动调用Vue.use安装路由插件 Vue.use(VueRouter) // 配置一组路由 const routes = [ { path: '/', name: 'home', component: HomeView }, { path: '/about', name: 'about', // 使用函数式写法,实现路由懒加载 // 当路由被触发时,该组件才会被异步加载 component: () => import('../views/AboutView.vue') } ] // 实例化路由管理者 const router = new VueRouter({ routes }) // 对外抛出路由管理者 export default router

src/main.js:项目的入口 JavaScript 文件。

// 导入相关内容 import Vue from 'vue' import App from './App.vue' import router from './router' import store from './store' Vue.config.productionTip = false // 实例化Vue实例 // 渲染APP实例,并挂载到index.html的#app上 new Vue({ router, store, render: h => h(App) }).$mount('#app')

package.json:npm 配置文件。

{ "name": "hello-vue", "version": "0.1.0", "private": true, "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build" }, "dependencies": { "core-js": "^3.8.3", "vue": "^2.6.14", "vue-router": "^3.5.1", "vuex": "^3.6.2" }, "devDependencies": { "@vue/cli-plugin-babel": "~5.0.0", "@vue/cli-plugin-router": "~5.0.0", "@vue/cli-plugin-vuex": "~5.0.0", "@vue/cli-service": "~5.0.0", "vue-template-compiler": "^2.6.14" }, "browserslist": [ "> 1%", "last 2 versions", "not dead" ] }

安装插件

在 Vue CLI 中,可以使用三种方式安装插件。

  • 使用 vue add 命令安装 Vue CLI 官方提供的插件。
  • 使用 npm install 命令安装第三方提供的插件。
  • 使用 GUI 安装插件。

CLI 服务和配置文件

CLI 服务

在 Vue 项目中需要使用 npm run serve 指令来启动项目,其中 serve 的内容就是指 vue-cli-service 的 CLI 命令。

启动项目的指令,可以在 npm 配置文件(package.json)中找到。

"scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build" },

vue-cli-service 的基本命令:

名称描述
serve运行命令后,会启动一个基于 webpack-dev-server 的开发服务器,并附带开箱即用的模块热重载
常用选项:
–open:在服务器启动时打开浏览器
–copy:在服务器启动时将 URL 复制到剪切板
–mode:指定运行环境模式,默认为 development
build运行命令后,会将项目压缩、编译到 dist 文件夹,产生一个用于生产环境的包
常用选项:
–mode:指定运行环境模式,默认为 production。
–dest:指定输入目录,默认为 dist。

配置文件

vue.config.js 是一个可选的配置文件,如果项目的根目录中存在这个文件,那么它会被 @vue/cli-service 自动加载。

vue.config.js 的基本配置:

const { defineConfig } = require('@vue/cli-service') module.exports = defineConfig({ transpileDependencies: true, publicPath: '/', // 项目根目录 outputDir: 'dist', // 构建输出目录 devServer: { // 配置开发环境 port: 8080, // 端口号 } })

配置多页应用

使用 Vue CLI 创建的 Vue 项目一般都是 SPA 单页面应用(只有一个 index.html)。

在一些特殊常见下,如一套系统的管理端和客户端分为不同的页面应用,就需要构建多页面应用。

单页面应用(SPA)和多页面应用(MPA)的区别:

对比项单页面应用多页面应用
应用结构一个页面 + 多个组件多个页面 + 多个组件
跳转方式组件切换页面切换
公共资源是否重新加载局部刷新整页刷新
页面间数据传递简单复杂
用户体验体验好体验一般
SEO 优化需要单独方案实现可以直接实现
适用范围体验要求高的项目SEO 要求高的项目

Vue CLI 支持使用 vue.config.js 中的 pages 选项构建一个多页面应用。


示例:配置多页应用

在 src 文件夹下创建 user、admin 文件夹代表两个不同的模块,并将相关文件和文件夹复制到这个两个模块中,注意修改相关引用的路径:

在 public 文件夹下创建 user.html、admin.html:

Vue 项目配置文件(vue.config.js):

const { defineConfig } = require('@vue/cli-service') module.exports = defineConfig({ transpileDependencies: true, pages: { user: { entry: 'src/user/main.js', // 入口的js文件 template: 'public/user.html' // 页面模板文件 }, admin: { entry: 'src/admin/main.js', // 入口的js文件 template: 'public/admin.html' // 页面模板文件 } } })

示例效果:


环境变量和模式

环境变量

在一个项目的开发过程中,一般都会经历本地开发、代码测试、开发自测、环境测试、预上线环境,最后才能发布线上正式版本。在这个过程中,每个环境可能都会有所差异。

为了方便管理,在 Vue CLI 中可以为不同的环境配置不同的环境变量。

在项目根目录中,可以放置以下文件来指定环境变量:

  • .env:在所有的环境中被载入。
  • .env.local:在所有的环境中被载入,但会被 git 忽略。
  • .env.[mode]:只在指定的模式中被载入。
  • .env.[mode].local:只在指定的模式中被载入,但会被 git 忽略。

环境文件加载的优先级:

  • 为一个特定模式准备的环境文件(如 .env.production)将会比一般的环境文件(如 .env)拥有更高的优先级。
  • Vue CLI 启动时已经存在的环境变量拥有最高优先级,并不会被 .env 文件覆写。

环境变量的使用:

  • 在配置文件中使用,可以直接通过 process.env.XX 来使用环境变量。
  • 在 src 目录的代码中使用环境变量时,要求环境变量以 VUE_APP_X 开头。

示例:环境变量

开发环境配置文件(.env.development):

PORT=8099 VUE_APP_NAME=duozai

项目入口配置文件(src/main.js):

new Vue({ router, store, render: h => h(App), created() { console.log(process.env.VUE_APP_NAME) } }).$mount('#app')

Vue 项目配置文件(vue.config.js):

devServer: { port: process.env.PORT, }

示例效果:


模式

默认情况下,一个 Vue CLI 项目有三个模式:

  • development 模式:即开发模式,用于 vue-cli-service serve。
  • test 模式:即测试模式,用于 vue-cli-service test:unit。
  • production 模式:即生产模式,用于 vue-cli-service build 和 vue-cli-service test:e2e。

在执行 vue-cli-service 命令时,可以通过传递 --mode 选项参数为命令行覆写默认的模式。


示例:模式

终端执行:

vue-cli-service serve --mode stage

静态资源管理

路径引用规则

  • 如果 URL 是一个绝对路径(如 /images/foo.png),它将会被保留不变,可以引用 public 文件夹下的资源。
  • 如果 URL 以 . 开头,它会被认为是相对模块请求,根据文档目录结构进行解析。
  • 如果 URL 以 ~ 开头,其后的任何内容都会认为是模块请求,可以引用 node_modules 文件夹下的资源。
  • 如果 URL 以 @ 开头,它也会作为一个模块请求被解析,Vue CLI 默认别名 @ 表示 src 文件夹。

处理静态资源

  • 放置在 src/assets 文件夹下的静态资源通过相对路径被引用,这类引用会被 webpack 处理。
  • 放置在 public 文件夹下通过绝对路径被引用,这类资源将会直接被拷贝,而不会经过 webpack 的处理。

示例:加载图片

根组件(App.vue):

<template> <div> <!-- 引用public文件夹下的avatar.png --> <img src="/avatar.png" style="width: 100px"> <!-- 引用src/assets文件夹下的logo.png --> <img src="@/assets/logo.png" style="width: 100px"> </div> </template>

示例效果:


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

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

相关文章

英语_阅读_15-year-old teenagers_待读

Most 15-year-old teenagers are worrying about their math homework and trying to fit in with other kids of their age.大多数15岁的青少年正为数学作业发愁,并努力融入同龄人的圈子。 But Henry Patterson is b…

包围盒加平均分段数 小三角找鼠标 扫描完没找到就是没点到,找到就是点到

包围盒加平均分段数 小三角找鼠标 扫描完没找到就是没点到,找到就是点到鼠标点选那个 把可视范围内的模型的包围盒细分成小方块 然后小方块中心点找鼠标 加上点的设置的死值得半径就找到鼠标了 还是鼠标点选算法,倒…

Linux内核模块开发包含文件设置

-I 和 -include 和 -isystem 有哪些区别? 1. -I(Include Directory Search Path) -I /usr/include作用:添加头文件搜索路径,编译器会按顺序在这些路径中查找 #include 的文件。 特点:搜索优先级:按照命令行中出…

高中辅导机构提分效果哪家强?2026最新红榜揭秘与选择指南

高中辅导机构提分效果哪家强?2026最新红榜揭秘与选择指南一、高中辅导机构选择现状:家长学生为何陷入 “选择困难”? (一)高中阶段提分需求的紧迫性 高中三年,无疑是每个学生学业道路上最为关键的爬坡期。新高考…

基于Simulink的风电变流器SVPWM调制策略仿真

目录 手把手教你学Simulink 一、引言:为什么“风电变流器必须用SVPWM”? 二、SVPWM 基本原理 1. 八个基本电压矢量 2. 合成参考电压矢量 Vref​ 3. 扇区判断与作用时间计算 步骤: 4. 开关序列(7段式对称) 三、系统参数设定 四、Simulink 建模全流程 第一步:搭建…

学Simulink——风电电机控制场景实例:基于Simulink的DFIG有功/无功功率解耦控制仿真

目录 手把手教你学Simulink 一、引言:为什么“双馈感应发电机**(DFIG) 二、DFIG 功率控制原理 1. 定子功率表达式(静止坐标系) 2. 定子磁链定向(SFO)——关键一步! 三、系统架构总览 四、关键参数设定(1.5 MW DFIG) 五、Simulink 建模全流程 第一步:搭建 DF…

别再手动改 YAML 了!用 Go 编写 K8s Operator,实现业务应用的“自动驾驶”

摘要&#xff1a; 还在用传统的 Helm Chart 部署应用&#xff1f;面对复杂的 Day 2 运维&#xff08;如自动扩容、故障自愈、配置热更&#xff09;&#xff0c;单纯的模板渲染已经捉襟见肘。本文将带你跳出 YAML 工程师的怪圈&#xff0c;使用 Go 语言和 Kubebuilder 开发专属的…

支撑百万级定时任务!深扒 Kafka 与 Netty 的“时间轮”神技 (内附硬核图解)

摘要&#xff1a; 无论是电商平台的订单超时自动取消、RPC 框架的请求超时检测&#xff0c;还是游戏中的定时刷新活动&#xff0c;定时任务在分布式系统中无处不在。然而&#xff0c;当任务量级从几千飙升至百万、千万级时&#xff0c;传统的 JDK 定时器瞬间崩溃。本文将带你拆…

git 本地仓库 删除最近一次commit

git 本地仓库 删除最近一次commit 1. 彻底删除最近一次 commit(包括更改) # 删除最近一次 commit,工作区会回到该 commit 之前的状态 # 注意:这会永久删除该 commit 的更改 git reset --hard HEAD~1# 或者用 commi…

【开题答辩全过程】以 民宿预订管理系统的设计与实现为例,包含答辩的问题和答案

个人简介 一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等 开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。 感谢大家…

【开题答辩全过程】以 母婴店购物系统为例,包含答辩的问题和答案

个人简介 一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等 开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。 感谢大家…

画面美到心坎里!这部电影的审美,把我们的记忆调成了精准的颜色

看完《我的朋友安德烈》&#xff0c;除了故事本身&#xff0c;最让我念念不忘的&#xff0c;还有它的画面。董子健第一次当导演&#xff0c;就在审美上给了我们一个巨大的惊喜——他靠精准的色调&#xff0c;就把故事和情感直接种在了观众心里。记忆里的少年时期&#xff0c;总…

【大数据毕设选题】基于Spark的餐饮数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘

✍✍计算机毕设指导师** ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡有什么问题可以…

大数据毕业设计推荐:基于Hadoop+Spark的上海二手房分析系统 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘

✍✍计算机毕设指导师** ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡有什么问题可以…

汇报PPT一页讲清项目进度?先搞懂PPT单页怎么生成

PPT单页怎么生成&#xff1f;我的6款实用工具亲测分享 大家好&#xff01;我是一名长期和图表、演示文稿打交道的内容创作者。这几年&#xff0c;我经常被朋友、同事甚至客户问到同一个问题&#xff1a;“PPT单页怎么生成&#xff1f;”听起来简单&#xff0c;但其实背后涉及排…

HR面试(2)

一、简历与背景类&#xff08;解释清晰 展现价值&#xff09; 28. 简历空档期 参考回答&#xff1a;“我的简历空档期大概 1 个半月&#xff0c;主要是因为家里有一些需要亲自处理的家事&#xff08;如家人健康复查、房屋交接&#xff09;&#xff0c;当时刚好处于实习结束和…

python学习第七周

argparse 更方便的获取命令行参数&#xff0c;&#xff0c;是sys.args的封装&#xff1a; import argparsedef main():parser argparse.ArgumentParser(prog"程序名字",description"mysql database描述",epilog"说明信息copyright 2026")parser…

CF2072E Do You Love Your Hero and His Two-Hit Multi-Target Attacks?

https://codeforces.com/problemset/problem/2072/E 这个相等条线等价于这两个点横坐标或者纵坐标是相同的。所以就是求三角数,用while把他暴力拆成若干个i*(i-1)/2就可以了。 #include<bits/stdc++.h> using n…

冲刺Day7

Scrum 冲刺博客 Day7 1. 今日站立式会议时间/地点:线上同步 参会人:何俊朗 会议纪要:完成演示脚本与测试报告摘要,确认截图补充计划。 照片:无2. 昨天已完成的工作成员:何俊朗 完成事项:Day6 文档完善与测试跑通…

微调显存总爆炸?问题往往不在你以为的地方

大模型微调常遇“显存不够”,但根源常被误判:显存主要消耗在激活值(activation)、优化器状态(如Adam3)和梯度上,而非模型参数本身。bf16仅减存储不减数量,checkpointing、梯度累积等是有效优化手段。显存问题本…