Vue CLI脚手架安装、搭建、配置 和 CLI项目分析

news2024/11/26 19:21:08

目录

一、CLI快速入门

        1. 官方介绍 : 

        2.安装Vue CLI : 

        3.搭建Vue CLI : 

        4.IDEA配置Vue CLI : 

二、Vue CLI项目分析

        1.结构分析 : 

            1.1 config 

            1.2 node_modules

            1.3 src

            1.4 static

        2.流程分析 : 

            2.1 main.js

            2.2 router/index.js

            2.3 components/HelloWorld.vue

            2.4 App.vue

            2.5 index.html


一、CLI快速入门

        1. 官方介绍 : 

        (1) Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供:

  • 通过 @vue/cli 实现的交互式的项目脚手架
  • 通过 @vue/cli + @vue/cli-service-global 实现的零配置原型开发。
  • 一个运行时依赖 (@vue/cli-service),该依赖:
    • 可升级;
    • 基于 webpack 构建,并带有合理的默认配置;
    • 可以通过项目内的配置文件进行配置;
    • 可以通过插件进行扩展。
  • 一个丰富的官方插件集合,集成了前端生态中最好的工具。
  • 一套完全图形化的创建和管理 Vue.js 项目的用户界面。

        (2) Vue CLI 致力于将 Vue 生态中的工具基础标准化,以确保了各种构建工具能够基于智能的默认配置即可平稳衔接,使开发人员能够专注在撰写应用上,而不必纠结配置的问题。与此同时,Vue CLI也为每个工具提供了调整配置的灵活性,无需 eject。

        2.安装Vue CLI : 

                搭建Vue CLI脚手架工程,需要使用到NPM(node package manager)npm是随node.js安装的一款包管理工具,类似于Maven。由于up以Vue2为演示版本,因此此处以低版本node.js 10.16.3为例,下载地址如下 : 

https://nodejs.org/en/blog/release/v10.16.3

                如下图所示 : 

                下载后安装即可(安装目录可手动指定)。
                (1) 在本地cmd窗口中,先通过"npm uninstall  vue-cli -g"命令卸载掉旧版本CLI(若无旧版本无需输入该命令);
                (2) 再通过"npm install -g cnpm --registry=https://registry.npm.taobao.org"安装淘宝镜像,安装完成后如下图所示 : 

                (3) 还需要通过"cnpm install webpack@4.41.2 -g"命令和"cnpm install webpack-cli@4.9.2 -g"安装webpackwebpack-cli工具。
                (4) 最后使用"cnpm install -g @vue/cli@4.0.3"命令安装vue cli;可以通过"vue -V"来查看安装的vue cli的版本,如下图所示 : 

                PS : 使用cnpm时,若报错"Error: Cannot find module 'node:util' ",可能是因为npm版本和cnpm版本不匹配导致的,可以先通过"npm uninstall cnpm"卸载掉之前安装的cnpm;然后通过"npm -v"查看当前npm的版本,如下图所示 : 

                通过"npm install -g cnpm@6.0.0 --registry=https://registry.npm.taobao.org"指令,根据npm的版本指定安装对应版本的cnpm。

        3.搭建Vue CLI : 

                首先,确定Vue项目所在的位置,可自行建立,如下图所示 : 

                然后在该文件下进入cmd,通过"vue init webpack 项目名称"来初始化项目,在后续跳出的配置提示中,选择如下选项 : 

                接着,根据提示输入指令即可,如下图所示 : 

                运行成功后可以通过8080端口访问到以下页面 : 

        4.IDEA配置Vue CLI : 

                通过Ctrl + c终止cmd中运行的Vue项目,用IDEA打开刚刚创建好的Vue项目,然后配置npm,如下图所示 : 

                配置完成后,apply;运行项目即可重新访问方才的页面。


