十三、Vue CLI(2)

news2024/9/25 19:25:39

本章概要

  • 项目结构
  • 编写一个 Hello 组件
  • package.json

13.4 项目结构

通过 Vue CLI 生成的项目的目录结构及各文件夹和文件的用途说明如下:

|--node_modules           //项目依赖的模块
|--public                 //该目录下的文件不会被 Webpack 编译压缩处理,医用第三方库的js
|  |--favicon.ico         //图标文件
|  |--index.html          //项目的主页面
|--src                    //项目代码的主目录
|  |--assets              //存放项目中的静态资,如 CSS、图片等
|     |--logo.png         //logo图片
|  |--components          //编写的组件放在这个目录下
|     |--HelloWorld.vue   //Vue CLI 创建的 HelloWrold 组件
|  |--App.vue             //项目的根组件
|  |--main.js             //程序入口js,加载各种公共组件和所需要用到的插件
|--.browserslistrc        //配置项目目标浏览器的范围
|--.eslintrc.js           //ESLint 使用的配置文件
|--.gitignore             //配置在 git 提交项目代码时忽略哪些文件或文件夹
|--babel.config.js        //Babel 使用的配置文件
|--package.json           //npm 的配置文件,其中设定了脚本和项目依赖的库
|--package-lock.json      //用于锁定项目实际安装的各个 npm 包的具体来源和版本号
|--README.md              //项目说明文件

然后看一下几个关键文件的代码。

App.vue

<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <HelloWorld msg="Welcome to Your Vue.js App" />
</template>

<script>
import HelloWorld from './components/HelloWorld.vue'

