当前位置: 首页 > news >正文

Vue.js 前端开发实战之 08-Vue 开发环境完整教程:从入门到实战部署

上周在生产环境遇到了这个问题,排查了2天才定位到原因。今天分享一下完整的解决方案,希望帮大家避坑。

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>

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.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

静态资源管理

路径引用规则

处理静态资源

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

示例:加载图片

根组件(App.vue):

示例效果:


http://www.jsqmd.com/news/383893/

相关文章:

  • 浙江荣泰冲刺港股:9个月营收9.6亿,期内利润2亿
  • 少走弯路:专科生专属降AI率平台,千笔·专业降AI率智能体 VS 云笔AI
  • 消费者决策建模全解析:Python离散选择模型实战(1)
  • 斩获56k star,5分钟搭建完整后端服务,这款开源的快速开发神器太牛了!
  • 真的太省时间!千笔AI,普遍认可的AI论文工具
  • 2026年2月山西社区敬老院推荐榜,便民养老实力机构精选 - 品牌鉴赏师
  • 60000 个马年专属红包封面来了[特殊字符]
  • AI教材写作神器登场!低查重优质内容,助力打造专业权威教材!
  • 最新视频号视频提取方法,90%人都不知道,支持一键下载!
  • AI教材写作大揭秘!低查重方法全解析,提升教材质量!
  • AI写教材新选择!低查重AI教材生成工具,助力高效编写!
  • 完整教程:RL for LLM(large language model)
  • 215
  • 西门子SICAR汽车规范:标准化开发的基石
  • 大润发购物卡的正确使用与回收技巧,让您省钱又省心 - 团团收购物卡回收
  • AI教材写作新突破!专业工具助力,低查重教材快速出炉!
  • 泡沫:量子计算机和稳定币都是两大骗局
  • AI写论文大推荐!4款AI论文生成工具,让写期刊论文不再困难!
  • 建议收藏|更贴合MBA需求的AI论文网站,千笔·专业学术智能体 VS 文途AI
  • 小白救星!更贴合MBA需求的降AI率网站,千笔·降AIGC助手 VS WPS AI
  • 高效低查重!AI教材编写工具助力快速生成优质教学教材
  • Java高频面试题:Zookeeper节点宕机如何处理?
  • Flutter 正在计划提供 Packaged AI Assets 的支持,让你的包/插件可以更好被 AI 理解和选择
  • 学霸同款 8个降AIGC软件测评:自考降AI率必备工具推荐
  • Boost Converter MATLAB_help文档DeepSeek翻译
  • 参考文献崩了?AI论文工具,千笔 VS 云笔AI,MBA专属写作利器!
  • 破了不买的方法有哪些?
  • nvidia分布式通信空间nccl安装后如何测试是否安装成功 —— NCCL环境测试
  • GLM-ASR-Nano-2512一文详解:CTC+Attention混合解码机制与标点恢复原理
  • 参考文献崩了?9个AI论文写作软件测评:专科生毕业论文+开题报告神器推荐!