二、Vue CLI项目分析

        1.结构分析 : 

                Vue项目的结构大体上可以分为四大块,如下图所示 : 

            1.1 config 

        config目录用于存放配置文件,例如index.js中可以进行端口的配置。

            1.2 node_modules

        node_modules目录表示该项目依赖的模块(主要是一些.js文件),这些依赖的模块在static目录下的package.json中指定。

            1.3 src

        src下面又分为了"assets","components","router"等几个小目录——
        (1) assets : 用于存放项目资源的目录,eg : .css文件,.js文件,图片等。
        (2) components : 存放自定义的组件。
        (3) router : 存放路由文件,也称为"路由器/路由表"。
        PS : ①直接位于src目录下的App.vue文件是Vue项目的主体单页,可以显示路由的视图。②直接位于src目录下的main.js是Vue项目的核心文件,是入口js文件,Vue项目在这里创建Vue实例,并且指定挂载el,router,component,template等

            1.4 static

        存放静态文件。static目录下有两个尤其重要的文件---index.html和package.json。
        index.html : Vue项目首页,这里定义了一个id = app的div。

        package.json : 指定当前Vue项目依赖的模块,类似于Maven项目中的pom.xml配置文件。

        2.流程分析 : 

            2.1 main.js

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})

        (1) main.js是Vue项目的入口js,Vue实例在此被创建

        (2) 在Vue实例中指定了挂载el(id = app的div元素)。
        (3) 在Vue实例中指定的router从router目录下导入,此处是"./router/index.js"的简写,导入与导出方式即“ES6新特性——模块化编程”中的第三种导出方式export default {};和第二种导入方式import 名称 from "__.js"; 

        (4) 在Vue实例中指定了components引入组件,此时使用了“ES6新特性——对象简写”的语法。

        (5) 在Vue实例中指定了template:<App/>,此处的App即来自components:{ App }中的App。因此,当我们自行更改属性名称时,Vue项目仍可正常运行,如下图所示 : 

            2.2 router/index.js

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'    //@表示src目录

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',    //每个path对应一个路由表项。
      name: 'HelloWorld',
      component: HelloWorld
    }
  ]
})

        (1) main.js进行路由,找到路由文件"router/index.js",同时得到浏览器中访问的URL,即http://localhost:8080/#/,得到路由path/回顾——URL结尾带 / 表示访问的是一个路径,URL结尾不带 / 表示访问的是一个资源)。

        (2) 在router/index.js文件中通过模块化编程的导出语句导出了一个Router对象。

        (3) routes: [ ] 表示路由表,可以指定多个路由 (即多个可匹配的访问路径)。

        (4) 此处经过path"/"的匹配,对应找到了"component: HelloWorld.vue"组件

            2.3 components/HelloWorld.vue

        (1) 自定义组件,可以显示页面。

        (2) 编译组件后得到视图。

        (3) 将编译后得到的视图/页面进行返回

            2.4 App.vue

        (1) App.vue是Vue项目主体单页。
        (2) 引入<router-view/>之后可以显示路由后的视图/页面。

            2.5 index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>vue_first_try</title>
  </head>
  <body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

        (1) static目录下的index.html是项目首页。

        (2) index.html中定义了一个id = app的div元素。
        (3)创建好的Vue实例渲染完毕后,就会挂载到该div上,最后用户就看到了渲染后的效果。

        (4) 总结 : Vue CLI脚手架项目最后的访问顺序是——
        main.js(入口js) -->
        router/index.js(根据访问的URL匹配相应的的路由) -->
        components/HelloWorld.vue(根据匹配到的路由项中的component属性找到对应的组件) -->
        main.js(编译组件生成视图,并将视图返回给main.js) -->
        根据main.js中创建的Vue实例中的components属性,访问引入的App组件 -->
        App.vue组件中又引入了<router-view/>以显示路由后的视图/页面 -->
        最后将渲染好的Vue实例挂载到index.html中定义的id=app的div元素上。

        System.out.println("END------------------------------------------------------------");

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

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

相关文章

Vue3源码reactive和readonly对象嵌套转换,及实现shallowReadonly

