菜鸟之路Day24一一前端工程化(一)

简介: 本文详细介绍了从零开始搭建Vue前端项目并部署到Nginx服务器的全流程。首先,通过配置Node.js和vue-cli环境,为项目创建打好基础。接着,利用vue-cli快速生成Vue项目,可通过命令行或图形化界面完成配置,如添加路由功能等。文章还解析了Vue项目的结构,重点讲解组件的概念及实现方式,并通过编写登录页面组件演示开发过程。最后,展示了如何修改端口、启动项目以及组件挂载的原理,帮助读者深入理解Vue工程化开发的核心思想。

菜鸟之路Day24一一前端工程化(一)

作者:blue

时间:2025.3.17

1.概述

文章内容大部分学习自黑马程序员BV1m84y1w7Tb

本文旨在梳理,从0到1,在仅有一个vscode的情况下,一步步完成一个使用Vue框架搭建的前端页面,并最终将其部署在Nginx服务器上

2.环境配置

要快速生成一个vue项目,我们可以利用vue-cli这个vue官方提供的脚手架,它用于快速生成vue的模板。vue-cli依赖于node.js环境,所以我们需要先配置好node.js环境,然后再安装vue-cli

2.1node.js环境配置

Node.js — 在任何地方运行 JavaScript (nodejs.org)

①首先进入node.js官网,下载node.js安装包

image-20250318191209832.png

②下载完成之后,双击下载好的文件,然后一路按next,中途可以自己修改安装路径(注意英文命名),然后点击install,最后Finish,这里就不再截图展示了,整个过程没有特别需要注意的地方

③验证NodeJS的环境变量,node.js在安装好后会自动配置环境变量,我们可以直接打开cmd,然后在cmd中输入下面指令。

node -v

出现对应的版本号,即为安装成功

④配置npm的全局安装路径

以管理员身份运行命令行

image-20250318192040102.png

在命令行中运行以下命令

npm config set prefix "NodeJS的安装目录"

⑤切换npm的淘宝镜像

npm config set registry https://registry.npmmirror.com

2.3vue-cli环境配置

①安装vue-cli,执行下面指令

npm install -g @vue/cli

②检查是否安装成功,在命令行中输入如下语句,出现对应版本号即为安装成功

vue --version

至此整个vue-cli环境就配置好了

3.创建Vue项目

两种方式:

方式一:命令行输入

vue create vue-project01(项目名称直接创建)

方式二:利用命令行打开vue的图形化界面,在界面中创建

vue ui

在此对图像化界面的方法进行演示

image-20250318194305426.png

命令行中输入,会直接在本地启动一个图形化界面

vue ui

image-20250318194629728.png

包管理器选择npm

image-20250318194730630.png

选择手动配置,然后下一步

image-20250318194914551.png

勾选Vue的router(路由)功能,后面会用到

image-20250318195023641.png

image-20250318195108084.png

image-20250318195136912.png

创建成功,之后这个图形化界面可以直接关闭

image-20250318195306100.png

4.vue项目解析

利用vscode打开我们刚刚创建的vue项目

在这里我欲解释一下何为组件,组件:组成网页部件,例如超链接,按钮,图片,表格,表单,分页条等等

image-20250313210117754.png

比方说,我们现在想修改这个Vue项目的端口,只要在vue.config.js下增加修改端口的代码即可

const {
    defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
   
  transpileDependencies: true,

  devServer:{
   
    //修改默认端口
    port:7000
  }

})

如何启动这个Vue项目呢?在项目的终端中输入如下指令

npm run serve

image-20250318201142921.png

Ctrl+单机跟进访问,可以看到成功启动了这个Vue项目
image-20250318201353916.png

所访问到的页面就是App.vue组件访问的页面,在其中简单修改文件代码,发现浏览器中的页面跟随变化,这就是Vue项目提供的"热部署"功能

image-20250318201902398.png

那么我们是如何看到这个App.vue这个组件所展示的内容的呢?

image-20250318202741440.png

实际上网页默认的首页是处于public文件夹下的index.html文件,在这个index.html文件中默认引入了main.js这个入口js文件。我们可以看到在index中,这里声明了一块id为app的DOM元素(div区域),这块div区域与main.js中的Vue实例,通过$mount方法挂载。

而在这个Vue示例中render: h => h(App):这是一个渲染函数,render 选项是 Vue 实例的一个重要选项,用于创建虚拟 DOM。hcreateElement 函数的缩写,它是 Vue 提供的一个用于创建虚拟节点的函数。h(App) 表示创建一个 App 组件的虚拟节点。

