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

目录

一、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------------------------------------------------------------");

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

“糖尿病日”感言

长期旺盛的写作欲&#xff0c;今天忽地就莫名其妙地衰退下来了。感到浑身都不舒服&#xff0c;特别是过去从未出现过的腰微痛、乏力现象发生了。 转念一想&#xff0c;或是老龄人一日不如一日的正常反应吧&#xff1f;而且&#xff0c;今天恰逢“ 联合国糖尿病日”&#xff0c…

mysql之MHA

1、定义 全称是masterhigh avaliabulity。基于主库的高可用环境下可以实现主从复制及故障切换&#xff08;基于主从复制才能故障切换&#xff09; MHA最少要求一主两从&#xff0c;半同步复制模式 2、作用 解决mysql的单点故障问题。一旦主库崩溃&#xff0c;MHA可以在0-30…

Spark读取excel文件

文章目录 一、excel数据源转成csv二、Spark读取csv文件(一)启动spark-shell(二)读取csv生成df(三)查看df内容一、excel数据源转成csv 集群bigdata - ubuntu: 192.168.191.19master(bigdata1) - centos: 192.168.23.78 slave1(bigdata2) - centos: 192.168.23.79 slave2(b…

多商家签到打卡奖励免单霸王餐小程序开发

多商家签到打卡奖励免单霸王餐小程序开发 用户注册和登录&#xff1a;提供用户注册和登录功能&#xff0c;以便用户能够参与签到打卡活动。 商家入驻&#xff1a;商家可申请入驻平台&#xff0c;提交相关资料并等待平台审核&#xff0c;审核通过后即可发布活动和奖励。 签到打…

组件库篇 | EUI | 补充知识

组件库篇 | EUI | 补充知识 编码 项目中请务必使用Unicode编码,否则会出现中文乱码问题。 设置方法:使用VS打开项目,项目-属性-高级-字符集-Unicode编码。 数据类型 C语言中的常用数据类型不作讲解,主要讲解一些C语言初学者不熟悉的类型。这些类型大都只需要你传参,因此…

风景照片不够清晰锐利,四招帮你轻松解决

我们大家在拍摄风景照的时候都希望能够拍摄出清晰锐利的照片。可能会有人问&#xff1a;“什么是锐利&#xff1f;”我们可以从锐度来给大家简单解说下。锐度是反映图片平面清晰度和图像边缘对比度的一个参数。锐度较高的画面&#xff0c;微小的细节部分也会表现得很清晰&#…

SQL基础理论篇(二):什么是DBMS / DB / DBS

文章目录 简介DB、DBS和DBMS的区别当前的主流DBMSSQL与NoSQL主流的RDBMS参考文献 简介 日常工作中&#xff0c;我们通常是跟DBMS这些数据库管理软件打交道&#xff0c;而SQL只是它们的通用语言而已。 DB、DBS和DBMS的区别 DBMS&#xff0c;全称是DataBase Management System…

外汇天眼:如何摆脱交易困境?这个比赛告诉你答案!

在现今的金融市场中&#xff0c;外汇交易因其高杠杆、24小时交易等特点吸引着众多投资者。然而&#xff0c;外汇交易并非易事&#xff0c;它需要精准的分析、及时的决策和良好的风险管理。许多新手投资者在涉足外汇市场时都会遇到各种困境&#xff0c;譬如缺乏实践经验、心理压…

流量分析(信息安全铁人三项赛分区赛2-5.18)

题目描述 目录 题目描述 黑客的IP是多少 服务器1.99的web服务器使用的CMS及其版本号(请直接复制) 服务器拿到的webshell的网址(请输入url解码后的网址) 服务器1.99的主机名 网站根目录的绝对路径(注意最后加斜杠) 黑客上传的第一个文件名称是什么 黑客进行内网扫描&am…

【文章学习系列之模型】DAGMM

本章内容 文章概况模型结构损失函数实验结果实验分析总结 文章概况 《Deep Autoencoding Gaussian Mixture Model for Unsupervised Anomaly Detection》是2018年发表于ICLR的一篇论文&#xff0c;该论文提出一种端到端的无监督异常检测方法DAGMM&#xff0c;取得了不错的效果…

Sentinel底层原理(下)

1、概述 Sentinel的核心原理&#xff0c;也就是前面提到暗流涌动的SphU.entry(…)这行代码背后的逻辑。 Sentinel会为每个资源创建一个处理链条&#xff0c;就是一个责任链&#xff0c;第一次访问这个资源的时候创建&#xff0c;之后就一直复用&#xff0c;所以这个处理链条每…

C#几种截取字符串的方法

在C#编程中&#xff0c;经常需要对字符串进行截取操作&#xff0c;即从一个长字符串中获取所需的部分信息。本文将介绍几种常用的C#字符串截取方法&#xff0c;并提供相应的示例代码。 目录 1. 使用Substring方法2. 使用Split方法3. 使用Substring和IndexOf方法4. 使用Regex类…

【PTQ】Cross-Layer Equalization跨层均衡-证明和实践详细解读

Cross-Layer Equalization跨层均衡 aimet解读 符合规则的模型结构 统一要求&#xff1a;单数据流&#xff0c;中间激活不流向其他地方概念说明&#xff1a; Conv: gruoups1的普通卷积&#xff0c;包括TransposedConv和ConvDepthwiseConv: 深度可分离卷积&#xff0c;groupsi…

青少年编程学习 等级考试 信奥赛NOI/蓝桥杯/NOC/GESP等比赛资料合集

一、博主愚见 在当今信息技术高速发展的时代&#xff0c;编程已经成为了一种必备的技能。随着社会对于科技人才的需求不断增加&#xff0c;青少年编程学习正逐渐成为一种趋势。为了更好地帮助青少年学习编程&#xff0c;提升他们的技能和素质&#xff0c;博主结合自身多年从事青…

C++:map和set的封装原理

文章目录 红黑树的封装map和set的封装红黑树迭代器的实现operator 和 -- 的实现的实现过程 迭代器的其他模块 整体实现 本篇写于红黑树模拟实现后&#xff0c;对map和set进行封装&#xff0c;模拟实现map和set内部的原理 首先&#xff0c;map和set的底层逻辑是红黑树&#xf…

idea生成代码(一):实现java语言的增删改查功能(基于EasyCode插件)支持自定义模板【非常简单】

idea生成代码&#xff08;一&#xff09;&#xff1a;实现java语言的增删改查功能&#xff08;基于EasyCode插件&#xff09;支持自定义模板【非常简单】 idea生成代码&#xff08;二&#xff09;&#xff1a;实现java语言的增删改查功能&#xff08;基于mybatis-plus代码生成器…

centralwidget 不能布局

必须要在QT ui中添加一个任意的子控件&#xff08;比如添加了一个pushButton&#xff09;&#xff0c;然后在centralwidget 才能右键设置布局&#xff0c;成功去掉centralwidget 右下角的红色的标记。

视频直播点播平台EasyDSS无法删除分组,如何解决?

EasyDSS视频推拉流平台可支持用户自行上传视频文件&#xff0c;也可将上传的点播文件作为虚拟直播进行播放。平台能支持多屏播放&#xff0c;可兼容Windows、Android、iOS、Mac等操作系统&#xff0c;还能支持CDN转推&#xff0c;具备较强的可拓展性与灵活性。 有用户反馈&…

Facebook账号运营技巧

Facebook作为全球知名的社交媒体平台之一&#xff0c;坐拥着庞大的用户群体&#xff0c;吸引大量的跨境电商加入&#xff0c;那么肯定就会有少部分的卖家对于Facebook账号运营不是很了解&#xff0c;下面小编将讲一下Facebook账号运营的一些小技巧。 1、明确目标受众 首先需要明…