搭建项目前端系统基础架构

Vue是什么

Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。目前市面上有很多基于Vue重新封装的各种前端UI框架,集成比较容易,如Element,iView等,另外它能让团队书写用js更容易并且简化了js。上手Vue.js是相当容易的。它的源码有着很高的可读性,如果你需要仅用他的文档便可入门,你不必使用任何额外的库。如果需要可以和jQuery协同工作。他有许多的插件,但并非必须。通过几个方面说一下Vue的优势:

  • 渲染性能:

通过虚拟dom减少对真实dom的操作,Vue实现的权重要轻的多。所以渲染用户界面的时候,Vue的速度会更快一点。Vue几乎不需要手工优化,

  • 更新性能:

当一个组件的状态发生变化时,组件的依赖关系在它的渲染期间被自动跟踪,因此系统准确地知道哪些组件实际上需要重新渲染。这就意味着在更新方面,Vue也是快的。

  • 规模方面:

Vue 的路由库和状态管理库都是由官方维护支持且与核心库同步更新的

  • 文档方面:

详尽的中文文档

  • 结构方面:

Vue单文件由模版、脚本、样式,层次分明,长得像 HTML

总体来说轻量级框架、简单易学、双向数据绑定、组件化、视图、数据和结构的分离、虚拟DOM、运行速度快。这就是选择这个框架的理由。

安装Vue环境

  • 安装Node.js会自动安装好node以及包管理工具npm(注意:安装Node建议使用下图中推荐的版本14.16.1)
  • Node.js官方网址为:Node.js — Download

当前环境中安装Node.js 14.16.1版本,如想使用其他版本或最新版本请自行下载安装,但不建议更换node或npm版本,可能会发生版本兼容问题。

使用VSCode创建基于Vue的项目

  • 全局安装 cnpm
[root@client ~]# npm install -g cnpm@6.2.0 -registry=https://registry.npm.taobao.org

  • 在控制台命令窗口中依次执行如下命令,创建Vue项目:

1) 全局安装 vue-cli

[root@client ~]# cnpm install -g @vue/cli

2) 创建一个基于Vue 2的新项目(注意:由于vue create命令在创建项目时对命名为特殊要求,所以这里创建的项目名为“kongguan_web”,后期如果对项目名称为特殊要求,可以在项目创建完成后手动修改即可。)

[root@client ~]# vue create kongguan_web

使用 方向键 选择“Manually select features”,然后回车进入下一步

根据自己的需要选择所需要安装的功能,使用 空格键 选择或者取消选择,然后回车进入下一步

使用 方向键 选择Vue的版本为 2.x ,然后回车进入下一步

然后输入“Y”,并回车

使用 方向键 选择“Sass/SCSS (with dart - sass)”并回车

使用 方向键 选择“In package.json”并回车

回车后,项目开始创建,等待完成即可

3)进入项目目录

[root@client ~]# cd kongguan_web/

4)使用npm安装依赖(注意:npm默认使用国外镜像,可能会出现连接失败的问题,如出现连接失败可将npm命令切换成cnpm命令 例如:cnpm install

[root@client kongguan_web]# cnpm install

  • 使用VSCode打开Vue项目(当前环境已经安装,如果没有安装,请从https://update.code.visualstudio.com/1.52.1/linux-rpm-x64/stable下载自行安装)

1)在桌面双击“Visual Studio Code”图标,打开VSCode

2)点击“File”菜单,选择“Open Folder”,找到并打开创建的kongguan_web

3)在项目中打开终端命令行窗口

4)在创建好的项目下运行(注意:npm默认使用国外镜像,可能会出现连接失败的问题,如出现连接失败可将npm命令切换成cnpm命令

[root@client kongguan_web]# npm run serve

5)Vue项目已经启动,打开浏览器访问8080端口即可:

至此,我们已经可以开发Vue的项目了,接下来我们需要先了解一个系统架构目录设计,然后再根据功能需求完成开发工作即可。

系统架构目录讲解

  • 民航系统前端Vue项目的目录如下:

目录/文件说明
build项目构建(webpack)相关代码
config配置目录,包括端口号等。
node_modulesnpm 加载的项目依赖模块
src

这里是我们要开发的目录,基本上要做的事情都在这个目录里。里面包含了几个目录及文件:

  • assets: 放置一些图片,如logo等。
  • components: 将各个模块的页面都写在这个文件夹下,分开模块和功能。
  • App.vue: 项目入口文件,我们也可以直接将组件写这里,而不使用 components 目录。
  • main.js: 项目的核心文件。
src/api

根据各个功能模块,封装了其请求后台的方法;

src/assets

图片存放地址

src/components

文件中使用的组件

src/router

项目路由器设置

src/store

菜单、token等设置

src/utils

存放公用设置

