Vue工程化开发(脚手架环境)(上)

简介: Vue工程化开发(脚手架环境)(上)

工程化开发(脚手架环境)


工程化,也可以称之为脚手架环境。


1、组件


组件 (Component)是 Vue.js 最强大的功能之一,**组件是一个自定义HTML元素(标签)**或称为一个模块,包括所需的模板(HTML)、逻辑(JavaScript)和样式(CSS)。


组件化开发的特点:

  • 标准
  • 分治
  • 重用
  • 组合

组件也是有全局(component)局部(components)之分。


2、单文件组件 single file component SFC


在很多 Vue 项目中,我们使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: '#container '}) 在每个页面内指定一个容器元素。这种方式在很多中小规模的项目中运作的很好,在这些项目里 JS 只被用来加强特定的视图。但当在更复杂的项目中,或者你的前端完全由JS驱动的时候,下面这些缺点将变得非常明显:


所有的组件都放同一个html文件中

没有构建步骤(build操作),不能使用npm来管理项目

缺乏语法高亮和提示

没有针对单个组件的css样式支持


针对于上述的问题,vue框架发布了vue-cli项目生成工具,Vue-cli是一个基于 Vue.js 进行快速开发的完整系统, 致力于将 Vue 生态中的工具基础标准化。它确保了各种构建工具能够基于智能的默认配置即可平稳衔接,这样你可以专注在撰写应用上,而不必花好几天去纠结配置的问题。

31910abde988bafbbeb2f0d9c5907baf.png

单文件组件的要求:


后缀必须是“.vue”

需要使用三个标签将整个文件分成3部分

template标签:包裹的是html部分(视图部分)【必须要有的】

script标签:包裹的是JavaScript部分(逻辑部分)【必须要有的】

css-in-js:在JavaScript中写样式

style标签:包裹的css/scss/less等样式部分(样式部分)【可以没有】

样式存在范围的问题的

有“scoped”属性则表示该组件的样式代码只在当前组件生效

如果没有“scoped”属性则表示该组件的样式会影响自己及后代,一般在工程化开发的模式中,只有根组件“App.vue”不写“scoped”属性(全局样式)

其他的语法与之前的一致

单文件组件只是工程化中的一个文件,无法单独运行,必须在项目中运行


3、工具安装


网址:http://npmjs.com

## 安装
# -g:全局安装
npm i -g @vue/cli
## 安装成功后,检查
vue --version
vue -V
#  Vue和VueCLI是两回事
## 卸载(了解)
npm uninstall -g @vue/cli


ecc217b531a18cadd2e14de2a903a4f3.png

如果需要安装其他版本,可以使用npm install -g @vue/cli@版本号的方式进行指定版本。


如果最新版安装不成功,可以尝试以下几种方式去解决:

  • 断网,使用热点共享流量去执行安装命令
  • 安装其他版本
  • 切换一下npm镜像源,切换成taobao
  • 卸载nodejs重安装
  • 重装系统/换电脑

vue/cli ≠ vue,切勿将版本搞混


4、创建项目


脚手架创建初始项目的方式有2种:

  • 通过UI界面方式去创建(了解)
  • 在命令行中输入以下命令启动UI界面:
vue ui


通过命令行的方式切创建(推荐)

  • 执行命令:
vue create 项目名  


# 首先需要进入到对应的目录中(英文目录不要有空格及中文),执行如下命令
# 如果当前你的终端工作路径带有中文或者空格,你可以使用`cd 路径`形式进行路径切换,切换到符合要求的路径中
vue create 项目名称(创建时会自己以对应的项目名称生成目录)
## 例
vue create myproject
# 上述命令中,可以允许变的就是`myproject`部分


5、目录结构介绍


public:不需要去改动现有的文件,里面存放的是浏览器访问的入口文件(index.html)


src(后期很多操作都在这个目录中完成)


main.js:项目/程序入口文件 (该文件中JavaScript代码都会被执行)

App.vue:根组件(万物之根)

components:存放自定义的功能组件(涉及到业务逻辑)

assets:静态资源目录(图片、视频、音频等就是静态资源),这里面的静态资源浏览器是无法直接访问的,而是给组件通过模块化的方式导入进组件使用的。

项目中的静态资源有2个地方可以放

public:供在public/index.html中直接引入(link标签、script标签)的

src/assets:供单文件组件导入时需要的静态资源文件(import …)

views:(当前是没有的,但是后期要用)存放视图组件的(只是涉及到页面的布局排版)

如何很好的划分功能组件与视图组件呢?


小技巧:可以被复用的就算它功能组件,不能被复用的就算它是视图组件。


补充:(readme.md文件中的内容)后续入职的时候项目给到的代码可能不不包含node_modules目录,需要自己执行npm i,随后项目才完整。


6、项目的运行及注意事项


6.1、项目的启停

e5713173dc7c4d4026254e4ee74d9424.png

如上图所示,在创建项目完成后有提示我们后续的操作:

  • 在命令行中进入项目目录
  • 运行npm run serve命令来启动项目

按照上述命令执行后,我们会见到如下的效果,即表示项目运行成功:

a4da4942d5e97368bb1aabc89205d93f.png

注意:默认端口号会从8080开始,如果再次启动其他项目后续会以8081、8082……进行监听。

如果需要停止正在运行的项目,可以选择以下两种方式任一:

  • 关闭终端
  • 在终端中按下组合键Ctrl + C(Cancel),随后选择Y并键入回车(如下图)
  • 也可以按下两次Ctrl + C

78b6383ef880c84c413a3ad7db6efb98.png

部分同学的机器在启动vue项目的时候可能会出现卡在“40%”的进度并且长时间不动,如果这样,则直接Ctrl + C停止本次启动,重新再去尝试启动。

关于项目运行时,如果修改了项目代码是否需要重启的说明:

是否需要重启取决于我们修改了什么内容,如果只是修改了代码部分(js、css、vue文件等)是不需要开发者手动重启项目的,系统会自动重新编译(有点nodemon感觉);但是如果修改的是配置文件,则必须需要自己先去停止项目,然后再去启动项目(手动实现重启)。


6.2、关于ESlint


ESlint用于规范项目的编码,大型项目一般多人开发,为了避免一些个人编程恶习坑自己坑别人,项目中使用了ESlint会起到紧箍咒的作用,强制开发人员注意代码规范。例如,在不使用ESlint的情况下,JS允许我们声明一个不变量但不使用。如果使用了ESlint,在上述情况下会报错如下:

d3126b61370b5ddfa00c2700e0047f32.png

关于ESlint的报错,有一份错误参照,可以访问以下地址查看:https://cn.eslint.org/docs/rules/


在前期学习阶段不建议去使用ESlint,所以待会会重新创建一个不带有eslint的项目来学习路由的使用。但是,以后企业中开发项目的时候都会启用eslint。

实际使用中可以通过npm run lint来解决eslint所爆出的大部分错误(例如:分号、引号、空格、多余换行等等),但是涉及到代码多余或者缺少表达式之类的错误需要开发者自己解决的。

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