前言 官方文档中对reactive的描述&#xff1a; 响应式转换是“深层”的&#xff1a;它会影响到所有嵌套的属性。一个响应式对象也将深层地解包任何 ref 属性&#xff0c;同时保持响应性。 官方文档中对readonly的描述: 只读代理是深层的&#xff1a;对任何嵌套属性的访问都将是…

城市内涝监测仪的作用有哪些?

城市内涝近几年愈发频繁&#xff0c;它的出现不仅仅会导致财产损失&#xff0c;还可能危及公共安全。所以对路面积水进行实时监测刻不容缓。内涝积水监测仪的早期警报系统&#xff0c;有助于提高城市的紧急响应能力。政府远程监控城市路面水位&#xff0c;实现精准的系统化管理…

SPL机制与使用,组件化技术核心点打法

什么是SPI SPI &#xff0c;全称为 Service Provider Interface&#xff0c;是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件&#xff0c;自动加载文件里所定义的类。 SPI 的本质是将接口实现类的全限定名配置在文件中&#xff0c;并由服务加…

MySQL索引下推:提升数据库性能的关键优化技术

文章目录 前言索引下推原理MySQL 基础架构传统查询过程ICP 查询过程 使用场景限制参数配置索引下推开启状态查询索引下推开启和关闭 一些问题只有联合索引才能使用索引下推&#xff1f;下面的查询为什么不走索引下推 参考 前言 大家好&#xff0c;我是 Lorin &#xff0c;今天…

教对象写代码

之前对象工作中需要获取地图上的一些数据, 手工找寻复制 费时费力, 逢此契机, 准备使用代码尽可能简化机械重复操作, 力图一劳永逸. 首选简洁易入门的Python. 下文就是对流程的总结, 及简述每步的意义. 并不Hack,重在感受编程的用途和基本工具的使用. 以百度地图为例,需求如下:…

大模型时代的机器人研究

机器人研究的一个长期目标是开发能够在物理上不同的环境中执行无数任务的“多面手”机器人。对语言和视觉领域而言&#xff0c;大量的原始数据可以训练这些模型&#xff0c;而且有虚拟应用程序可用于应用这些模型。与上述两个领域不同&#xff0c;机器人技术由于被锚定在物理世…

hive更改表结构的时候报错

现象 FAILED: ParseException line 1:48 cannot recognize input near ADD COLUMN compete_company_id in alter table statement 23/11/14 17:59:27 ERROR org.apache.hadoop.hive.ql.Driver: FAILED: ParseException line 1:48 cannot recognize input near ADD COLUMN compe…

身份证照片怎么弄成200k以内?超级好用!

一些网站为了限制大的文件上传&#xff0c;提出了一些大小限制的要求&#xff0c;那么身份证如何弄成200k呢&#xff1f;下面介绍三种方法。 方法一&#xff1a; 使用嗨格式压缩大师 1、在电脑上打开安装好的软件&#xff0c;在首界面中点击“图片压缩”。 2、进入后上传需要…

【MongoDB】索引 – 通配符索引