src/views

页面主要编写目录

static静态资源目录,如图片、字体等。
favicon.ico系统iCon
index.html首页入口文件,你可以添加一些 meta 信息或者系统名等。
package.json项目包配置文件。
README.txt项目的说明文档
  • 具体介绍一下src下业务模块的目录结构:

目录/文件说明
src/api

根据各个功能模块,封装了其请求后台的方法

src/assets

存放图片等静态资源文件

src/components

项目中使用的组件,也包含所有的模块功能,通过模块将页面的功能分开,例如:login、home等

echart/AirPortCount/目录:各空点统计报表

echart/SectorCallStaturation/目录:“各扇区通话饱和度”ECharts报表

echart/SectorFlightInfo/目录:“扇区架次数动态展示”ECharts报表

echart/YearWarningSummary/目录:年度警告摘要报表

AirLine.vue文件:显示“动态航线图”组件

Delay.vue文件:显示“指挥航空公司架次月延误率占比”组件

Pager.vue文件:分页组件

Section.vue文件:显示“扇区航班数”组件

WarnStatistice.vue文件:显示“年度告警区域统计”组件

src/routerVue项目的路由器设置
index.js 文件:Vue页面请求的路由设置、导航守卫(例如:判断用户是否登陆)等
src/store

菜单、token等设置

modules/menu.js 文件:菜单设置

index.js 文件:Token设置

src/utils

存放通用的工具和公共检验工具等

src/views

页面主要编写目录

/Home/Index.vue文件:前端的“首页”

/Home/map.vue文件:前端的“航班实时监控”页

/Layout/Header.vue文件:

/Layout/Layout.vue文件:

/Login/Login.vue文件:

/redirect/index.vue文件:

src/main.js

Vue系统入口,主方法:

  • The Vue build version to load with the `import` command
  • (runtime-only or standalone) has been set in webpack.base.conf with an alias
  • 在src/main.js中可以实现:将自定义组件导入Vue、定义响应拦截器、定义请求拦截器、拦截重复请求等操作

5、创建项目前端系统基础架构

  • 按照上面的目录结构,先创建一部分空目录和空文件,为后续的前端开发提供一个基本环境,基本结构如下:

  • 删除项目的node_modules目录和package-lock.json文件

  • 修改vue.config.js文件,增加"lintOnSave:false",目的是忽略命名不规范检查,内容如下:
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({transpileDependencies: true,lintOnSave: false
})
  • 修改 package.json文件,配置项目的依赖包,内容如下:
{"name": "kongguan_web","version": "0.1.0","private": true,"scripts": {"dev": "vue-cli-service serve --open","serve": "vue-cli-service serve","build": "vue-cli-service build","lint": "vue-cli-service lint"},"dependencies": {"core-js": "^3.8.3","vue": "^2.6.14","axios": "^0.19.2","echarts": "^4.9.0","element-ui": "^2.13.2","moment": "^2.29.1","node-sass": "^4.14.1","sass-loader": "^7.3.1","v-distpicker": "^1.2.2","vee-validate": "^2.2.13","vue-baidu-map": "^0.21.22","vue-multiselect": "^2.1.6","vue-router": "^3.0.6","vue2-datepicker": "^2.12.0","vuex": "^3.1.1","xlsx": "^0.15.1"},"devDependencies": {"@babel/core": "^7.12.16","@babel/eslint-parser": "^7.12.16","@vue/cli-plugin-babel": "~5.0.0","@vue/cli-plugin-eslint": "~5.0.0","@vue/cli-service": "~5.0.0","eslint": "^7.32.0","eslint-plugin-vue": "^8.0.3","vue-template-compiler": "^2.6.14","@vue/eslint-config-standard": "^4.0.0","babel-eslint": "^10.0.1","mockjs": "^1.0.1-beta3","node-sass": "^4.14.1","sass-loader": "^7.3.1"},"eslintConfig": {"root": true,"env": {"node": true},"extends": ["plugin:vue/essential","eslint:recommended"],"parserOptions": {"parser": "@babel/eslint-parser"},"rules": {"no-unused-vars":"off"}},"browserslist": ["> 1%","last 2 versions","not dead"]
}
  • 强制清理 npm 缓存
[root@client kongguan_web]# npm cache clean --force
  • 为当前项目添加依赖包,使用npm install 或 npm i 命令
[root@client kongguan_web]# npm install --unsafe-perm=true --allow-root

注意:

1)如果以root身份运行npm install命令安装依赖包时,--unsfe-perm参数的默认值为false,以非root身份运行时,--unsfe-perm参数的默认值为true。

2)如果--unsfe-perm的值设置为true可在运行包脚本时抑制UID/GID切换。如果--unsfe-perm的值为false,则以非root用户身份安装将失败。

