基于@vue/cli 3.x的从0到1搭建Vue项目的实践

简介: Vue官方的脚手架工具Vue Cli有了一次较大的更新,相比于2.x版本,新版本3.x中对项目的搭建,相关包、插件的安装都有了新大的不同。本文即立足于此,选择@vue/cli 3.x版本的脚手架工具,动手实践从0到1搭建Vue项目,包含了项目的初始化,以及Vue全家桶(VueRouter/Vuex/Axios/CSS预处理器)的相关配置。

概述


Vue官方的脚手架工具Vue Cli有了一次较大的更新,相比于2.x版本,新版本3.x中对项目的搭建,相关包、插件的安装都有了新大的不同。本文即立足于此,选择@vue/cli 3.x版本的脚手架工具,动手实践从0到1搭建Vue项目,包含了项目的初始化,以及Vue全家桶(VueRouter/Vuex/Axios/CSS预处理器)的相关配置。


一、认识新版本


@vue/cli 3.x版本,更加注重脚手架工具本身的易用性和易扩展性,支持开箱即用,同时提供了丰富的插件系统。


优秀之处 为啥如此优秀?
功能丰富 对 Babel、TypeScript、ESLint、PostCSS、PWA、单元测试和 End-to-end 测试提供开箱即用的支持。
易于扩展 它的插件系统可以让社区根据常见需求构建和共享可复用的解决方案。
无需 Eject Vue CLI 完全是可配置的,无需 eject。这样你的项目就可以长期保持更新了
CLI 之上的图形化界面 通过配套的图形化界面创建、开发和管理你的项目
即刻创建原型 用单个 Vue 文件即刻实践新的灵感。
面向未来 为现代浏览器轻松产出原生的 ES2015 代码,或将你的 Vue 组件构建为原生的 Web Components 组件。

以上优秀描述,来自于官方,手动微笑.gif 官网传送门


二、准备工作


1. Node/NPM安装


想要操作使用npm,我们必须要先安装Node,这个没啥好说的。Node.js官网传送门下载安装对应系统的版本即可。


检测是否安装成功


// 检测node版本
node -v
// 检测npm版本
npm -v


2. 安装脚手架@vue/cli


注意:3.x版本包,已经改名为@vue/cli


npm install -g @vue/cli


2.x版本安装,npm install -g vue-cli


检测是否安装成功:


// 检测@vue/cli的版本
vue -V


我的版本是3.11.0


三、项目搭建


1. 项目结构初始化


vue create appName


快速便捷的对项目结构进行初始化,选择想要默认加载的配置。有两种模式,一种是default,默认添加了babel和eslint的配置,另外一种Manually select features,可根据自己的实际需要配置Babel、VueRouter、Vuex、TypeScript、CSS Pre-processors、Unit testing等



为了给大家演示这个过,我就选择了default默认


2. 创建项目文件,安装依赖




如果在创建项目时,没有选择将babel、eslint、postcss等配置独立化,则对应文件不存在,相关配置存储在package.json中


3. 运行项目


在项目的根目录执行 npm run serve,即可运行Vue的项目。


至此,通过几步简单的操作,Vue的项目初始化就完成了,各位小伙本是不是很简单.


项目扩展


1. VueRouter 路由配置


注意,vue add的使用,将router作为插件,添加到项目中


vue add router



对,就这样,这就配置好路由router模块了


2. vuex 全局状态管理器


一样的套路,走起


vue add vuex



对,就是这样,我们有成功了


3. axios 数据请求


再来一遍,走你...


vue add axios



注意安装的包名 vue-cli-plugin-axios 插件形式的存在


注意事项:


vue add 的设计意图是为了安装和调用 Vue CLI 插件。对于普通的 npm 包而言,这不意味有一个替代(命令)。对于这些普通的 npm 包,你仍然需要(根据所选的 npm 包)使用包管理器。


4. CSS预处理器


现在的项目中很多都使用了CSS预处理器,那在@vue/cli 3.x版本中如何引入使用呢?因为没有相关的vue插件,所以此处要按照普通的npm包,进行下载安装,此处以sass预处理器为例。


npm install sass-loader sass -D