一、准备工作 这里准备一些数据 db.books.drop();db.books.insert({_id: 1, name: "Java", alias: "java 入门", description: "入门图书" }); db.books.insert({_id: 2, name: "C", alias: "c", description: "C 入…

OpenCV颜色识别及应用

OpenCV是一个开源计算机视觉库&#xff0c;提供了丰富的图像处理和计算机视觉算法&#xff0c;其中包括颜色识别。本文首先介绍了OpenCV库&#xff0c;然后着重描述了颜色识别的基本原理和方法&#xff0c;包括颜色空间的转换、阈值处理、颜色检测等技术。接下来详细探讨了Open…

【ccf-csp题解】第11次csp认证-第三题-Json查询超详细讲解

此题思路来源于acwing ccfcsp认证辅导课 题目描述 思路分析 此题的难点在于对输入的内容进行解析&#xff0c;题目中说除了保证字符串内容不会有空格存在之外&#xff0c;其它的任意地方都可能出现空格&#xff0c;甚至在某些地方还会出现空行&#xff0c;这样的话&#xff0…

spring-cloud-alibaba-nacos

spring cloud nacos 安装和启动nacos # 解压nacos安装包 # tar -zvxf nacos-server-1.4.1.tar.gz# nacos默认是以集群的模式启动&#xff0c;此处先用单机模式 # cd /usr/local/mysoft/nacos/bin # sh startup.sh -m standalone# nacos 日志 # tail -f /usr/local/mysoft/na…

reactive和effect,依赖收集触发依赖

通过上一篇文章已经初始化项目&#xff0c;集成了ts和jest。本篇实现Vue3中响应式模块里的reactive方法。 前置知识要求 如果你熟练掌握Map, Set, Proxy, Reflect&#xff0c;可直接跳过这部分。 Map Map是一种用于存储键值对的集合&#xff0c;并且能够记住键的原始插入顺…

数据结构与算法【链表:一】Java实现

目录 链表 单向链表 哨兵链表 双向链表 环形链表 链表 链表是数据元素的线性集合&#xff0c;其每个元素都指向下一个元素&#xff0c;元素存储上并不连续。 随机访问性能 根据 index 查找&#xff0c;时间复杂度 O(n) 插入或删除性能 起始位置&#xff1a;O(1)结束位…

docker命令大全

1、查看Docker 容器占用的空间 docker ps -s2、查看所有容器 docker ps -a3、启动、关闭、重启一个已存在的容器 docker start <容器ID> docker stop <容器ID> docker restart <容器ID> 4、进入容器&#xff0c;退出终端的时候不会关闭container的ma…

自学SLAM(8)《第四讲:相机模型与非线性优化》作业

前言 小编研究生的研究方向是视觉SLAM&#xff0c;目前在自学&#xff0c;本篇文章为初学高翔老师课的第四次作业。 文章目录 前言1.图像去畸变2.双目视差的使用3.矩阵微分4.高斯牛顿法的曲线拟合实验 1.图像去畸变 现实⽣活中的图像总存在畸变。原则上来说&#xff0c;针孔透…

IC行业秋招真实情况记录,快来看看吧~

2023年&#xff0c;IC行业人才竞争尤为激烈。为了更好的获取到面试的经验&#xff0c;不妨先来了解一下IC面试常见的问题&#xff0c;以及面试该准备的相关事项吧~ &#xff08;文末可领全部面试题目&#xff09; 什么是同步逻辑和异步逻辑&#xff1f; 同步逻辑是时钟之间…

ef core code first pgsql

在使用efcode来操作pgsql的时候&#xff0c;总有些基础配置流程项目建立完之后后面就很少用&#xff0c;总是忘掉&#xff0c;写个文档记忆一下吧。基于net 6.0。 1.创建一个mvc项目和一个EF类库 2.在类库里面安装依赖dll Microsoft.EntityFrameworkCore.Design 需要添加的…

ARPG----C++学习记录05 Section12 动画蒙太奇,收拿剑,MetaSound,调整动画

代码更新 https://github.com/BAOfanTing/ARPG_Game_Code/commit/c629270e49496ba1bcbaf03780d23c1842ca5e7a Animation Montages动画蒙太奇 蒙太奇的工作流程 新建一个鼠标左键的按键映射&#xff0c;下载一些攻击动画&#xff0c;重定向给我们的人物&#xff0c;新建一个动画…

一文看懂香港优才计划和高才通计划的区别和优势?如何选?

一文看懂香港优才计划和高才通计划的区别和优势&#xff1f;如何选&#xff1f; 为什么很多人都渴望有个香港身份&#xff1f; 英文这里和内地文化相近&#xff0c;语言相通&#xff0c;同时税率较低、没有外汇管制&#xff0c;有稳定金融体制和良好的营商环境&#xff0c;诸多…