个人的中小型项目前端架构浅谈

个人的中小型项目前端架构浅谈前端架构浅谈 0 前注鉴于作者本人的能力有限 非常有限 并且依然在学习中 因此本文的高度和深度必然有所欠缺 欢迎 并且非常欢迎 大家来批评指正 如果能详细的说明问题在哪里 如何解决和改正 那么就太感谢了 我最喜欢听有理有据的批评了 本人 邮箱 com 期待你的交流 1 为什么要有一个好的架构首先明确一点 架构是为需求服务的 前端架构存在的目的 就我

0、前注

鉴于作者本人的能力有限(非常有限),并且依然在学习中,因此本文的高度和深度必然有所欠缺。

欢迎(并且非常欢迎)大家来批评指正,如果能详细的说明问题在哪里,如何解决和改正,那么就太感谢了!!!

我最喜欢听有理有据的批评了!!

本人:,邮箱:@.com,期待你的交流。


1、为什么要有一个好的架构

首先明确一点,架构是为需求服务的。

前端架构存在的目的,就我个人理解来说,有以下几点:

附图,以日历组件为例,是否考虑到扩展性的结果

未考虑到扩展性
未考虑到扩展性

考虑到扩展性:
考虑到扩展性







2、我如何设计架构

我不敢说自己的架构是好的架构(显然不是啦),只能分享自己最近做的一个项目,它的架构的如何做的。

首先,确定需求:

其次开始决定:


第三,划分功能。

首先有一个根html,用户需要通过访问它来加载我们的js逻辑,因此js逻辑的代码被写在main.js之中。

在main.js之下,我们的前端代码可以被划分为三部分:

  1. 组件树;
  2. 功能模块;
  3. 各种资源;

功能划分好之后,相同功能的放在同一个文件夹下,命名风格应该类似。


第四、细化功能模块

功能、组件树以及资源,我们已经明确了有哪些东西,那么接下来,我们要明确这些东西该如何以文件的形式来划分。

如下图:

这里写图片描述

1、项目构建相关

因为要使用vue.js,也要使用es6语法,因此babel是必须的;
又因为要自动化混淆打包,因此webpack也是必须的;
最后因为要方便多人协同,因此npm的package.json的配置,方便不同人可以快速自动化通过npm install来安装依赖,也是必须的;


2、CDN相关

而又因为我们要采用外部字体(需求要求引入非常见字体),因此CDN加速是必须的,该字体文件放在html中来配置引用即可;

3、配置和插件
4、需要的npm依赖

当然,要使用vue肯定要引入vue.js
类似的还有vue-router.js和各种兼容性polyfill和全局插件;

5、抽离出的功能模块
6、总结

而这些划分,都体现在上图之中。这就是src目录下的功能模块文件,我们需要的绝大多数功能都可以包括在其中,我们只需要按照实际开发中的需要,将对应的功能写入在这些文件中并引用即可;

第五、组件树

之前谈了功能模块的划分,接下来是组件树;

因此是中小型页面,因此组件树的层级无需太深,但该抽离出来的依然还是要抽离,尽量保证抽离出来的组件解耦以及一个页面组件的逻辑不要太多;

如下图:

组件树

0、根组件
1、弹窗dialog和弹窗tips

因为弹窗dialog和弹窗提示tips可能同时存在,因此将其划分为2个组件,方便管理;

2、未登录页面和登录页面

因为页面存在登录和未登录状态,而为了加载速度考虑,当未登录时,不加载已登录页面,因此需要划分出来,并进行异步加载处理;

3、未登录页面
4、已登录页面

已登录页面有较多页面,采用默认加载初始页,然后异步加载其他页面(访问时);

5、弹窗dialog
6、国际化管理

和页面高耦合,负责加载对应的国际化资源,并进行切换管理;

7、页面组件

可能有子页面和复用的组件,按照正常方式引用即可。

8、样式文件

可以独立写为.css文件,但因为我的公共样式文件比较少,因此我还是将其放在一个.vue文件中,并在App.vue里来引用

8、页面组件起名

基础页面,如登录和未登录页面,公共组件(并且是header和footer这种),以base-开头;
弹窗统一以box-为开头;
可复用的组件以extend-开头;
引入的外部组件以import-开头;
普通页面组件以page-开头(这些页面往往是一个独立的页面,并且挂靠在登录或未登录页面下);
注册弹窗因为逻辑比较复杂,并且同类较多,因此以register-为开头;




通过以文件名来划分,不同的页面组件之间的区分可以说是一目了然,同时也方便管理;


3、还没有谈到的内容

想了想,目前还没有谈到的内容有以下几点:

其他:

听说写原创内容可以获得打赏,我想试试~

觉得我文章不错的,欢迎支付宝打赏一发~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/221459.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午6:03
下一篇 2026年3月17日 下午6:03


相关推荐

  • sikuli python java_自动化测试之sikuli调研

    sikuli python java_自动化测试之sikuli调研调研结果Sikuli可用于web和app的自动化测试中,操作简单,代码容易,但截图过程太过繁琐,所需要的图片内存占用量大,且sikuli的图片识别度较低,需对所要操作的图片进行精准截图。什么是SikuliMIT的研究人员设计了一种新颖的图形脚本语言Sikuli,计算机用户只须有最基本的编程技能(比如会写print”helloworld”),他不需要去写出一行行代码,而是用屏幕截图的方式,用截出来…

    2025年6月9日
    5
  • 理解 Python 的 for 循环

    理解 Python 的 for 循环在本篇博客中 我们将讨论 Python 中 for 循环的原理 我们将从一组基本例子和它的语法开始 还将讨论与 for 循环关联的 else 代码块的用处 然后我们将介绍迭代对象 迭代器和迭代器协议 还会学习如何创建自己的迭代对象和迭代器 之后 我们将讨论如何使用迭代对象和迭代器实现 for 循环 以及利用 while 循环通过迭代器协议实现 for 循环逻辑 最后 我们将反编译一

    2026年3月26日
    2
  • linux上安装使用mysql(linux登录mysql数据库)

    首先明确大体步骤为3步1.下载数据库的压缩包或二进制包,可以在linux用wget或yum下载,也可以外网下载再传到linux2.配置数据库的环境和路径3.登陆数据库修改一.我这里是用wgethttps://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz下…

    2022年4月13日
    44
  • 软件测试基础知识 + 面试理论(超详细)「建议收藏」

    软件测试基础知识 + 面试理论(超详细)「建议收藏」文章目录一、什么是软件?二、什么是软件测试?三、软件测试工程师的工作内容四、常见的软件生命周期模型五、软件开发的几个阶段六、软件bug的五个要素七、软件测试的分类八、什么是测试用例九、测试用例几大要素【面试理论知识】1、你的测试职业发展是什么?2、你认为测试人员需要具备哪些素质3、你为什么能够做测试这一行4、测试的目的是什么?5、测试分为哪几个阶段?6、单元测试的测试对象、目的、测试依据、测试方法?7、怎样看待加班问题8、结合你以前的学习和工作经验,你认为如何做好测试。9、你为什么选择软件测试行业10、根据

    2022年6月29日
    25
  • java迭代创建文件,并写入内容

    java迭代创建文件,并写入内容java迭代创建文件,并写入内容

    2022年4月24日
    52
  • AMD CPU安装Intel HAXM

    AMD CPU安装Intel HAXM1.2.找到安装目录(我的安装目录:F:\Android\SDK\extras\google\Android_Emulator_Hypervisor_Driver)下的这个文件:silent_install,右击该文件选择“以管理员运行”,即可。…

    2022年6月28日
    86

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号