对,安装一个这个就支持了sass预处理了,内置的webpack已经把工作帮你做好了


在.vue组件中使用sass


<style lang="scss">
</style>


四、项目配置文件 vue.config.js


在项目的根目录下,配置vue.config.js


module.exports = {
  // 配置项
}


1. 向预处理器 Loader 传递选项


如向所有的scss文件中,传入共享的全局变量。


假定存在src/assets/css/variables.scss文件


module.exports = {
  css: {
    loaderOptions: {
      scss: {
        prependData: '@import "~@/assets/css/variables.scss"'
      }
    }
  }
}


注意,此处的官方案例是错误的,受到的是sass-loader新版本影响。需要改变的是:将data字段改为prependData字段


2. 设置externals


在进行开发时,有时为了更好的进行文件的缓存(CDN),减少打包的文件体积,部分包是不希望被webpack打包,但是还希望在项目中便捷的使用,可以选择使用externals配置。此处以引入jQuery为例。


public/index.html 引入包


<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>


vue.config.js


module.exports = {
  // configureWebpack 配置webpack
  configureWebpack: {
    externals: {
      jQuery: 'jQuery'
    }
  }
}


src/components/HelloWorld.vue 使用jQuery


import $ from 'jQuery'


随便用


3. proxy代理


日常开发,必设转发代理


module.exports = {
  devServer: {
    proxy: {
      '/': {
        target: 'http://xxoo.com',
        changeOrigin: true
      }
    }
  }
}


掌握了转发代理,麻麻再也不担心我和后端调试接口啦...


五、辅助工具


1. VueDevtools


安装浏览器扩展VueDevtools,辅助Vue开发,传送门



相关文章
|
2月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
283 2
|
26天前
|
缓存 JavaScript
vue中的keep-alive问题(2)
vue中的keep-alive问题(2)
256 137
|
5月前
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
727 0
|
5月前
|
JavaScript UED
用组件懒加载优化Vue应用性能
用组件懒加载优化Vue应用性能
|
4月前
|
人工智能 JSON JavaScript
VTJ.PRO 首发 MasterGo 设计智能识别引擎,秒级生成 Vue 代码
VTJ.PRO发布「AI MasterGo设计稿识别引擎」,成为全球首个支持解析MasterGo原生JSON文件并自动生成Vue组件的AI工具。通过双引擎架构,实现设计到代码全流程自动化,效率提升300%,助力企业降本增效,引领“设计即生产”新时代。
387 1
|
4月前
|
JavaScript 安全
在 Vue 中,如何在回调函数中正确使用 this?
在 Vue 中,如何在回调函数中正确使用 this?
228 0
|
5月前
|
JavaScript 前端开发 UED
Vue 表情包输入组件实现代码及详细开发流程解析
这是一篇关于 Vue 表情包输入组件的使用方法与封装指南的文章。通过安装依赖、全局注册和局部使用,可以快速集成表情包功能到 Vue 项目中。文章还详细介绍了组件的封装实现、高级配置(如自定义表情列表、主题定制、动画效果和懒加载)以及完整集成示例。开发者可根据需求扩展功能,例如 GIF 搜索或自定义表情上传,提升用户体验。资源链接提供进一步学习材料。
264 1
|
7月前
|
JavaScript
vue实现任务周期cron表达式选择组件
vue实现任务周期cron表达式选择组件
967 4
|
6月前
|
JavaScript 数据可视化 前端开发
基于 Vue 与 D3 的可拖拽拓扑图技术方案及应用案例解析
本文介绍了基于Vue和D3实现可拖拽拓扑图的技术方案与应用实例。通过Vue构建用户界面和交互逻辑,结合D3强大的数据可视化能力,实现了力导向布局、节点拖拽、交互事件等功能。文章详细讲解了数据模型设计、拖拽功能实现、组件封装及高级扩展(如节点类型定制、连接样式优化等),并提供了性能优化方案以应对大数据量场景。最终,展示了基础网络拓扑、实时更新拓扑等应用实例,为开发者提供了一套完整的实现思路和实践经验。
773 77
|
7月前
|
缓存 JavaScript 前端开发
Vue 基础语法介绍
Vue 基础语法介绍