而App组件又从哪里来呢?其实这里所指的App就是,我们刚才所提到的App.vue,它是main.js通过'import App from './App.vue''引入到js文件中来的。

所以,我们不难发现其中的逻辑关系,我们要编写页面,其实就是编写组件,在哪里编写组件呢?当然实在views这个文件夹下编写,然后编写完成后import到main.js,然后创建对应的实例,最后与html页面中的DOM元素挂载,使之最终渲染到页面中。

接下来我们分析一下这个App.vue文件,也就是我们要编写的组件页面的构成

image-20250314194215631.png

template部分与style部分和原来我们写html页面的书写方式是差不多,这里我要着重解释一下这个script部分,我们在这个部分中看到,代码外面套了一层export default,因为我们需要将这里面的内容export(导出)一下,才能在外面的其他js文件中import我们的组件。

接下来我们就尝试在这个App.vue的文件中,将原来的代码删除,然后尝试编写一个登录界面,最终渲染到index.html中。

笔者前端水平差,对vue的使用不熟练,所以在一本书上学习了这个注册页面的编写,我认为应该要能做到能看懂每一行代码的作用即可。

代码摘抄自:《循序渐进Vue.js3 前端开发实战》一一张益珲

<template>
  <div class="container" id="app">
    <div class="container">
      <div class="subTitle">永远相信,美好的事情即将发生</div>
      <h1 class="title">创建你的账号</h1>
      <!-- 在使用 v-for 时,要为每个迭代元素添加唯一的 :key 绑定 -->
      <div v-for="(item,index) in fields" :key="item.title" class="inputContainer">
        <div class="field">
          {
  {item.title}}
          <span v-if="item.required" style="color: red;">*</span>
          <input class="input" :type="item.type" />
          <div class="tip" v-if="index==2">请确定密码长度需要大于6位</div>
        </div>
      </div>
      <div class="subContainer">
        <div class="setting">偏好设置</div>
        <input class="checkbox" type="checkbox" /><label class="lable">接收更新邮件</label>
      </div>
      <button class="btn">创建账号</button>
    </div>
  </div>
</template>

<script>
  export default {
    
    data() {
    
      return {
    
        fields: [
          {
    
            title: "用户名",
            required: true,
            type: "text"
          }, {
    
            title: "邮箱地址",
            required: true,
            type: "text"
          }, {
    
            title: "密码",
            required: true,
            type: "password"
          }
        ]
      }
    }
  }
</script>

<style>
  .container {
    
    margin: 0 auto;
    margin-top: 70px;
    text-align: center;
    width: 300px;
  }
  .subTitle {
    
    color:gray;
    font-size: 14px;
  }
  .title {
    
    font-size: 45px;
  }
  .input {
    
    width: 90%;
  }
  .inputContainer {
    
    text-align: left;
    margin-bottom: 20px;
  }
  .subContainer {
    
    text-align: left;
  }
  .field {
    
    font-size: 14px;
  }
  .input {
    
    border-radius: 6px;
    height: 25px;
    margin-top: 10px;
    border-color: silver;
    border-style: solid;
    background-color: cornsilk;
  }
  .tip{
    
    margin-top: 5px;
    font-size:12px;
    color: gray;
  }
  .setting {
    
    font-size: 9px;
    color:black;
  }
  .label {
    
    font-size: 12px;
    margin-left: 5px;
    height: 20px;
    vertical-align: middle;
  }
  .checkbox {
    
    height: 20px;
    vertical-align: middle;
  }
  .btn {
    
    border-radius: 10px;
    height: 40px;
    width: 300px;
    margin-top: 30px;
    background-color: deepskyblue;
    border-color: blue;
    color: white;
  }
</style>

编写完毕,我们再次启动Vue项目,访问,就可以看到如下界面,还是非常酷的,前端给学习者的正反馈真是非常大,种瓜得瓜,种豆得豆

image-20250319153425853.png

让我们在次回顾这个过程,在这个vue项目中,main.js中定义得根组件将被挂载到index.html中id为"app"的div标签上。

在mian.js文件中导入了一个名为App的组件作为根组件,可以看到项目工程中有一个名为App.vue的文件,这其实使用了Vue中单文件组件的定义方法,即将组件定义在单独文件中,以便于开发和维护。