export default {
  name: 'App',
  components: {
    HelloWorld
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

这就是一个典型的单文件组件,在一个文件中包含了组件代码、模板代码和 CSS 样式规则。在这个组件中引入了 HelloWorld 组件,然后在 template 元素中使用它。使用 export 语句将 App 组件作为模块的默认值导出。
App 组件是项目的主组件,可以替换它,也可以保留它。如果保留,就是修改代码中的导入语句,将其替换为导入的组件即可。

main.js 是程序入口 JavaScript 文件,该文件主要用于加载各种公共组件和项目需要用到的各种插件,并创建 Vue 的根实例。

main.js

import { createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')

在该文件中,使用 import 语句按需导入 createApp,这就是 Vue 3.0 引入的 Tree-shaking 支持。不同于在 HTML 文件中的引用方式,前面章节是通过 script 元素引入 Vue 的 js 文件。后面基于脚手架项目的开发,对模块的引入都会采用这种方式。
接下来使用 import 语句导入 App 组件,调用 createApp 方法创建应用程序实例,调用 mout 方法在 id 为 app 的 DOM 元素上装载应用程序实例的根组件。

index.html

<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title><%= htmlWebpackPlugin.options.title %></title>
  </head>
  <body>
    <noscript>
      <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

可以看到一个 id 属性为 app 的空的 div 元素,组件实例会动态挂载到该元素上。在这种方式下,就没有 v-cloak 指令的用武之地了。

13.5 编写一个 Hello 组件

在《二、准备开发与调试环境》章节,已经介绍并安装了 Visual Studio Code ,并对它进行了配置,以支持基于 Vue.js 的项目开发,现在启动 Visual Studio Code,选择【文件】——>【打开文件夹】选项,选中前面使用 Vue CLI 创建的脚手架项目所在的文件夹并打开。
在左边窗口中可以看到项目的目录接口,如下:
在这里插入图片描述

右击 components 目录,从弹出的快捷菜单中选择【新建文件】选项,输入 Hello.vue ,创建一个单文件组件。编写代码如下所示:

<template>
  <p>{{message}}</p>
</template>

<script>
export default {
  data(){
    return {
      message: 'Hello, Vue.js'
    }
  }
}
</script>

打开 App.vue 文件,将 HelloWorld 组件替换为 Hello 组件,修改的代码如下:

<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <Hello />
</template>

<script>
import Hello from './components/Hello'

export default {
  name: 'App',
  components: {
    Hello
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

导入语句中的 @ 符号表示 src 目录,该符号用于简化路径的访问。Hello 组件没有写扩展名,这没有问题,因为项目内置的 webpack 能够自动添加后缀“.vue”。
接下来,在 Visual Studio Code 的菜单栏中选择【终端】——>【新终端】选项,在弹出的终端窗口中输入命令 npm run serve,开始运行项目,如图:
在这里插入图片描述

打开浏览器,在地址栏输入 http://localhost:8080。显示效果如下:
在这里插入图片描述

13.6 package.json

这是一个 JSON 格式的 npm 配置文件,定义了项目所需要的各种模块,以及项目的配置信息(如名称、版本、许可证等元数据),在项目开发中经常会需要修改该文件的配置内容,所以这里单独对这个文件的内容说明一下。代码如下所示:

{
  "name": "helloworld",  //项目名称
  "version": "0.1.0",    //项目版本
  "private": true,       //是否私有项目
  "scripts": {           //值是一个对象,其中指定了项目声明周期各个环节需要执行的命令
    "serve": "vue-cli-service serve",   //执行 npm run serve 运行项目
    "build": "vue-cli-service build",   //执行 npm run build 构建项目
    "lint": "vue-cli-service lint"      //执行 npm run lint ,运行ESLint验证并格式化代码
  },
  "dependencies": {   //配置项目依赖的模块列表,key 是模块名称,value 是版本范围
    "core-js": "^3.6.5",
    "vue": "^3.0.0"
  },
  "devDependencies": {   //这里的依赖是用于开发环境的,不发布到生产环境
    "@vue/cli-plugin-babel": "~4.5.9",
    "@vue/cli-plugin-eslint": "~4.5.9",
    "@vue/cli-service": "~4.5.9",
    "@vue/compiler-sfc": "^3.0.0",
    "babel-eslint": "^10.1.0",
    "eslint": "^6.7.2",
    "eslint-plugin-vue": "^7.0.0"
  }
}

在使用 npm 安装依赖的模块时,可以根据模块是否需要在生产环境下使用而选择附加 -S(即–save,生产环境)或 -D (即 --save-dev,开发环境)参数。例如,项目中使用了界面 UI 组件库 element-ui,它肯定是要在生产环境中用到的,就可以执行下面的命令来安装。

npm install element-ui -S
# 等同于
npm install element-ui --save

安装后会在 dependencies 中写入依赖项,在项目打包发布时,dependencies 中写入的依赖项也会一起打包。
如果某个模块只是在开发环境中使用,则可以使用 -D 参数安装,在安装完成后将依赖项写入 DevDependencies,而在 DevDependencies 中的依赖项,在项目打包发布时并不会一起打包。
在发布代码时,项目下的 node_modules 文件夹都不会发布,那么在下载了别人的代码后,怎样安装依赖呢?这时可以在项目根路径下执行 npm install 命令,该命令会根据 package.json 文件下载所需依赖。

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

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

相关文章

Springboot社区疫情防控系统毕业设计,社区疫情防控管理系统设计与实现,毕设作品参考

功能清单 【后台管理员功能】 关于我们设置&#xff1a;设置学校简介、联系我们、加入我们、法律声明、学校详情 广告管理&#xff1a;设置小程序首页轮播图广告和链接 留言列表&#xff1a;所有用户留言信息列表&#xff0c;支持删除 会员列表&#xff1a;查看所有注册会员信…

【树莓派开发日记2 】树莓派安装Ubuntu22系统及启动黑屏等问题的踩坑记录

树莓派安装Ubuntu22系统及启动黑屏等问题的踩坑记录 在成功进行了组装后&#xff0c;就到了最为关键的部分了&#xff0c;进行树莓派的系统烧录。虽然树莓派有自己对应的系统&#xff0c;raspbian&#xff0c;但是绝大部分的开发者还是会选择Ubuntu系统作为主要的开发系统 Ub…

软件架构模式

如果有兴趣了解更多相关内容&#xff0c;欢迎来我的个人网站看看&#xff1a;瞳孔空间 创建软件系统基本结构的原则称为软件体系结构。软件结构由软件元素及其相互关系组成&#xff0c;这些元素起着蓝图的作用&#xff0c;规划了要执行的任务的模式。软件设计团队极大地依赖于…

【java】2-串行与并发分别将计数器从1累加到10亿

串行、并行、并发 串行是100个人的队伍从一条通道里顺序通行 并行是100个人从n(n>1)条通道分别通行 并发是只有一条通道&#xff0c;100个人排成n个队伍&#xff0c;每队依次派一个人从通道通行&#xff1b;或是有m条通道&#xff0c;100个人排成n个队伍&#xff0c;各个队…

[附源码]计算机毕业设计SpringBoot心理健康系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Spark3 AQE (Adaptive Query Execution) 一文搞懂 新特性

Spark 3 AQE (Adaptive Query Execution) 序 在搭建平台的过程中&#xff0c;我们使用 CDH 6.3.2 进行搭建&#xff0c;但 CDH 中阉割掉了 spark-sql 功能&#xff0c;所以我们外挂了 Spark 3&#xff0c;补充 spark-sql 功能&#xff0c;版本为 3.3。在使用的过程中&#xff…

【抓包工具】win 10 / win 11:WireShark 下载、安装、使用

目录 一、WireShark 下载 二、WireShark 安装 &#xff08;1&#xff09;双击运行安装程序 &#xff08;2&#xff09;Choose Components&#xff1a;选择组件 &#xff08;3&#xff09;Additional Tasks&#xff1a;附加任务 &#xff08;4&#xff09;Choose lnstall …

精品基于Java的社区团购系统SSM

《基于Java的社区团购系统》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 使用技术&#xff1a; 开发语言&#xff1a;Java 框架&#xff1a;ssm 技术&#xff1a;JSP JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xf…

【JUC】并发编程学习笔记(二)

JUC并发编程五、多线程锁5.1、synchronized实现同步的基础5.2、公平锁与非公平锁5.3、可重入锁5.4、死锁5.4.1、概念5.4.2、案例5.4.3、查看死锁六、Callable接口6.1、概述6.2、FutureTask概述和原理6.3、案例七、辅助类7.1、减少计数CountDownLatch7.2、循环棚栏CyclicBarrier…

[HITCON CTF 2022] Superprime,rev Meow_way,BabySSS格基约减法,Secret共模攻击模未知

目录 Superprime Reverse Meow_way BabySSS Secret Superprime 这个题5层RSA加密&#xff0c;很简单就是要带条件爆破5组p,q&#xff0c;一开始看错了&#xff0c;对为5组是一一对应的&#xff0c;回头发现后边两对不是对应的。 from Crypto.Util.number import getPrime,…

[附源码]Python计算机毕业设计Django旅游度假村管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

计算程序运行时间:计算或者不计算sleep()的两种情况perf_counter()和process_time()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 计算程序运行时间&#xff1a; 计算或者不计算sleep()的两种情况 perf_counter()和process_time() [太阳]选择题 对下面描述错误的选项为&#xff1f; import time print(使用perf_counter…

[附源码]计算机毕业设计作业管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【Matplotlib绘制图像大全】(二十四):Matplotlib为图像添加网格信息

前言 大家好,我是阿光。 本专栏整理了《Matplotlib绘制图像大全》,内包含了各种常见的绘图方法,以及Matplotlib各种内置函数的使用方法,帮助我们快速便捷的绘制出数据图像。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmMatp…

Mybatis练习(多条件查询)

Mybatis练习(多条件查询) 概述 功能实现的步骤&#xff1a; 编写接口方法 参数&#xff1a;所有查询条件结果&#xff1a;List 在映射配置文件中编写SQL语句 编写测试方法并执行 编写接口方法 在 BrandMapper 接口中定义多条件查询的方法。 而该功能有三个参数&#xf…

排序算法两万字总结(C语言实现)

文章目录前言一、排序的概念二、常见的排序算法排序实现的接口(1)插入排序基本思想1.直接插入排序1.1代码实现1.2直接插入排序特性总结2.希尔排序(缩小增量排序)2.1代码实现2.2希尔排序的特性总结(2)选择排序基本思想1.直接选择排序1.1代码实现1.2直接选择排序的特性总结2.堆排…

Sentinel服务保护

一&#xff0e;微服务雪崩问题&#xff1f; 微服务模块之间相互调用&#xff0c;因为调用(同步调用)链中的一个服务故障&#xff0c;引起整个链路都无法访问的情况 解决方案: 避免服务宕机&#xff1a;流量控制服务已经宕机&#xff1a;熔断降级Hystrix -----springcloud …

python中numpy创建数组

1. numpy数组的创建 1.1 使用array方法进行创建 数组是numpy中一种常见的格式&#xff0c;和列表类似&#xff0c;可以理解为矩阵&#xff0c;可以使用array方法进行获取 import numpy as np import random#使用numpy生成数组,得到ndarray的类型 t1 np.array([1,2,3,]) pri…

[附源码]计算机毕业设计springboot小太阳幼儿园学生管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

CMake 官方文档入门

对比官方文档练习 step1 基本起始点 一个基本的项目&#xff1a;从源文件构建可执行程序 文件目录如下 编写 CMakeLists.txt 如下&#xff1a; # cmake 要求的最小版本 cmake_minimum_required(VERSION 3.24) # 设置项目名称 可以设置版本号 project(Tutorial VERSION 1.0)…