3)所以,如果以root身份运行npm install命令安装依赖包时,建议使用【npm install --unsafe-perm=true --allow-root】命令。

执行npm install命令后,可以看到如上图所示的结果,实际每个人的环境显示的结果可能略有不同。

  • 运行kongguan_web项目
[root@client kongguan_web]# npm run serve

可以看到项目正常运行。

注意:如果前面使用【 npm run serve】运行kongguan_web项目时报以下错误:

产生原因:文件监视程序的系统产生了限制,达到了默认的上限,需要增加限额。查看限额可以使用如下命令:

[root@client kongguan_web]# cat /proc/sys/fs/inotify/max_user_watches

解决办法:可以临时增加限额

[root@client kongguan_web]# sudo sysctl fs.inotify.max_user_watches=524288 
[root@client kongguan_web]# sudo sysctl -p

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL死锁案例分析及避免办法

1. 什么是死锁2. 举个栗子:2.1. 栗子一:2.1.1 代码栗子:2.1.2 存储引擎状态分析2.1.2.1 第一部分:2.1.2.2 第二部分:2.1.2.3 第三部分: 2.1.3 解决方式2.1.3.1 注意资源的获取顺序2.1.3.2 大事务拆小 2.2. …

【LeetCode】84. 柱状图中最大的矩形(困难)——代码随想录算法训练营Day60

题目链接:84. 柱状图中最大的矩形 题目描述 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: 输入:heights [2,1,5,…

暗光增强——IAT网络推理测试(详细图文教程)

IAT模型由两个独立的分支组成,局部分支用于像素调整,并输出两个用于加法和乘法的特征图。全局分支用于全局调整并输出颜色矩阵和gamma值,全局分支受DETR启发,网络通过动态查询学习的方式更新颜色矩阵和gamma值。整个模型只有超过9…

Maven简单入门

Maven 一:什么是Maven: Maven是一个项目管理工具,用于构建和管理Java项目。它可以帮助开发人员自动化构建过程,管理项目依赖关系,并协助项目的发布和部署。通过Maven,开发人员可以定义项目的结构、依赖关…

为什么选择VR全景进行企业宣传,如何将VR全景运用在企业展示

引言: 随着科技的不断发展,VR全景技术逐渐成为企业宣传的热门选择。那么,为什么越来越多的企业选择使用VR全景技术进行宣传呢? 一.为什么选择VR全景技术进行企业宣传 1. 提升用户体验 VR全景技术可以为用户营造身临…

基于udp协议的网络通信(windows客户端版+简易聊天室版),重定向到终端

目录 和windows通信 引入 思路 WSADATA 代码 运行情况 简单的聊天室 思路 重定向 代码 terminal.hpp -- 重定向函数 服务端 客户端 运行情况 和windows通信 引入 linux和windows都需要联网,虽然他们系统设计不同,但网络部分一定是相同的,所以套接字也是一样的 这…

【学习记录】调试千寻服务+DTU+导远RTK过程的记录

最近调试车载定位的时候,遇到了一些问题,千寻服务已经正确配置到RTK里面了,但是导远的定位设备一直显示RTK浮动解,通过千寻服务后台查看状态,长时间显示不合法的GGA值。 首先,通过四处查资料,千…

一种基于宏和serde_json实现的rust web中统一返回类

本人rust萌新,写web碰到了这个,基于ChatGPT和文心一言学了宏,强行把这玩意实现出来了,做个学习记录,如果有更好的方法,勿喷。 先看效果,注意不支持嵌套,且kv映射要用>(因为它这个…

C语言实战——扫雷游戏

目录 1. 扫雷游戏分析和设计2.扫雷游戏的代码实现 1. 扫雷游戏分析和设计 1.1扫雷游戏的功能说明 使用控制台实现经典的扫雷游戏游戏可以通过菜单实现继续玩或者退出游戏扫雷的棋盘是9*9的格子默认随机布置10个雷可以排查雷 如果位置不是雷,就显示周围有几个雷 如果…

leetcode代码记录(有效的括号

目录 1. 题目:2. 我的代码:小结: 1. 题目: 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足&…

C语言——详解字符函数和字符串函数(一)

Hi,铁子们好呀!今天博主来给大家更一篇C语言的字符函数和字符串函数~ 具体讲的内容如下: 文章目录 🎆1.字符分类函数💯💯⏩1.1 什么是字符分类函数的?💯💯⏩1.2 字符函数的类型有哪…

2024.3.14 C++

思维导图 封装类 用其成员函数实现&#xff08;对该类的&#xff09;数学运算符的重载&#xff08;加法&#xff09;&#xff0c;并封装一个全局函数实现&#xff08;对该类的&#xff09;数学运算符的重载&#xff08;减法&#xff09;。 #include <iostream>using nam…