目录
相关文章
|
SQL Oracle 关系型数据库
|
移动开发 编解码 前端开发
DingTalk「开发者说」酷应用沉浸式容器开发指南
在移动端是半屏效果,可以达到轻交互,不打断当前对话的效果,所以比较适合酷应用的沉浸式交互场景。沉浸容器(在桌面端被称之为侧边栏)在桌面端也需要遵循一些规范标准,如侧边栏标题、侧边栏关闭、自定义内容区、操作按钮、二级页面按钮等。
2133 0
DingTalk「开发者说」酷应用沉浸式容器开发指南
|
开发工具 git
git push报错:The current branch master has no upstream branch
git push报错:The current branch master has no upstream branch
41095 0
git push报错:The current branch master has no upstream branch
|
JavaScript 前端开发 应用服务中间件
菜鸟之路Day25一一前端工程化(二)
本文是《菜鸟之路Day25——前端工程化(二)》的详细记录,作者blue于2025年3月19日撰写。文章基于Vue框架,从零开始搭建前端页面并部署到Nginx服务器。主要内容包括:Element组件库快速入门、综合案例实现(布局设计、组件开发、Axios异步加载数据)、Vue路由配置及项目打包部署。通过实例演示了如何使用Element完成页面构建,配置路由实现页面切换,以及利用Nginx部署前端应用。适合初学者学习前端工程化的完整流程。
323 3
|
4月前
|
人工智能 Ubuntu 安全
零基础教程:OpenClaw阿里云上+VMware虚拟机+Windows本地部署,安全高效打造AI Agent 助理
OpenClaw作为2026年主流开源AI智能体框架,凭借“跨端指令执行+自动化任务处理”的核心能力,实现了手机端下达指令、设备端自动完成任务的高效体验。但作为具备文件读写、命令执行、网络访问权限的智能工具,直接部署在主力设备存在数据安全风险——误删文件、访问敏感数据等问题可能造成不可逆损失。
6757 1
|
12月前
|
机器学习/深度学习 人工智能 数据可视化
基于YOLOv8的共享单车/自行车随意停放识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
本项目基于YOLOv8模型与PyQt5界面,实现共享单车/自行车乱停放的智能检测。支持图片、视频、文件夹及摄像头输入,提供实时检测与结果保存功能。配套完整源码、训练数据集与权重文件,开箱即用,适合城市管理、交通执法等场景。项目包含详细训练教程与部署指南,助力AI学习者快速上手,推动智慧城市应用开发。
基于YOLOv8的共享单车/自行车随意停放识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
|
6月前
|
Java 应用服务中间件 Maven
Spring Boot开发环境搭建和项目启动
本节讲解JDK配置、Spring Boot工程构建与项目启动,涵盖IDEA和官方方式创建项目、Maven及编码设置,分析项目结构,并通过简单Controller验证启动成功,快速入门Spring Boot开发。
|
人工智能 安全 Java
智慧工地源码,Java语言开发,微服务架构,支持分布式和集群部署,多端覆盖
智慧工地是“互联网+建筑工地”的创新模式,基于物联网、移动互联网、BIM、大数据、人工智能等技术,实现对施工现场人员、设备、材料、安全等环节的智能化管理。其解决方案涵盖数据大屏、移动APP和PC管理端,采用高性能Java微服务架构,支持分布式与集群部署,结合Redis、消息队列等技术确保系统稳定高效。通过大数据驱动决策、物联网实时监测预警及AI智能视频监控,消除数据孤岛,提升项目可控性与安全性。智慧工地提供专家级远程管理服务,助力施工质量和安全管理升级,同时依托可扩展平台、多端应用和丰富设备接口,满足多样化需求,推动建筑行业数字化转型。
442 5
|
6月前
|
NoSQL Java 数据库连接
SpringBoot框架
SpringBoot简化Spring开发,核心功能包括starter起步依赖、自动配置及内嵌服务器支持。通过@SpringBootApplication实现自动化配置,支持多种配置方式,优先级为:命令行参数 &gt; 系统属性 &gt; properties &gt; yml/yaml。可自定义starter实现模块化集成。
|
监控 NoSQL Java
若依RuoYi项目环境搭建教程(RuoYi-Vue + RuoYi-Vue3版本)
若依(RuoYi)是一款基于Spring Boot和Vue.js的开源Java快速开发脚手架,支持OAuth2、JWT鉴权,集成多种安全框架和持久化框架。它提供了系统管理、监控管理、任务调度、代码生成等常用功能模块,适合中小型公司快速搭建Web应用。本文主要介绍若依框架的特点、版本发展、优缺点及项目部署步骤,帮助开发者快速上手并部署若依项目。
21724 3
若依RuoYi项目环境搭建教程(RuoYi-Vue + RuoYi-Vue3版本)

热门文章

最新文章